All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] memory: fix XSA-158 fix
@ 2015-12-09 10:53 Jan Beulich
  2015-12-09 11:02 ` Ian Campbell
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Beulich @ 2015-12-09 10:53 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 1434 bytes --]

For one the uses of domu_max_order and ptdom_max_order were swapped.

And then gcc warns about an unused result of a __must_check function
in the control part of a conditional expression when both other
expressions can be determined by the compiler to produce the same value
(see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68039), which happens
when HAS_PASSTHROUGH is undefined (i.e. for ARM on 4.4 and older).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -55,8 +55,6 @@ static unsigned int __read_mostly ctldom
 static unsigned int __read_mostly hwdom_max_order = CONFIG_HWDOM_MAX_ORDER;
 #ifdef HAS_PASSTHROUGH
 static unsigned int __read_mostly ptdom_max_order = CONFIG_PTDOM_MAX_ORDER;
-#else
-# define ptdom_max_order domu_max_order
 #endif
 static void __init parse_max_order(const char *s)
 {
@@ -75,8 +73,12 @@ custom_param("memop-max-order", parse_ma
 
 static unsigned int max_order(const struct domain *d)
 {
-    unsigned int order = cache_flush_permitted(d) ? domu_max_order
-                                                  : ptdom_max_order;
+    unsigned int order = domu_max_order;
+
+#ifdef HAS_PASSTHROUGH
+    if ( cache_flush_permitted(d) && order < ptdom_max_order )
+        order = ptdom_max_order;
+#endif
 
     if ( is_control_domain(d) && order < ctldom_max_order )
         order = ctldom_max_order;




[-- Attachment #2: gcc-bug-68039-workaround.patch --]
[-- Type: text/plain, Size: 1455 bytes --]

memory: fix XSA-158 fix

For one the uses of domu_max_order and ptdom_max_order were swapped.

And then gcc warns about an unused result of a __must_check function
in the control part of a conditional expression when both other
expressions can be determined by the compiler to produce the same value
(see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68039), which happens
when HAS_PASSTHROUGH is undefined (i.e. for ARM on 4.4 and older).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -55,8 +55,6 @@ static unsigned int __read_mostly ctldom
 static unsigned int __read_mostly hwdom_max_order = CONFIG_HWDOM_MAX_ORDER;
 #ifdef HAS_PASSTHROUGH
 static unsigned int __read_mostly ptdom_max_order = CONFIG_PTDOM_MAX_ORDER;
-#else
-# define ptdom_max_order domu_max_order
 #endif
 static void __init parse_max_order(const char *s)
 {
@@ -75,8 +73,12 @@ custom_param("memop-max-order", parse_ma
 
 static unsigned int max_order(const struct domain *d)
 {
-    unsigned int order = cache_flush_permitted(d) ? domu_max_order
-                                                  : ptdom_max_order;
+    unsigned int order = domu_max_order;
+
+#ifdef HAS_PASSTHROUGH
+    if ( cache_flush_permitted(d) && order < ptdom_max_order )
+        order = ptdom_max_order;
+#endif
 
     if ( is_control_domain(d) && order < ctldom_max_order )
         order = ctldom_max_order;

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

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

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

* Re: [PATCH] memory: fix XSA-158 fix
  2015-12-09 10:53 [PATCH] memory: fix XSA-158 fix Jan Beulich
@ 2015-12-09 11:02 ` Ian Campbell
  2015-12-09 11:10   ` Jan Beulich
  0 siblings, 1 reply; 3+ messages in thread
From: Ian Campbell @ 2015-12-09 11:02 UTC (permalink / raw)
  To: Jan Beulich, xen-devel

On Wed, 2015-12-09 at 03:53 -0700, Jan Beulich wrote:
> For one the uses of domu_max_order and ptdom_max_order were swapped.

> And then gcc warns about an unused result of a __must_check function
> in the control part of a conditional expression when both other
> expressions can be determined by the compiler to produce the same value
> (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68039), which happens
> when HAS_PASSTHROUGH is undefined (i.e. for ARM on 4.4 and older).

Should we issue an updated 158 for all this?

> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Ian Campbell <ian.campbell@citrix.com>

> 
> --- a/xen/common/memory.c
> +++ b/xen/common/memory.c
> @@ -55,8 +55,6 @@ static unsigned int __read_mostly ctldom
>  static unsigned int __read_mostly hwdom_max_order = CONFIG_HWDOM_MAX_ORDER;
>  #ifdef HAS_PASSTHROUGH
>  static unsigned int __read_mostly ptdom_max_order = CONFIG_PTDOM_MAX_ORDER;
> -#else
> -# define ptdom_max_order domu_max_order
>  #endif
>  static void __init parse_max_order(const char *s)
>  {
> @@ -75,8 +73,12 @@ custom_param("memop-max-order", parse_ma
>  
>  static unsigned int max_order(const struct domain *d)
>  {
> -    unsigned int order = cache_flush_permitted(d) ? domu_max_order
> -                                                  : ptdom_max_order;
> +    unsigned int order = domu_max_order;
> +
> +#ifdef HAS_PASSTHROUGH
> +    if ( cache_flush_permitted(d) && order < ptdom_max_order )
> +        order = ptdom_max_order;
> +#endif
>  
>      if ( is_control_domain(d) && order < ctldom_max_order )
>          order = ctldom_max_order;
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

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

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

* Re: [PATCH] memory: fix XSA-158 fix
  2015-12-09 11:02 ` Ian Campbell
@ 2015-12-09 11:10   ` Jan Beulich
  0 siblings, 0 replies; 3+ messages in thread
From: Jan Beulich @ 2015-12-09 11:10 UTC (permalink / raw)
  To: Ian Campbell; +Cc: xen-devel

>>> On 09.12.15 at 12:02, <ian.campbell@citrix.com> wrote:
> On Wed, 2015-12-09 at 03:53 -0700, Jan Beulich wrote:
>> For one the uses of domu_max_order and ptdom_max_order were swapped.
> 
>> And then gcc warns about an unused result of a __must_check function
>> in the control part of a conditional expression when both other
>> expressions can be determined by the compiler to produce the same value
>> (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68039), which happens
>> when HAS_PASSTHROUGH is undefined (i.e. for ARM on 4.4 and older).
> 
> Should we issue an updated 158 for all this?

I guess we should, yes.

Jan

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

end of thread, other threads:[~2015-12-09 11:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-09 10:53 [PATCH] memory: fix XSA-158 fix Jan Beulich
2015-12-09 11:02 ` Ian Campbell
2015-12-09 11:10   ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.