Commit 3ab36ab6 authored by Eugeniy Meshcheryakov's avatar Eugeniy Meshcheryakov Committed by Linus Torvalds

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: default avatarEugeniy Meshcheryakov <eugen@debian.org>
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 84ff7a00
...@@ -169,7 +169,7 @@ static int tty_ldisc_get(int disc, struct tty_ldisc *ld) ...@@ -169,7 +169,7 @@ static int tty_ldisc_get(int disc, struct tty_ldisc *ld)
if (disc < N_TTY || disc >= NR_LDISCS) if (disc < N_TTY || disc >= NR_LDISCS)
return -EINVAL; return -EINVAL;
err = tty_ldisc_try_get(disc, ld); err = tty_ldisc_try_get(disc, ld);
if (err == -EAGAIN) { if (err < 0) {
request_module("tty-ldisc-%d", disc); request_module("tty-ldisc-%d", disc);
err = tty_ldisc_try_get(disc, ld); err = tty_ldisc_try_get(disc, ld);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment