xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/2] xen-20160614-tag
@ 2016-06-14 15:04 Stefano Stabellini
  2016-06-14 15:05 ` [PULL 1/2] xen/blkif: avoid double access to any shared ring request fields Stefano Stabellini
  2016-06-14 16:10 ` [PULL 0/2] xen-20160614-tag Peter Maydell
  0 siblings, 2 replies; 4+ messages in thread
From: Stefano Stabellini @ 2016-06-14 15:04 UTC (permalink / raw)
  To: peter.maydell; +Cc: anthony.perard, sstabellini, qemu-devel, xen-devel

The following changes since commit 55e5c3a2d2433bd2e1e635a7ba395f1c70341794:

  Merge remote-tracking branch 'remotes/berrange/tags/qcrypto-next-2016-06-13-v1' into staging (2016-06-13 13:05:02 +0100)

are available in the git repository at:


  git://xenbits.xen.org/people/sstabellini/qemu-dm.git tags/xen-20160614-tag

for you to fetch changes up to b1b23e5bbfb66d9401e2c2b0646fb721d94a3f83:

  xen: Clean up includes (2016-06-14 15:37:43 +0100)

----------------------------------------------------------------
Xen 2016/06/14

----------------------------------------------------------------
Jan Beulich (1):
      xen/blkif: avoid double access to any shared ring request fields

Peter Maydell (1):
      xen: Clean up includes

 hw/block/xen_blkif.h | 12 ++++++------
 hw/block/xen_disk.c  |  2 ++
 hw/usb/xen-usb.c     |  5 +----
 include/hw/xen/xen.h |  1 -
 4 files changed, 9 insertions(+), 11 deletions(-)

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PULL 1/2] xen/blkif: avoid double access to any shared ring request fields
  2016-06-14 15:04 [PULL 0/2] xen-20160614-tag Stefano Stabellini
@ 2016-06-14 15:05 ` Stefano Stabellini
  2016-06-14 15:05   ` [PULL 2/2] xen: Clean up includes Stefano Stabellini
  2016-06-14 16:10 ` [PULL 0/2] xen-20160614-tag Peter Maydell
  1 sibling, 1 reply; 4+ messages in thread
From: Stefano Stabellini @ 2016-06-14 15:05 UTC (permalink / raw)
  To: peter.maydell
  Cc: anthony.perard, sstabellini, qemu-devel, Jan Beulich, xen-devel

From: Jan Beulich <JBeulich@suse.com>

Commit f9e98e5d7a ("xen/blkif: Avoid double access to
src->nr_segments") didn't go far enough: src->operation is also being
used twice. And nothing was done to prevent the compiler from using the
source side of the copy done by blk_get_request() (granted that's very
unlikely).

Move the barrier()s up, and add another one to blk_get_request().

Note that for completing XSA-155, the barrier() getting added to
blk_get_request() would suffice, and hence the changes to xen_blkif.h
are more like just cleanup. And since, as said, the unpatched code
getting compiled to something vulnerable is very unlikely (and not
observed in practice), this isn't being viewed as a new security issue.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
---
 hw/block/xen_blkif.h | 12 ++++++------
 hw/block/xen_disk.c  |  2 ++
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/hw/block/xen_blkif.h b/hw/block/xen_blkif.h
index c68487cb..e3b133b 100644
--- a/hw/block/xen_blkif.h
+++ b/hw/block/xen_blkif.h
@@ -79,14 +79,14 @@ static inline void blkif_get_x86_32_req(blkif_request_t *dst, blkif_x86_32_reque
 	dst->handle = src->handle;
 	dst->id = src->id;
 	dst->sector_number = src->sector_number;
-	if (src->operation == BLKIF_OP_DISCARD) {
+	/* Prevent the compiler from using src->... instead. */
+	barrier();
+	if (dst->operation == BLKIF_OP_DISCARD) {
 		struct blkif_request_discard *s = (void *)src;
 		struct blkif_request_discard *d = (void *)dst;
 		d->nr_sectors = s->nr_sectors;
 		return;
 	}
-	/* prevent the compiler from optimizing the code and using src->nr_segments instead */
-	barrier();
 	if (n > dst->nr_segments)
 		n = dst->nr_segments;
 	for (i = 0; i < n; i++)
@@ -102,14 +102,14 @@ static inline void blkif_get_x86_64_req(blkif_request_t *dst, blkif_x86_64_reque
 	dst->handle = src->handle;
 	dst->id = src->id;
 	dst->sector_number = src->sector_number;
-	if (src->operation == BLKIF_OP_DISCARD) {
+	/* Prevent the compiler from using src->... instead. */
+	barrier();
+	if (dst->operation == BLKIF_OP_DISCARD) {
 		struct blkif_request_discard *s = (void *)src;
 		struct blkif_request_discard *d = (void *)dst;
 		d->nr_sectors = s->nr_sectors;
 		return;
 	}
-	/* prevent the compiler from optimizing the code and using src->nr_segments instead */
-	barrier();
 	if (n > dst->nr_segments)
 		n = dst->nr_segments;
 	for (i = 0; i < n; i++)
diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c
index 064c116..cf57814 100644
--- a/hw/block/xen_disk.c
+++ b/hw/block/xen_disk.c
@@ -679,6 +679,8 @@ static int blk_get_request(struct XenBlkDev *blkdev, struct ioreq *ioreq, RING_I
                              RING_GET_REQUEST(&blkdev->rings.x86_64_part, rc));
         break;
     }
+    /* Prevent the compiler from accessing the on-ring fields instead. */
+    barrier();
     return 0;
 }
 
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PULL 2/2] xen: Clean up includes
  2016-06-14 15:05 ` [PULL 1/2] xen/blkif: avoid double access to any shared ring request fields Stefano Stabellini
@ 2016-06-14 15:05   ` Stefano Stabellini
  0 siblings, 0 replies; 4+ messages in thread
From: Stefano Stabellini @ 2016-06-14 15:05 UTC (permalink / raw)
  To: peter.maydell; +Cc: anthony.perard, sstabellini, qemu-devel, xen-devel

From: Peter Maydell <peter.maydell@linaro.org>

Clean up includes so that osdep.h is included first and headers
which it implies are not included manually.

This commit was created with scripts/clean-includes.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
---
 hw/usb/xen-usb.c     | 5 +----
 include/hw/xen/xen.h | 1 -
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c
index 664df04..8fa47ed 100644
--- a/hw/usb/xen-usb.c
+++ b/hw/usb/xen-usb.c
@@ -19,13 +19,10 @@
  *  GNU GPL, version 2 or (at your option) any later version.
  */
 
+#include "qemu/osdep.h"
 #include <libusb.h>
-#include <stdio.h>
-#include <sys/types.h>
 #include <sys/mman.h>
-#include <sys/time.h>
 
-#include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "qemu/config-file.h"
 #include "hw/sysbus.h"
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 6365483..b2cd992 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -8,7 +8,6 @@
  */
 
 #include "qemu-common.h"
-#include "qemu/typedefs.h"
 #include "exec/cpu-common.h"
 #include "hw/irq.h"
 
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PULL 0/2] xen-20160614-tag
  2016-06-14 15:04 [PULL 0/2] xen-20160614-tag Stefano Stabellini
  2016-06-14 15:05 ` [PULL 1/2] xen/blkif: avoid double access to any shared ring request fields Stefano Stabellini
@ 2016-06-14 16:10 ` Peter Maydell
  1 sibling, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2016-06-14 16:10 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Anthony PERARD, QEMU Developers, xen-devel

On 14 June 2016 at 16:04, Stefano Stabellini <sstabellini@kernel.org> wrote:
> The following changes since commit 55e5c3a2d2433bd2e1e635a7ba395f1c70341794:
>
>   Merge remote-tracking branch 'remotes/berrange/tags/qcrypto-next-2016-06-13-v1' into staging (2016-06-13 13:05:02 +0100)
>
> are available in the git repository at:
>
>
>   git://xenbits.xen.org/people/sstabellini/qemu-dm.git tags/xen-20160614-tag
>
> for you to fetch changes up to b1b23e5bbfb66d9401e2c2b0646fb721d94a3f83:
>
>   xen: Clean up includes (2016-06-14 15:37:43 +0100)
>
> ----------------------------------------------------------------
> Xen 2016/06/14
>
> ----------------------------------------------------------------
> Jan Beulich (1):
>       xen/blkif: avoid double access to any shared ring request fields
>
> Peter Maydell (1):
>       xen: Clean up includes
>
>  hw/block/xen_blkif.h | 12 ++++++------
>  hw/block/xen_disk.c  |  2 ++
>  hw/usb/xen-usb.c     |  5 +----
>  include/hw/xen/xen.h |  1 -
>  4 files changed, 9 insertions(+), 11 deletions(-)

Applied, thanks.

-- PMM

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-06-14 16:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-14 15:04 [PULL 0/2] xen-20160614-tag Stefano Stabellini
2016-06-14 15:05 ` [PULL 1/2] xen/blkif: avoid double access to any shared ring request fields Stefano Stabellini
2016-06-14 15:05   ` [PULL 2/2] xen: Clean up includes Stefano Stabellini
2016-06-14 16:10 ` [PULL 0/2] xen-20160614-tag Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).