• J
    i2c-amd8111: Add proper error handling · 9cb2c272
    Julia Lawall 提交于
    The functions the functions amd_ec_wait_write and amd_ec_wait_read have an
    unsigned return type, but return a negative constant to indicate an error
    condition.
    
    A sematic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)
    
    // <smpl>
    @exists@
    identifier f;
    constant C;
    @@
    
     unsigned f(...)
     { <+...
    *  return -C;
     ...+> }
    // </smpl>
    
    Fixing amd_ec_wait_write and amd_ec_wait_read leads to the need to adjust
    the return type of the functions amd_ec_write and amd_ec_read, which are
    the only functions that call amd_ec_wait_write and amd_ec_wait_read.
    amd_ec_write and amd_ec_read, in turn, are only called from within the
    function amd8111_access, which already returns a signed typed value.  Each
    of the calls to amd_ec_write and amd_ec_read are updated using the
    following semantic patch:
    
    // <smpl>
    @@
    @@
    
    + status = amd_ec_write
    - amd_ec_write
      (...);
    + if (status) return status;
    
    @@
    @@
    
    + status = amd_ec_read
    - amd_ec_read
      (...);
    + if (status) return status;
    // </smpl>
    
    The patch also adds the declaration of the status variable.
    Signed-off-by: NJulia Lawall <julia@diku.dk>
    Signed-off-by: NJean Delvare <khali@linux-fr.org>
    9cb2c272
i2c-amd8111.c 12.2 KB