• Logan Gunthorpe's avatar
    char_dev: extend dynamic allocation of majors into a higher range · a5d31a3f
    Logan Gunthorpe authored
    We've run into problems with running out of dynamicly assign char
    device majors particullarly on automated test systems with
    all-yes-configs. Roughly 40 dynamic assignments can be made with such
    kernels at this time while space is reserved for only 20.
    
    Currently, the kernel only prints a warning when dynamic allocation
    overflows the reserved region. And when this happens drivers that have
    fixed assignments can randomly fail depending on the order of
    initialization of other drivers. Thus, adding a new char device can cause
    unexpected failures in completely unrelated parts of the kernel.
    
    This patch solves the problem by extending dynamic major number
    allocations down from 511 once the 234-254 region fills up. Fixed
    majors already exist above 255 so the infrastructure to support
    high number majors is already in place. The patch reserves an
    additional 128 major numbers which should hopefully last us a while.
    
    Kernels that don't require more than 20 dynamic majors assigned (which
    is pretty typical) should not be affected by this change.
    Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Alan Cox <alan@linux.intel.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lkml.org/lkml/2017/6/4/107Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    a5d31a3f
char_dev.c 16.4 KB