Amit Shah <amit.shah@xxxxxxxxxx> writes: > Between open() being called and processed, the port can be unplugged. > Check if this happened, and bail out. > > A simple test script to reproduce this is: > > while true; do for i in $(seq 1 100); do echo $i > /dev/vport0p3; done; done; > > This opens and closes the port a lot of times; unplugging the port while > this is happening triggers the bug. > > CC: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Amit Shah <amit.shah@xxxxxxxxxx> > --- > drivers/char/virtio_console.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c > index 291f437..b04ec95 100644 > --- a/drivers/char/virtio_console.c > +++ b/drivers/char/virtio_console.c > @@ -1024,6 +1024,10 @@ static int port_fops_open(struct inode *inode, struct file *filp) > > /* We get the port with a kref here */ > port = find_port_by_devt(cdev->dev); > + if (!port) { > + /* Port was unplugged before we could proceed */ > + return -ENXIO; > + } > filp->private_data = port; > > /* > -- > 1.8.1.4 Applied. Thanks, Rusty. -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html