Re: [patch 4/4] mISDN: misc timerdev fixes
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-09-23 17:32:40
On Tue, 23 Sep 2008 14:00:30 +0200 Karsten Keil [off-list ref] wrote:
On Tue, Sep 23, 2008 at 07:45:34AM -0400, Christoph Hellwig wrote:quoted
On Tue, Sep 23, 2008 at 04:30:05AM -0700, Andrew Morton wrote:quoted
so.. this?Much better.quoted
--- a/drivers/isdn/mISDN/timerdev.c~misdn-misc-timerdev-fixes-fix +++ a/drivers/isdn/mISDN/timerdev.c@@ -61,7 +61,7 @@ mISDN_open(struct inode *ino, struct fil init_waitqueue_head(&dev->wait); filep->private_data = dev; __module_get(THIS_MODULE); - return 0; + return nonseekable_open(ino, filep);But this also shows that mISDN is kinda stuck in a different century. Doing __module_get(THIS_MODULE) at the end of ->open is utterly racy, it really needs to set a owner field in file_operations and rip this cruft out. Btw, can anyone explain WTF this timerdev module is doing? It's not using any functionality from the rest of mISDN, it's not exporting any functionality to it either but just provides a really awkward way to expose dumb timers to userspace. What does it provide that the normal timer syscalls can't provide?This version only makes the programing of upper ISDN layers easier, you only need to watch /dev/mISDNtimer together with the sockets in one select call.
sys_timerfd_create() can do this?
The next version will have a option to synchronise the timer with the ISDN hardware clock which would avoid additional jitter if you need to bridge channels in software.
hrm. If that's really really useful and actually works then I guess it might then be justifiable.