Re: [patch 4/4] mISDN: misc timerdev fixes
From: Karsten Keil <hidden>
Date: 2008-09-23 12:00:32
On Tue, Sep 23, 2008 at 07:45:34AM -0400, Christoph Hellwig wrote:
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. 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. -- Karsten Keil SuSE Labs ISDN and VOIP development SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 16746 (AG Nuernberg)