[lkml]   [2008]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] fix pktcdvd breakage from commit e105b8bfc769b0545b6f0f395179d1e43cbee822
    On Sun, Nov 30, 2008 at 13:19, Al Viro <> wrote:
    > device_create() will create a symlink in /sys/dev/char unless
    > the class has ->dev_kobj cleared; pktcdvd uses it to populate the
    > /sys/class/pktcdvd/ with per-device subdirectories. While we do
    > want /sys/class/pktcdvd/pktcdvd[0-7]/dev to contain a device number,
    > we definitely do not want it to try and crap into /sys/dev/char; if
    > nothing else, device number is *block* one (and we don't want it
    > to crap into /sys/dev/block either - there such symlinks will be created
    > by add_disk() and they will point to /sys/block/pktcdvd[0-7]).
    > As it is, attempt to set the damn thing up will end up with
    > sysfs_add_one() barfing at duplicate entries and /sys/class/pktcdvd/pktcdvd*/*/
    > not created at all. The fix is trivial: clear ->dev_kobj in the class to
    > tell device_add() that no, we do *not* want these symlinks, TYVM...
    > FWIW, all traces containing pkt_setup_dev() on appear
    > to be from that one. It had been around since 2.6.26; probably -stable
    > fodder...
    > Signed-off-by: Al Viro <>
    > ---
    > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
    > index f20bf35..79981f2 100644
    > --- a/drivers/block/pktcdvd.c
    > +++ b/drivers/block/pktcdvd.c
    > @@ -417,6 +417,7 @@ static int pkt_sysfs_init(void)
    > printk(DRIVER_NAME": failed to create class pktcdvd\n");
    > return ret;
    > }
    > + class_pktcdvd->dev_kobj = NULL;
    > return 0;
    > }

    I posted a fix for that weeks ago. But the pktcdvd maintainer stated,
    that the char device nodes are not used for anything. So the whole use
    of dev_t should be removed entirely. They just blindly claim the same
    char dev_t the block devices use, and conflict with char devices from
    other subsystems. Patching out the /sys/dev/class links fixes the
    oops, but the underlying fundamental breakage will still exist.

    Original mail here states:
    "Maybe, but that character device would not be used for anything,
    besides creating sub-directories in /sys/class/pktcdvd. The driver
    implements a block device, not a character device."

    No idea why this never got fixed.


     \ /
      Last update: 2008-11-30 13:43    [W:0.023 / U:15.560 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site