lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4AB244E0.1060109@windriver.com>
Date:	Thu, 17 Sep 2009 09:17:04 -0500
From:	Jason Wessel <jason.wessel@...driver.com>
To:	Alan Cox <alan@...rguk.ukuu.org.uk>
CC:	Alan Stern <stern@...land.harvard.edu>, gregkh@...e.de,
	linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/3] usb console,usb-serial: pass initial console baud
 on to first tty open

Alan Cox wrote:
> On Thu, 17 Sep 2009 14:08:28 +0100
> Alan Cox <alan@...rguk.ukuu.org.uk> wrote:
>
>   
>>> -			memset(&dummy, 0, sizeof(struct ktermios));
>>> -			tty->termios = termios;
>>> +			tty->termios = &usb_serial_tty_driver->init_termios;
>>>       
>> That will corrupt the master one which is a reference used for many ports.
>>
>>     

I agree. 

>> You need the serial_install stuff or something similar resurrecting to do
>> this properly.
>>     
>
> Here's a suggestion on how to do it.
>
> Add a tty->ops->init_termios()
>
> Make tty_init_termios() read
>
>        if (tp == NULL) {
>                 tp = kzalloc(sizeof(struct ktermios[2]), GFP_KERNEL);
>                 if (tp == NULL)
>                         return -ENOMEM;
>                 memcpy(tp, &tty->driver->init_termios,
>                                                 sizeof(struct ktermios));
> 		if (tty->ops->init_termios)
> 			tty->ops->init_termios(tty);
>                 tty->driver->termios[idx] = tp;
>         }
>
> Thats a good deal cleaner than the ->install override in the USB patches
> Greg inherited and will be usable for cleaning up USB stuff too.
>
>   
Sure we can add another layer of init_termios callbacks, but where is
the right place to store the termios per console?

Should the "struct console co*" get a new member for the baud, or should
it get a termios?  The source of the problem is how to inherit the
termios setting from the first user (the console code in this case).

Before making several more implementations it is probably worth
discussing few more of the details.  In the current code the ->install
override has the opportunity to apply the fixup by copying something
from a "struct console co* termios" if one existed.

Certainly you could do the same thing with the proposed call back you
mentioned, but then the serial_install() needs to be removed from the
usb code and the power management setup would need to find a new home...
or a copy of the new call back would need to go into the
serial_install() as well.

Jason.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ