lkml.org 
[lkml]   [2008]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH] fix pktcdvd breakage from commit e105b8bfc769b0545b6f0f395179d1e43cbee822
    From
    Date
    On Fri, 2008-12-05 at 03:57 +0100, Kay Sievers wrote:
    > On Sun, Nov 30, 2008 at 16:56, Kay Sievers <kay.sievers@vrfy.org> wrote:
    > > On Sun, Nov 30, 2008 at 15:52, Al Viro <viro@zeniv.linux.org.uk> wrote:
    > >> On Sun, Nov 30, 2008 at 03:28:15PM +0100, Kay Sievers wrote:
    > >>> > So we need to preserve the layout, with the easiest way probably being "add
    > >>> > one more ktype and use kobject_init_and_add() instead of that device_create()".
    > >>> > Sigh...
    > >>>
    > >>> What do you mean? We just need to replace the bogus "pd->pkt_dev" with
    > >>> MKDEV(0, 0) and we are fine.
    > >>
    > >> Userland-visible change - right now cat /sys/class/pktcdvd/pktcdvd3/dev will
    > >> give you dev_t of the block device in question.
    > >
    > > True, it's visible, but it's incorrect dead information which should
    > > be removed. Subsystem != "block is defined as S_IFCHR, and there is no
    > > such char device for pktcdvd. In fact the "dev" file of the pktcdvd
    > > class device points in many cases to a USB device, which must be
    > > fixed.
    > >
    > > The whole pktcdvd class is not used at all, besides for exporting a
    > > few files. The "dev" file at the class device is just a bug, and the
    > > MAJOR/MINOR uevent environment variables also. I doubt that there will
    > > be any visible breakage in something that isn't already totally
    > > broken. In short, I doubt, that anything that works today will stop
    > > working if we remove the bugus "dev" file.
    > >
    > > This seem like the simple and correct fix for the issue with /sys/dev/
    > > and the broken non-existing but exported pkcdvd char device:
    > > - pd->dev = device_create(class_pktcdvd, NULL, pd->pkt_dev, NULL,
    > > + pd->dev = device_create(class_pktcdvd, NULL, MKDEV(0, 0), NULL,
    >
    > Al, this bug still exists, right? Any objections to remove the dead char dev_t?

    Here is a patch.

    Thanks,
    Kay


    From: Kay Sievers <kay.sievers@vrfy.org>
    Subject: pktcdvd: remove broken dev_t export of class devices

    The pktcdvd created class devices only export some sysfs files,
    but have no char dev_t registered in the driver.

    At class device creation time they copy the dev_t value of the
    block device to the char device, wich will register a new char
    device in the driver core and userspace, with a conflicting dev_t
    value.

    In many cases the class devices dev_t just points to a random
    USB device. This fixes the sysfs "duplicate entry" errors.

    Cc: petero2@telia.com
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
    ---
    pktcdvd.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/block/pktcdvd.c
    +++ b/drivers/block/pktcdvd.c
    @@ -302,7 +302,7 @@ static struct kobj_type kobj_pkt_type_wqueue = {
    static void pkt_sysfs_dev_new(struct pktcdvd_device *pd)
    {
    if (class_pktcdvd) {
    - pd->dev = device_create(class_pktcdvd, NULL, pd->pkt_dev, NULL,
    + pd->dev = device_create(class_pktcdvd, NULL, MKDEV(0, 0), NULL,
    "%s", pd->name);
    if (IS_ERR(pd->dev))
    pd->dev = NULL;



    \
     
     \ /
      Last update: 2008-12-06 04:41    [W:0.053 / U:1.080 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site