From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1434288AbdDZBeT (ORCPT ); Tue, 25 Apr 2017 21:34:19 -0400 Received: from m12-16.163.com ([220.181.12.16]:50022 "EHLO m12-16.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1434273AbdDZBeP (ORCPT ); Tue, 25 Apr 2017 21:34:15 -0400 From: Heloise To: axboe@fb.com, hare@suse.com, jthumshirn@suse.de, keith.busch@intel.com, ming.lei@redhat.com, bianpan2016@163.com, dan.j.williams@intel.com, sachin.s5@samsung.com, baoyou.xie@linaro.org Cc: linux-kernel@vger.kernel.org, Heloise Subject: [PATCH] drivers:block:mtip32xx:mtip32xx:change the order of null-pointer dereference validation Date: Tue, 25 Apr 2017 18:30:16 -0700 Message-Id: <1493170216-9035-1-git-send-email-os@iscas.ac.cn> X-Mailer: git-send-email 2.1.0 X-CM-TRANSID: EMCowABXPfKv+P9YMFCeAg--.40957S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrtw1kAFy7Jr43uw1kWF1xXwb_yoWDJrb_C3 4qv3s8Zr4Du3WrAw4IkFn7Za4ktay8XF4fZFZ3tF9xJrW7KFs7Cw1kX39xGa1kWrZ8J3Z8 Cw1kArySyr1fKjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUnTSoJUUUUU== X-Originating-IP: [124.16.139.198] X-CM-SenderInfo: xnhu0vxosd3uhkbx1vxdwhqiywtou0bp/1tbiUQ-FglWBCT50iAAAsG Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Heloise 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; if (unlikely(status == PORT_IRQ_TF_ERR)) { -- 2.1.0