On Tue, 19 Sep 2023, Jiri Slaby (SUSE) wrote: > Make "no numbers available" a fast quit from the function. And do the Did you really intend to write "numbers" and not e.g. characters? The change itself looks good, Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> -- i. > heavy work outside the 'if'. This makes the code more understandable and > conforming to the common kernel coding style. > > Signed-off-by: Jiri Slaby (SUSE) <jirislaby@xxxxxxxxxx> > --- > drivers/tty/n_tty.c | 38 ++++++++++++++++++++------------------ > 1 file changed, 20 insertions(+), 18 deletions(-) > > diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c > index 6a112910c058..922fb61b587a 100644 > --- a/drivers/tty/n_tty.c > +++ b/drivers/tty/n_tty.c > @@ -1966,24 +1966,26 @@ static bool copy_from_read_buf(const struct tty_struct *tty, u8 **kbp, > size_t tail = MASK(ldata->read_tail); > > n = min3(head - ldata->read_tail, N_TTY_BUF_SIZE - tail, *nr); > - if (n) { > - u8 *from = read_buf_addr(ldata, tail); > - memcpy(*kbp, from, n); > - is_eof = n == 1 && *from == EOF_CHAR(tty); > - tty_audit_add_data(tty, from, n); > - zero_buffer(tty, from, n); > - smp_store_release(&ldata->read_tail, ldata->read_tail + n); > - /* Turn single EOF into zero-length read */ > - if (L_EXTPROC(tty) && ldata->icanon && is_eof && > - (head == ldata->read_tail)) > - return false; > - *kbp += n; > - *nr -= n; > - > - /* If we have more to copy, let the caller know */ > - return head != ldata->read_tail; > - } > - return false; > + if (!n) > + return false; > + > + u8 *from = read_buf_addr(ldata, tail); > + memcpy(*kbp, from, n); > + is_eof = n == 1 && *from == EOF_CHAR(tty); > + tty_audit_add_data(tty, from, n); > + zero_buffer(tty, from, n); > + smp_store_release(&ldata->read_tail, ldata->read_tail + n); > + > + /* Turn single EOF into zero-length read */ > + if (L_EXTPROC(tty) && ldata->icanon && is_eof && > + head == ldata->read_tail) > + return false; > + > + *kbp += n; > + *nr -= n; > + > + /* If we have more to copy, let the caller know */ > + return head != ldata->read_tail; > } > > /** >