[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH] common/sched: address a violation of MISRA C Rule 17.7



On 25.06.24 08:34, Jan Beulich wrote:
On 25.06.2024 02:15, victorm.lira@xxxxxxx wrote:
From: Victor Lira <victorm.lira@xxxxxxx>

Rule 17.7: "The value returned by a function having non-void return type
shall be used"

This patch fixes this by adding a check to the return value.
No functional changes.

Signed-off-by: Victor Lira <victorm.lira@xxxxxxx>
---
Cc: George Dunlap <george.dunlap@xxxxxxxxxx>
Cc: Dario Faggioli <dfaggioli@xxxxxxxx>
Cc: Juergen Gross <jgross@xxxxxxxx>
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
---
  xen/common/sched/core.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index d84b65f197..e1cd824622 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -2789,7 +2789,10 @@ static int cpu_schedule_up(unsigned int cpu)
      BUG_ON(cpu >= NR_CPUS);
if ( idle_vcpu[cpu] == NULL )
-        vcpu_create(idle_vcpu[0]->domain, cpu);
+    {
+        if ( vcpu_create(idle_vcpu[0]->domain, cpu) == NULL )
+            return -ENOMEM;
+    }

First: Two such if()s want folding.

      else
          idle_vcpu[cpu]->sched_unit->res = sr;

Then: Down from here there is

     if ( idle_vcpu[cpu] == NULL )
         return -ENOMEM;

which your change is rendering redundant for at least the vcpu_create()
path.

Finally, as we're touching error handling here (and mayby more a question
to the maintainers than to you): What about sr in the error case? It's
being allocated earlier in the function, but not freed upon error. Hmm,
looks like cpu_schedule_down() is assumed to be taking care of the case,
yet then I wonder how that can assume that get_sched_res() would return
non-NULL - afaict it may be called without cpu_schedule_up() having run
first, or with it having bailed early with -ENOMEM.

Yes, you are right.

cpu_schedule_down() should bail out early in case sr is NULL.

I'll write a patch.


Juergen



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.