On Fri, May 4, 2018 at 5:28 AM, Richard Genoud <richard.genoud@xxxxxxxxx> wrote: > On 04/05/2018 10:14, Sebastian Andrzej Siewior wrote: >> I was puzzled while looking at /proc/interrupts and random things showed >> up between reboots. This occurred more often but I realised it later. The >> "correct" output should be: >> |38: 11861 atmel-aic5 2 Level ttyS0 >> >> but I saw sometimes >> |38: 6426 atmel-aic5 2 Level tty1 >> >> and accounted it wrongly as correct. This is use after free and the >> former example randomly got the "old" pointer which pointed to the same >> content. With SLAB_FREELIST_RANDOM and HARDENED I even got >> |38: 7067 atmel-aic5 2 Level E=Started User Manager for UID 0 >> >> or other nonsense. >> As it turns out the tty, pointer that is accessed in atmel_startup(), is >> freed() before atmel_shutdown(). It seems to happen quite often that the >> tty for ttyS0 is allocated and freed while ->shutdown is not invoked. I >> don't do anything special - just a systemd boot :) >> >> Use port->name as the IRQ name for request_irq(). This exists as long as >> the driver is loaded so no use-after-free here. >> For backports before v4.12 I suggest to use `"atmel_serial"' instead >> `port->name' (that member was introduced in f7048b15900f ("tty: serial_core: >> Add name field to uart_port struct"). >> >> Cc: stable@xxxxxxxxxxxxxxx > I think it's safer to use: > Cc: stable@xxxxxxxxxxxxxxx # 4.14 > Because the stable team may miss your comment, and even if they don't, I > think it's not their role to adapt the patch to 4.9.x (and test it !) > IMHO, the best way is to add # 4.14 and when it's applied on 4.14.x, > send a tested backport for 4.9.x > > Besides that, you can add my: > Acked-by: Richard Genoud <richard.genoud@xxxxxxxxx> > > Rob, do you agree with this fix ? Yes, one less dependency on tty struct in serial drivers is a good thing. However, I find port->name to be a somewhat pointless addition. Most platform drivers (which most serial drivers are) use the device name for registering their IRQ. And now serial drivers may not even have a tty with serdev. Using the device name would also solve your backporting issue. But either way: Acked-by: Rob Herring <robh@xxxxxxxxxx> Rob -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html