* [PATCH] Store the relevant miscdevice in file->private_data in misc_open() @ 2008-11-13 4:49 Michael Ellerman 2008-11-13 17:31 ` Greg KH 0 siblings, 1 reply; 9+ messages in thread From: Michael Ellerman @ 2008-11-13 4:49 UTC (permalink / raw) To: linux-kernel; +Cc: Andrew Morton, Greg Kroah-Hartman, viro Currently it's not easy to share file_operations between multiple instances of a miscdevice. In order to do this, the device code needs to store a list of all it's miscdevice instances, and when fops->open() is called, search the list and find the right device based on the minor number. However the generic miscdevice code already has a list of miscdevices, and uses this to find the right device in misc_open(). If misc_open() would store the miscdevice it found in file->private_data, then the device code wouldn't need to worry about storing it's own separate list and searching that as well. The rest of the miscdevice code does not use file->private_data, so the device code is still free to use file->private_data for something else if it wants to. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> --- I'm not all that across VFS or driver core stuff, but this looks safe to me, lots of other devices use file->private_data and this should be no different AFAICT. drivers/char/misc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/char/misc.c b/drivers/char/misc.c index a5e0db9..bb91d68 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -147,11 +147,13 @@ static int misc_open(struct inode * inode, struct file * file) err = 0; old_fops = file->f_op; file->f_op = new_fops; + file->private_data = c; if (file->f_op->open) { err=file->f_op->open(inode,file); if (err) { fops_put(file->f_op); file->f_op = fops_get(old_fops); + file->private_data = NULL; } } fops_put(old_fops); -- 1.5.5 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-13 4:49 [PATCH] Store the relevant miscdevice in file->private_data in misc_open() Michael Ellerman @ 2008-11-13 17:31 ` Greg KH 2008-11-13 23:54 ` Michael Ellerman 0 siblings, 1 reply; 9+ messages in thread From: Greg KH @ 2008-11-13 17:31 UTC (permalink / raw) To: Michael Ellerman; +Cc: linux-kernel, Andrew Morton, viro On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > Currently it's not easy to share file_operations between multiple > instances of a miscdevice. In order to do this, the device code needs to > store a list of all it's miscdevice instances, and when fops->open() is > called, search the list and find the right device based on the minor > number. > > However the generic miscdevice code already has a list of miscdevices, > and uses this to find the right device in misc_open(). If misc_open() > would store the miscdevice it found in file->private_data, then the > device code wouldn't need to worry about storing it's own separate list > and searching that as well. > > The rest of the miscdevice code does not use file->private_data, so the > device code is still free to use file->private_data for something else > if it wants to. > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Do you have a follow-on patch for some misc device using code that would take advantage of this change? thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-13 17:31 ` Greg KH @ 2008-11-13 23:54 ` Michael Ellerman 2008-11-14 0:18 ` Greg KH 0 siblings, 1 reply; 9+ messages in thread From: Michael Ellerman @ 2008-11-13 23:54 UTC (permalink / raw) To: Greg KH; +Cc: linux-kernel, Andrew Morton, viro [-- Attachment #1: Type: text/plain, Size: 1446 bytes --] On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > > Currently it's not easy to share file_operations between multiple > > instances of a miscdevice. In order to do this, the device code needs to > > store a list of all it's miscdevice instances, and when fops->open() is > > called, search the list and find the right device based on the minor > > number. > > > > However the generic miscdevice code already has a list of miscdevices, > > and uses this to find the right device in misc_open(). If misc_open() > > would store the miscdevice it found in file->private_data, then the > > device code wouldn't need to worry about storing it's own separate list > > and searching that as well. > > > > The rest of the miscdevice code does not use file->private_data, so the > > device code is still free to use file->private_data for something else > > if it wants to. > > > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > > Do you have a follow-on patch for some misc device using code that would > take advantage of this change? Ah, good point. I do, but not for upstream :/ cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-13 23:54 ` Michael Ellerman @ 2008-11-14 0:18 ` Greg KH 2008-11-14 2:50 ` Michael Ellerman 0 siblings, 1 reply; 9+ messages in thread From: Greg KH @ 2008-11-14 0:18 UTC (permalink / raw) To: Michael Ellerman; +Cc: linux-kernel, Andrew Morton, viro On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: > On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > > On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > > > Currently it's not easy to share file_operations between multiple > > > instances of a miscdevice. In order to do this, the device code needs to > > > store a list of all it's miscdevice instances, and when fops->open() is > > > called, search the list and find the right device based on the minor > > > number. > > > > > > However the generic miscdevice code already has a list of miscdevices, > > > and uses this to find the right device in misc_open(). If misc_open() > > > would store the miscdevice it found in file->private_data, then the > > > device code wouldn't need to worry about storing it's own separate list > > > and searching that as well. > > > > > > The rest of the miscdevice code does not use file->private_data, so the > > > device code is still free to use file->private_data for something else > > > if it wants to. > > > > > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > > > > Do you have a follow-on patch for some misc device using code that would > > take advantage of this change? > > Ah, good point. I do, but not for upstream :/ Hm, then I have to ask why should we take this change? And why would the driver not be availble for upstream to take? thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-14 0:18 ` Greg KH @ 2008-11-14 2:50 ` Michael Ellerman 2008-11-14 3:23 ` Greg KH 0 siblings, 1 reply; 9+ messages in thread From: Michael Ellerman @ 2008-11-14 2:50 UTC (permalink / raw) To: Greg KH; +Cc: linux-kernel, Andrew Morton, viro [-- Attachment #1: Type: text/plain, Size: 2125 bytes --] On Thu, 2008-11-13 at 16:18 -0800, Greg KH wrote: > On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: > > On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > > > On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > > > > Currently it's not easy to share file_operations between multiple > > > > instances of a miscdevice. In order to do this, the device code needs to > > > > store a list of all it's miscdevice instances, and when fops->open() is > > > > called, search the list and find the right device based on the minor > > > > number. > > > > > > > > However the generic miscdevice code already has a list of miscdevices, > > > > and uses this to find the right device in misc_open(). If misc_open() > > > > would store the miscdevice it found in file->private_data, then the > > > > device code wouldn't need to worry about storing it's own separate list > > > > and searching that as well. > > > > > > > > The rest of the miscdevice code does not use file->private_data, so the > > > > device code is still free to use file->private_data for something else > > > > if it wants to. > > > > > > > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > > > > > > Do you have a follow-on patch for some misc device using code that would > > > take advantage of this change? > > > > Ah, good point. I do, but not for upstream :/ > > Hm, then I have to ask why should we take this change? Because it's seems like a good idea. If that's your only objection I'll find some in-tree drivers that can use it, drivers/char/tpm/tpm.c looks like it could use it for starters. It's a bit hard to tell but there might be some others. > And why would the driver not be availble for upstream to take? Because it's a hacky pile of crud, and it's for unreleased and non-existent hardware. cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-14 2:50 ` Michael Ellerman @ 2008-11-14 3:23 ` Greg KH 2008-11-14 4:01 ` Randy Dunlap 2008-11-14 4:58 ` Michael Ellerman 0 siblings, 2 replies; 9+ messages in thread From: Greg KH @ 2008-11-14 3:23 UTC (permalink / raw) To: Michael Ellerman; +Cc: linux-kernel, Andrew Morton, viro On Fri, Nov 14, 2008 at 01:50:52PM +1100, Michael Ellerman wrote: > On Thu, 2008-11-13 at 16:18 -0800, Greg KH wrote: > > On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: > > > On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > > > > On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > > > > > Currently it's not easy to share file_operations between multiple > > > > > instances of a miscdevice. In order to do this, the device code needs to > > > > > store a list of all it's miscdevice instances, and when fops->open() is > > > > > called, search the list and find the right device based on the minor > > > > > number. > > > > > > > > > > However the generic miscdevice code already has a list of miscdevices, > > > > > and uses this to find the right device in misc_open(). If misc_open() > > > > > would store the miscdevice it found in file->private_data, then the > > > > > device code wouldn't need to worry about storing it's own separate list > > > > > and searching that as well. > > > > > > > > > > The rest of the miscdevice code does not use file->private_data, so the > > > > > device code is still free to use file->private_data for something else > > > > > if it wants to. > > > > > > > > > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > > > > > > > > Do you have a follow-on patch for some misc device using code that would > > > > take advantage of this change? > > > > > > Ah, good point. I do, but not for upstream :/ > > > > Hm, then I have to ask why should we take this change? > > Because it's seems like a good idea. You know we don't make changes to core code for drivers that aren't in the main tree, this is not a new thing... > > And why would the driver not be availble for upstream to take? > > Because it's a hacky pile of crud, and it's for unreleased and > non-existent hardware. That's what the drivers/staging/ tree is for, send it on over to me and I'll add it to that location. thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-14 3:23 ` Greg KH @ 2008-11-14 4:01 ` Randy Dunlap 2008-11-14 4:15 ` Greg KH 2008-11-14 4:58 ` Michael Ellerman 1 sibling, 1 reply; 9+ messages in thread From: Randy Dunlap @ 2008-11-14 4:01 UTC (permalink / raw) To: Greg KH; +Cc: Michael Ellerman, linux-kernel, Andrew Morton, viro Greg KH wrote: > On Fri, Nov 14, 2008 at 01:50:52PM +1100, Michael Ellerman wrote: >> On Thu, 2008-11-13 at 16:18 -0800, Greg KH wrote: >>> On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: >>>> On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: >>>>> On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: >>>>>> Currently it's not easy to share file_operations between multiple >>>>>> instances of a miscdevice. In order to do this, the device code needs to >>>>>> store a list of all it's miscdevice instances, and when fops->open() is >>>>>> called, search the list and find the right device based on the minor >>>>>> number. >>>>>> >>>>>> However the generic miscdevice code already has a list of miscdevices, >>>>>> and uses this to find the right device in misc_open(). If misc_open() >>>>>> would store the miscdevice it found in file->private_data, then the >>>>>> device code wouldn't need to worry about storing it's own separate list >>>>>> and searching that as well. >>>>>> >>>>>> The rest of the miscdevice code does not use file->private_data, so the >>>>>> device code is still free to use file->private_data for something else >>>>>> if it wants to. >>>>>> >>>>>> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> >>>>> Do you have a follow-on patch for some misc device using code that would >>>>> take advantage of this change? >>>> Ah, good point. I do, but not for upstream :/ >>> Hm, then I have to ask why should we take this change? >> Because it's seems like a good idea. > > You know we don't make changes to core code for drivers that aren't in > the main tree, this is not a new thing... > >>> And why would the driver not be availble for upstream to take? >> Because it's a hacky pile of crud, and it's for unreleased and >> non-existent hardware. > > That's what the drivers/staging/ tree is for, send it on over to me and > I'll add it to that location. for non-existent hardware?? that's not a good plan. -- ~Randy ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-14 4:01 ` Randy Dunlap @ 2008-11-14 4:15 ` Greg KH 0 siblings, 0 replies; 9+ messages in thread From: Greg KH @ 2008-11-14 4:15 UTC (permalink / raw) To: Randy Dunlap; +Cc: Michael Ellerman, linux-kernel, Andrew Morton, viro On Thu, Nov 13, 2008 at 08:01:47PM -0800, Randy Dunlap wrote: > Greg KH wrote: > > On Fri, Nov 14, 2008 at 01:50:52PM +1100, Michael Ellerman wrote: > >> On Thu, 2008-11-13 at 16:18 -0800, Greg KH wrote: > >>> On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: > >>>> On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > >>>>> On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > >>>>>> Currently it's not easy to share file_operations between multiple > >>>>>> instances of a miscdevice. In order to do this, the device code needs to > >>>>>> store a list of all it's miscdevice instances, and when fops->open() is > >>>>>> called, search the list and find the right device based on the minor > >>>>>> number. > >>>>>> > >>>>>> However the generic miscdevice code already has a list of miscdevices, > >>>>>> and uses this to find the right device in misc_open(). If misc_open() > >>>>>> would store the miscdevice it found in file->private_data, then the > >>>>>> device code wouldn't need to worry about storing it's own separate list > >>>>>> and searching that as well. > >>>>>> > >>>>>> The rest of the miscdevice code does not use file->private_data, so the > >>>>>> device code is still free to use file->private_data for something else > >>>>>> if it wants to. > >>>>>> > >>>>>> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > >>>>> Do you have a follow-on patch for some misc device using code that would > >>>>> take advantage of this change? > >>>> Ah, good point. I do, but not for upstream :/ > >>> Hm, then I have to ask why should we take this change? > >> Because it's seems like a good idea. > > > > You know we don't make changes to core code for drivers that aren't in > > the main tree, this is not a new thing... > > > >>> And why would the driver not be availble for upstream to take? > >> Because it's a hacky pile of crud, and it's for unreleased and > >> non-existent hardware. > > > > That's what the drivers/staging/ tree is for, send it on over to me and > > I'll add it to that location. > > for non-existent hardware?? that's not a good plan. I read that as "not public yet" hardware. If that is incorrect, Randy is right, this isn't a good idea at all, sorry. thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Store the relevant miscdevice in file->private_data in misc_open() 2008-11-14 3:23 ` Greg KH 2008-11-14 4:01 ` Randy Dunlap @ 2008-11-14 4:58 ` Michael Ellerman 1 sibling, 0 replies; 9+ messages in thread From: Michael Ellerman @ 2008-11-14 4:58 UTC (permalink / raw) To: Greg KH; +Cc: linux-kernel, Andrew Morton, viro [-- Attachment #1: Type: text/plain, Size: 2291 bytes --] On Thu, 2008-11-13 at 19:23 -0800, Greg KH wrote: > On Fri, Nov 14, 2008 at 01:50:52PM +1100, Michael Ellerman wrote: > > On Thu, 2008-11-13 at 16:18 -0800, Greg KH wrote: > > > On Fri, Nov 14, 2008 at 10:54:41AM +1100, Michael Ellerman wrote: > > > > On Thu, 2008-11-13 at 09:31 -0800, Greg KH wrote: > > > > > On Thu, Nov 13, 2008 at 03:49:50PM +1100, Michael Ellerman wrote: > > > > > > Currently it's not easy to share file_operations between multiple > > > > > > instances of a miscdevice. In order to do this, the device code needs to > > > > > > store a list of all it's miscdevice instances, and when fops->open() is > > > > > > called, search the list and find the right device based on the minor > > > > > > number. > > > > > > > > > > > > However the generic miscdevice code already has a list of miscdevices, > > > > > > and uses this to find the right device in misc_open(). If misc_open() > > > > > > would store the miscdevice it found in file->private_data, then the > > > > > > device code wouldn't need to worry about storing it's own separate list > > > > > > and searching that as well. > > > > > > > > > > > > The rest of the miscdevice code does not use file->private_data, so the > > > > > > device code is still free to use file->private_data for something else > > > > > > if it wants to. > > > > > > > > > > > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > > > > > > > > > > Do you have a follow-on patch for some misc device using code that would > > > > > take advantage of this change? > > > > > > > > Ah, good point. I do, but not for upstream :/ > > > > > > Hm, then I have to ask why should we take this change? > > > > Because it's seems like a good idea. > > You know we don't make changes to core code for drivers that aren't in > the main tree, this is not a new thing... Sure. I'm not asking you to. It seemed clear to me that this was a sensible thing for the misc device infrastructure to do, but if you disagree that's fine. cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-11-14 4:59 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-11-13 4:49 [PATCH] Store the relevant miscdevice in file->private_data in misc_open() Michael Ellerman 2008-11-13 17:31 ` Greg KH 2008-11-13 23:54 ` Michael Ellerman 2008-11-14 0:18 ` Greg KH 2008-11-14 2:50 ` Michael Ellerman 2008-11-14 3:23 ` Greg KH 2008-11-14 4:01 ` Randy Dunlap 2008-11-14 4:15 ` Greg KH 2008-11-14 4:58 ` Michael Ellerman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox