Re: [PATCH] Airprime driver improvements to allow full speed EvDO transfers

Sergei Organov
2006-06-30T10:51:59Z

Andrew Morton <akpm@osdl.org> writes:
> On Fri, 30 Jun 2006 01:48:02 -0400
> Andy Gay <andy@andynet.net> wrote:
[...]
>> + if (tty && urb->actual_length) {
>> + tty_buffer_request_room(tty, urb->actual_length);
>> + tty_insert_flip_string(tty, data, urb->actual_length);
>
> Is it correct to ignore the return value from those two functions?

In fact, according to Alan Cox answer, the first call is useless here at
all, i.e., tty_buffer_request_room() is for subsequent
tty_insert_flip_char() calls in a loop, not for
tty_insert_flip_string(). tty_insert_flip_string() calls
tty_buffer_request_room() itself, and does it in a loop in attempt to
find as much memory as possible.

tty_insert_flip_string() returns number of bytes it has actually
inserted, but I don't believe one can do much if it returns less than
has been requested as it means that we are out of kernel memory.

Overall, it seems it should be just:

+ if (tty && urb->actual_length) {
+ tty_insert_flip_string(tty, data, urb->actual_length);

--
Sergei.