Subject: Re: [patch 4/4] mISDN: misc timerdev fixes

From: Christoph Hellwig <[email-masked]>
Date: Tue, 23 Sep 2008 07:45:34 -0400

On Tue, Sep 23, 2008 at 04:30:05AM -0700, Andrew Morton wrote:
> so.. this?

Much better.

> --- 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?