• J
    PCI: hotplug: ensure a consistent return value in error case · 83d05710
    Julia Lawall 提交于
    Typically, the return value desired for the failure of a function with an
    integer return value is a negative integer.  In these cases, the return
    value is sometimes a negative integer and sometimes 0, due to a subsequent
    initialization of the return variable within the loop.
    
    A simplified version of the semantic match that finds this problem is:
    (http://coccinelle.lip6.fr/)
    
    //<smpl>
    @r exists@
    identifier ret;
    position p;
    constant C;
    expression e1,e3,e4;
    statement S;
    @@
    
    ret = -C
    ... when != ret = e3
        when any
    if@p (...) S
    ... when any
    if (\(ret != 0\|ret < 0\|ret > 0\) || ...) { ... return ...; }
    ... when != ret = e3
        when any
    *if@p (...)
    {
      ... when != ret = e4
      return ret;
    }
    //</smpl>
    
    [bhelgaas: squashed into one patch]
    Signed-off-by: NJulia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    83d05710
cpqphp_core.c 35.7 KB