Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1558945 > unrolled thread

[PATCH] virtio_console: fix a crash in config_work_handler

Started by"G. Campana" <gcampana@quarkslab.com>
First post2017-01-14 12:00 +0100
Last post2017-01-16 14:40 +0100
Articles 5 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] virtio_console: fix a crash in config_work_handler "G. Campana" <gcampana@quarkslab.com> - 2017-01-14 12:00 +0100
    Re: [PATCH] virtio_console: fix a crash in config_work_handler Amit Shah <amit.shah@redhat.com> - 2017-01-16 04:40 +0100
      [PATCH v2] virtio_console: fix a crash in config_work_handler "G. Campana" <gcampana@quarkslab.com> - 2017-01-16 10:50 +0100
        Re: [PATCH v2] virtio_console: fix a crash in config_work_handler Amit Shah <amit.shah@redhat.com> - 2017-01-16 11:30 +0100
          Re: [PATCH v2] virtio_console: fix a crash in config_work_handler "Michael S. Tsirkin" <mst@redhat.com> - 2017-01-16 14:40 +0100

#1558945 — [PATCH] virtio_console: fix a crash in config_work_handler

From"G. Campana" <gcampana@quarkslab.com>
Date2017-01-14 12:00 +0100
Subject[PATCH] virtio_console: fix a crash in config_work_handler
Message-ID<sZudY-4VP-11@gated-at.bofh.it>
Using control_work instead of config_work as the 3rd argument to
container_of results in an invalid portdev pointer. Indeed, the work
structure is initialized as below:

    INIT_WORK(&portdev->config_work, &config_work_handler);

It leads to a crash when portdev->vdev is dereferenced later. This bug
is triggered when the guest uses a virtio-console without multiport
feature and receives a config_changed virtio interrupt.
---
 drivers/char/virtio_console.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 8b00e79..17857be 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1862,7 +1862,7 @@ static void config_work_handler(struct work_struct *work)
 {
 	struct ports_device *portdev;
 
-	portdev = container_of(work, struct ports_device, control_work);
+	portdev = container_of(work, struct ports_device, config_work);
 	if (!use_multiport(portdev)) {
 		struct virtio_device *vdev;
 		struct port *port;
-- 
2.7.4

[toc] | [next] | [standalone]


#1559422

FromAmit Shah <amit.shah@redhat.com>
Date2017-01-16 04:40 +0100
Message-ID<t06jf-2Xg-9@gated-at.bofh.it>
In reply to#1558945
On (Sat) 14 Jan 2017 [11:38:39], G. Campana wrote:
> Using control_work instead of config_work as the 3rd argument to
> container_of results in an invalid portdev pointer. Indeed, the work
> structure is initialized as below:
> 
>     INIT_WORK(&portdev->config_work, &config_work_handler);
> 
> It leads to a crash when portdev->vdev is dereferenced later. This bug
> is triggered when the guest uses a virtio-console without multiport
> feature and receives a config_changed virtio interrupt.

Thanks, the patch is fine, but needs signed-off-by.

Please also post to virtualization@lists.linux-foundation.org


		Amit

[toc] | [prev] | [next] | [standalone]


#1559566 — [PATCH v2] virtio_console: fix a crash in config_work_handler

From"G. Campana" <gcampana@quarkslab.com>
Date2017-01-16 10:50 +0100
Subject[PATCH v2] virtio_console: fix a crash in config_work_handler
Message-ID<t0c5j-6Xo-13@gated-at.bofh.it>
In reply to#1559422
Using control_work instead of config_work as the 3rd argument to
container_of results in an invalid portdev pointer. Indeed, the work
structure is initialized as below:

    INIT_WORK(&portdev->config_work, &config_work_handler);

It leads to a crash when portdev->vdev is dereferenced later. This bug
is triggered when the guest uses a virtio-console without multiport
feature and receives a config_changed virtio interrupt.

Signed-off-by: G. Campana <gcampana@quarkslab.com>
---
 drivers/char/virtio_console.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 8b00e79..17857be 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1862,7 +1862,7 @@ static void config_work_handler(struct work_struct *work)
 {
 	struct ports_device *portdev;
 
-	portdev = container_of(work, struct ports_device, control_work);
+	portdev = container_of(work, struct ports_device, config_work);
 	if (!use_multiport(portdev)) {
 		struct virtio_device *vdev;
 		struct port *port;
-- 
2.7.4

[toc] | [prev] | [next] | [standalone]


#1559605 — Re: [PATCH v2] virtio_console: fix a crash in config_work_handler

FromAmit Shah <amit.shah@redhat.com>
Date2017-01-16 11:30 +0100
SubjectRe: [PATCH v2] virtio_console: fix a crash in config_work_handler
Message-ID<t0cI2-7wv-9@gated-at.bofh.it>
In reply to#1559566
On (Mon) 16 Jan 2017 [10:45:02], G. Campana wrote:
> Using control_work instead of config_work as the 3rd argument to
> container_of results in an invalid portdev pointer. Indeed, the work
> structure is initialized as below:
> 
>     INIT_WORK(&portdev->config_work, &config_work_handler);
> 
> It leads to a crash when portdev->vdev is dereferenced later. This bug
> is triggered when the guest uses a virtio-console without multiport
> feature and receives a config_changed virtio interrupt.
> 
> Signed-off-by: G. Campana <gcampana@quarkslab.com>

Reviewed-by: Amit Shah <amit.shah@redhat.com>

Michael, can you please pick this up?

		Amit

[toc] | [prev] | [next] | [standalone]


#1559735 — Re: [PATCH v2] virtio_console: fix a crash in config_work_handler

From"Michael S. Tsirkin" <mst@redhat.com>
Date2017-01-16 14:40 +0100
SubjectRe: [PATCH v2] virtio_console: fix a crash in config_work_handler
Message-ID<t0fFU-10y-7@gated-at.bofh.it>
In reply to#1559605
On Mon, Jan 16, 2017 at 03:57:23PM +0530, Amit Shah wrote:
> On (Mon) 16 Jan 2017 [10:45:02], G. Campana wrote:
> > Using control_work instead of config_work as the 3rd argument to
> > container_of results in an invalid portdev pointer. Indeed, the work
> > structure is initialized as below:
> > 
> >     INIT_WORK(&portdev->config_work, &config_work_handler);
> > 
> > It leads to a crash when portdev->vdev is dereferenced later. This bug
> > is triggered when the guest uses a virtio-console without multiport
> > feature and receives a config_changed virtio interrupt.
> > 
> > Signed-off-by: G. Campana <gcampana@quarkslab.com>
> 
> Reviewed-by: Amit Shah <amit.shah@redhat.com>
> 
> Michael, can you please pick this up?
> 
> 		Amit

Sure.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web