Re: Question about dynamic minor number of misc device

From: Arnd Bergmann
Date: Tue Jan 21 2020 - 02:56:58 EST


On Mon, Jan 20, 2020 at 11:13 PM Theodore Y. Ts'o <tytso@xxxxxxx> wrote:
>
> On Mon, Jan 20, 2020 at 11:59:32AM +0100, Arnd Bergmann wrote:
> > On Mon, Jan 20, 2020 at 11:26 AM Zhenzhong Duan
> > <zhenzhong.duan@xxxxxxxxx> wrote:
> > > On Mon, Jan 20, 2020 at 6:03 PM Arnd Bergmann <arnd@xxxxxxxx> wrote:
> > > > On Mon, Jan 20, 2020 at 9:33 AM Zhenzhong Duan <zhenzhong.duan@xxxxxxxxx> wrote:
> > > > On a related note, I checked for drivers that call misc_register()
> > > > with a minor number that is not defined in include/linux/misc.h
> > > > and found a bunch, including some that have conflicting numbers,
> > > > conflicting names or numbers from the dynamic range:
> > > >
> > > > drivers/staging/speakup/devsynth.c:#define SYNTH_MINOR 25
> > > > drivers/staging/speakup/speakup_soft.c:#define SOFTSYNTH_MINOR 26 /*
> > > > drivers/staging/speakup/speakup_soft.c:#define SOFTSYNTHU_MINOR 27 /*
> > > > drivers/macintosh/via-pmu.c:#define PMU_MINOR 154
> > > > drivers/macintosh/ans-lcd.h:#define ANSLCD_MINOR 156
> > > > drivers/auxdisplay/charlcd.c:#define LCD_MINOR 156
> > > > drivers/char/applicom.c:#define AC_MINOR 157
> > > > drivers/char/nwbutton.h:#define BUTTON_MINOR 158
> > > > arch/arm/include/asm/nwflash.h:#define FLASH_MINOR 160
> > > > drivers/sbus/char/envctrl.c:#define ENVCTRL_MINOR 162
> > > > drivers/sbus/char/flash.c:#define FLASH_MINOR 152
> > > > drivers/sbus/char/uctrl.c:#define UCTRL_MINOR 174
> > > > drivers/char/toshiba.c:#define TOSH_MINOR_DEV 181
> > > > arch/um/drivers/random.c:#define RNG_MISCDEV_MINOR
> > > > drivers/auxdisplay/panel.c:#define KEYPAD_MINOR 185
> > > > drivers/video/fbdev/pxa3xx-gcu.c:#define MISCDEV_MINOR 197
> > > > kernel/power/user.c:#define SNAPSHOT_MINOR 231
> > > > drivers/parisc/eisa_eeprom.c:#define EISA_EEPROM_MINOR 241
> > > >
> > > > If you would like to help clean that up, you are definitely welcome
> > > > to send patches.
> > >
> > > Ok, should that be a patch for all drivers or seperate patch for each driver?
> >
> > I think one patch to move the ones with unique names would be fine,
> > but then separate patches for
> >
> > - FLASH_MINOR move and rename to avoid conflict
> > - change speakup to dynamic minors
> > - support for high dynamic minor numbers if you are really motivated
> > (probably nobody needs these)
>
> Are we sure that reassigning minor device number conflits isn't going
> to break systems? Especially those on random, older, architectures
> they might not be using udev.

To clarify: the only numbers that I think should be changed to dynamic
allocation are for drivers/staging/speakup. While this is a fairly old
subsystem, I would expect that it being staging means we can be a
little more progressive with the changes.

Arnd