Re: 2.6.10-rc1-mm3

Andrew Morton
2004-11-09T05:54:55Z

Greg KH <greg@kroah.com> wrote:
>
> So I don't see how that could be failing here. And why I don't see this
> on my boxes...

OK, progress. The oops is due to CONFIG_LEGACY_PTY_COUNT=512. I assume
anything greater than 256 will trigger it.

- tty_register_driver() calls tty_register_device() for 512 devices.

- tty_register_device() calls pty_line_name() for the 512 devices, but
pty_line_name() only understands 256 devices. After that, it starts
returning duplicated names.

- class_simple_device_add() gets an -EEXIST return from
class_device_register() and then tries to kfree local variable s_dev, but
it's already free. Presumably all that icky refcounting under
class_device_register() did this for us already. Can you fix this one
Greg? Just enable slab debugging, set CONFIG_LEGACY_PTY_COUNT=512 and
watch the fun.

As for the limitation of 256 legacy ptys: we should either raise it by
cooking up new device names or limit it to 256 in config. The latter, I
guess. Is there a requirement to support more than 256 legacy ptys?

Limit the number of legacy ptys to 256. pty_line_name() isn't capable of
generating more than 256 unique names.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

25-akpm/drivers/char/Kconfig | 1 +
1 files changed, 1 insertion(+)

diff -puN drivers/char/Kconfig~limit-CONFIG_LEGACY_PTY_COUNT drivers/char/Kconfig
--- 25/drivers/char/Kconfig~limit-CONFIG_LEGACY_PTY_COUNT 2004-11-08 21:22:46.843719848 -0800
+++ 25-akpm/drivers/char/Kconfig 2004-11-08 21:23:23.496147832 -0800
@@ -478,6 +478,7 @@ config LEGACY_PTYS
config LEGACY_PTY_COUNT
int "Maximum number of legacy PTY in use"
depends on LEGACY_PTYS
+ range 1 256
default "256"
---help---
The maximum number of legacy PTYs that can be used at any one time.
_