Re: [PATCH] misc: always assign miscdevice to file->private_data in open()
From: Greg KH
Date: Wed Oct 08 2014 - 09:44:13 EST
On Wed, Oct 08, 2014 at 10:47:54AM +0200, Martin Kepplinger wrote:
> As of now, a miscdevice driver has to provide an implementation of
> the open() file operation if it wants to have misc_open() assign a
> pointer to struct miscdevice to file->private_data for other file
> operations to use (given the user calls open()).
> This leads to situations where a miscdevice driver that doesn't need
> internal operations during open() has to implement open() that only
> returns immediately, in order to use the data in private_data in other
Yeah, that's messy, do we have any in-kernel misc drivers that do this?
> This change provides consistent behaviour for miscdevice developers by
> always providing the pointer in private_data. A driver's open() fop would,
> of course, just overwrite it, when using private_data itself.
> Signed-off-by: Martin Kepplinger <martink@xxxxxxxxx>
> This is really only a question: Do I understand this correctly, and,
> could this change then hurt any existing driver?
I don't know, take a look at the existing ones and see please.
> As a driver developer it took me a while to figure out what happens here,
> and in my situation it would have been nice to just have this feature as
> part of the miscdevice API. Possibly documented somewhere?
Patches always accepted for documentation :)
> misc_open() is called in any case, on open(). As long as miscdevice drivers
> don't explicitly rely on private_data being NULL exactly IF they don't
> implement an open() fop (which I wouldn't imagine), this would make things
> even more convenient.
I agree, but it would be great if you can audit the existing misc
drivers to ensure we don't break anything with this change. Can you do
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/