From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935883AbdEVQhu (ORCPT ); Mon, 22 May 2017 12:37:50 -0400 Received: from gateway20.websitewelcome.com ([192.185.69.18]:32741 "EHLO gateway20.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934440AbdEVQhs (ORCPT ); Mon, 22 May 2017 12:37:48 -0400 Date: Mon, 22 May 2017 11:03:28 -0500 From: "Gustavo A. R. Silva" To: "James E.J. Bottomley" , "Martin K. Petersen" Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" Subject: [PATCH] scsi: cxgbi: add null check before pointer dereference Message-ID: <20170522160328.GA15668@embeddedgus> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 189.152.160.17 X-Exim-ID: 1dCpnt-000IAR-1v X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (embeddedgus) [189.152.160.17]:51952 X-Source-Auth: garsilva@embeddedor.com X-Email-Count: 4 X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add null check before dereferencing pointer _sg_ inside sg_next() Addresses-Coverity-ID: 1364845 Signed-off-by: Gustavo A. R. Silva --- drivers/scsi/cxgbi/libcxgbi.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c index bd7d39e..6119ddf 100644 --- a/drivers/scsi/cxgbi/libcxgbi.c +++ b/drivers/scsi/cxgbi/libcxgbi.c @@ -1256,15 +1256,18 @@ void cxgbi_ddp_set_one_ppod(struct cxgbi_pagepod *ppod, *sg_off = offset; } - if (offset == len) { - offset = 0; - sg = sg_next(sg); - if (sg) { - addr = sg_dma_address(sg); - len = sg_dma_len(sg); + if (sg) { + if (offset == len) { + offset = 0; + sg = sg_next(sg); + if (sg) { + addr = sg_dma_address(sg); + len = sg_dma_len(sg); + } } - } - ppod->addr[i] = sg ? cpu_to_be64(addr + offset) : 0ULL; + ppod->addr[i] = cpu_to_be64(addr + offset); + } else + ppod->addr[i] = 0ULL; } EXPORT_SYMBOL_GPL(cxgbi_ddp_set_one_ppod); -- 2.5.0