Hi all,
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);
Hi all,
On Thu, 11 Apr 2024 13:57:35 +1000 Stephen Rothwell <[email protected]> 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);
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 <[email protected]> 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
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 <[email protected]> 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 :-(
Yes, that's correct one, i.e. one from tty-next should be used.
Thank you!
--
With Best Regards,
Andy Shevchenko