Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1558945 > unrolled thread
| Started by | "G. Campana" <gcampana@quarkslab.com> |
|---|---|
| First post | 2017-01-14 12:00 +0100 |
| Last post | 2017-01-16 14:40 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to linux.kernel
[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
| From | "G. Campana" <gcampana@quarkslab.com> |
|---|---|
| Date | 2017-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]
| From | Amit Shah <amit.shah@redhat.com> |
|---|---|
| Date | 2017-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]
| From | "G. Campana" <gcampana@quarkslab.com> |
|---|---|
| Date | 2017-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]
| From | Amit Shah <amit.shah@redhat.com> |
|---|---|
| Date | 2017-01-16 11:30 +0100 |
| Subject | Re: [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]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2017-01-16 14:40 +0100 |
| Subject | Re: [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