On 04/25/2017 06:30 PM, Heloise wrote:
> Signed-off-by: Heloise <o...@iscas.ac.cn>
> 
> mtip_async_complete() uses the variable port 'port->dd'at the begining, then
> validates null-pointer dereference of port 'unlikely(!port)'. Change the order
> of validation.
> ---
>  drivers/block/mtip32xx/mtip32xx.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/block/mtip32xx/mtip32xx.c 
> b/drivers/block/mtip32xx/mtip32xx.c
> index 1d1dc11..feed61a 100644
> --- a/drivers/block/mtip32xx/mtip32xx.c
> +++ b/drivers/block/mtip32xx/mtip32xx.c
> @@ -228,10 +228,13 @@ static struct mtip_cmd *mtip_cmd_from_tag(struct 
> driver_data *dd,
>  static void mtip_async_complete(struct mtip_port *port,
>                               int tag, struct mtip_cmd *cmd, int status)
>  {
> +     if (unlikely(!port))
> +             return;
> +
>       struct driver_data *dd = port->dd;
>       struct request *rq;
>  
> -     if (unlikely(!dd) || unlikely(!port))
> +     if (unlikely(!dd))
>               return;

Doesn't matter, since 'dd' isn't dereferenced before checking if
'port' is NULL.

-- 
Jens Axboe

Reply via email to