Re: linux-next: manual merge of the tty tree with the tty.current tree

From: Greg KH
Date: Thu Apr 11 2024 - 00:38:51 EST


On Thu, Apr 11, 2024 at 02:17:11PM +1000, Stephen Rothwell wrote:
> Hi all,
>
> On Thu, 11 Apr 2024 13:57:35 +1000 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> >
> > Today's linux-next merge of the tty tree got a conflict in:
> >
> > drivers/tty/serial/serial_core.c
> >
> > between commit:
> >
> > 9cf7ea2eeb74 ("serial: core: Clearing the circular buffer before NULLifying it")
> >
> > from the tty.current tree and commit:
> >
> > 1788cf6a91d9 ("tty: serial: switch from circ_buf to kfifo")
> >
> > from the tty tree.
> >
> > I fixed it up (see below) and can carry the fix as necessary. This
> > is now fixed as far as linux-next is concerned, but any non trivial
> > conflicts should be mentioned to your upstream maintainer when your tree
> > is submitted for merging. You may also want to consider cooperating
> > with the maintainer of the conflicting tree to minimise any particularly
> > complex conflicts.
> >
> > --
> > Cheers,
> > Stephen Rothwell
> >
> > diff --cc drivers/tty/serial/serial_core.c
> > index 2247efe97250,a78ded8c60b5..000000000000
> > --- a/drivers/tty/serial/serial_core.c
> > +++ b/drivers/tty/serial/serial_core.c
> > @@@ -1788,9 -1773,9 +1773,10 @@@ static void uart_tty_port_shutdown(stru
> > * Free the transmit buffer.
> > */
> > uart_port_lock_irq(uport);
> > + uart_circ_clear(&state->xmit);
> > - buf = state->xmit.buf;
> > - state->xmit.buf = NULL;
> > + buf = port->xmit_buf;
> > + port->xmit_buf = NULL;
> > + INIT_KFIFO(port->xmit_fifo);
> > uart_port_unlock_irq(uport);
> >
> > free_page((unsigned long)buf);
>
> That didn't work :-(
>
> So I have used the below resolution instead.
> --
> Cheers,
> Stephen Rothwell
>
> diff --cc drivers/tty/serial/serial_core.c
> index 2247efe97250,a78ded8c60b5..000000000000
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@@ -1788,9 -1773,9 +1773,10 @@@ static void uart_tty_port_shutdown(stru
> * Free the transmit buffer.
> */
> uart_port_lock_irq(uport);
> - uart_circ_clear(&state->xmit);
> - buf = state->xmit.buf;
> - state->xmit.buf = NULL;
> ++ kfifo_reset(&state->port.xmit_fifo);
> + buf = port->xmit_buf;
> + port->xmit_buf = NULL;
> + INIT_KFIFO(port->xmit_fifo);
> uart_port_unlock_irq(uport);
>
> free_page((unsigned long)buf);

Thank you for this, I will use it when the tty-linus changes are merged
with Linus's tree.

greg k-h