Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

try harder to load tty ldisc driver

Currently function tty_ldisc_get() tries to load an ldisc driver module
only when tty_ldisc_try_get() returns -EAGAIN. This happens only if
module is being unloaded. If ldisc module is not loaded
tty_ldisc_try_get() returns -EINVAL and this case is not handled in
tty_ldisc_get(), so request_module() is not called.

Attached patch fixes this by calling request_module() if
tty_ldisc_try_get() returned any error code.

I discovered this when my UMTS modem stopped working with 2.6.27-rc1
because module ppp_async was not loaded.

Signed-off-by: Eugeniy Meshcheryakov <eugen@debian.org>
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Eugeniy Meshcheryakov and committed by
Linus Torvalds
3ab36ab6 84ff7a00

+1 -1
+1 -1
drivers/char/tty_ldisc.c
··· 169 169 if (disc < N_TTY || disc >= NR_LDISCS) 170 170 return -EINVAL; 171 171 err = tty_ldisc_try_get(disc, ld); 172 - if (err == -EAGAIN) { 172 + if (err < 0) { 173 173 request_module("tty-ldisc-%d", disc); 174 174 err = tty_ldisc_try_get(disc, ld); 175 175 }