From: Martin Kepplinger <martink@posteo.de>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: arnd@arndb.de, akpm@linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] misc: always assign miscdevice to file->private_data in open()
Date: Thu, 09 Oct 2014 15:10:21 +0200 [thread overview]
Message-ID: <5436893D.5050804@posteo.de> (raw)
In-Reply-To: <20141008134307.GA6099@kroah.com>
Am 2014-10-08 15:43, schrieb Greg KH:
> 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
>> fops.
>
> 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@posteo.de>
>> ---
>> 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 :)
What would be a good place for this?
Documentation/driver-model/device.txt or
Documentation/filesystem/vfs.txt like so? I'm not sure.
>From facd10cfa7539755e960dec8cc009934200e68ec Mon Sep 17 00:00:00 2001
From: Martin Kepplinger <martink@posteo.de>
Date: Thu, 9 Oct 2014 14:54:28 +0200
Subject: [PATCH] documentation: misc_open sets private_data for driver's
open()
Signed-off-by: Martin Kepplinger <martink@posteo.de>
---
Documentation/filesystems/vfs.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Documentation/filesystems/vfs.txt
b/Documentation/filesystems/vfs.txt
index 61d65cc..06df9d9 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -869,7 +869,8 @@ otherwise noted.
done the way it is because it makes filesystems simpler to
implement. The open() method is a good place to initialize the
"private_data" member in the file structure if you want to point
- to a device structure
+ to a device structure. In the case of "struct miscdevice", when
+ you implement open() this is done automatically.
flush: called by the close(2) system call to flush a file
--
1.7.10.4
>
>> 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
> that please?
>
I would grep -r "struct miscdevice" ./drivers/; and look at struct
file_operations of these results, see how their open() looks like, and
where they assign something to private_data.
If you have an idea for a script that lists all relevant files for me,
please tell me.
I queue this up but can't tell at all when it actually gets scheduled in ;)
I guess some do this work on their own because they don't know that
misc_open() already does it for them. It would probably be too much to
check what drivers could then just drop their open(). Interesting though
;) But in the short term, I think the appended documentation would help.
martin
next prev parent reply other threads:[~2014-10-09 13:12 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-08 8:47 [PATCH] misc: always assign miscdevice to file->private_data in open() Martin Kepplinger
2014-10-08 13:43 ` Greg KH
2014-10-09 13:10 ` Martin Kepplinger [this message]
2014-10-09 15:50 ` Greg KH
2014-10-09 16:37 ` [PATCH] char: documentation: more useful information about misc device Martin Kepplinger
2014-10-16 11:08 ` [PATCH] misc: always assign miscdevice to file->private_data in open() Martin Kepplinger
2014-10-18 23:12 ` Martin Kepplinger
2014-10-19 0:30 ` [PATCH 1/3] " Martin Kepplinger
2014-10-19 0:30 ` [PATCH 2/3] fbdev: pxa3xx-gcu: remove redundant implementation of open() Martin Kepplinger
2014-10-19 0:31 ` [PATCH 3/3] lguest: force file->private_data to be NULL on open() Martin Kepplinger
2014-10-20 13:41 ` Martin Kepplinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5436893D.5050804@posteo.de \
--to=martink@posteo.de \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.