Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752485AbcLCNFE (ORCPT ); Sat, 3 Dec 2016 08:05:04 -0500 Received: from m50-138.163.com ([123.125.50.138]:49743 "EHLO m50-138.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751175AbcLCNFC (ORCPT ); Sat, 3 Dec 2016 08:05:02 -0500 From: Pan Bian To: Steve Wise , Doug Ledford , Sean Hefty , Hal Rosenstock , linux-rdma@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Pan Bian Subject: [PATCH 1/1] infiniband: hw: cxgb4: set errno on failure Date: Sat, 3 Dec 2016 21:04:35 +0800 Message-Id: <1480770275-6155-1-git-send-email-bianpan201602@163.com> X-Mailer: git-send-email 1.9.1 X-CM-TRANSID: C9GowACHjyfjwkJYuu4vIQ--.19986S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7Gw4DJF4xJw1fZF15Kr1rJFb_yoW8JF1xp3 yfGFyftayUGF42qr1jvr47uFW5W3WUu3yrur97K3s0v3Z8Zr4YvFyDKryaqayUurykCr4U Jr4a9rW8CF45ur7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07b-sjUUUUUU= X-Originating-IP: [222.131.246.88] X-CM-SenderInfo: held01tdqsiiqwqsqiywtou0bp/1tbiWAs14FUL-BBYfAABsR Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1203 Lines: 34 From: Pan Bian In function c4iw_rdev_open(), the value of return variable err should be negative on errors. However, when the call to __get_free_page() returns a NULL pointer, its value is not set to "-ENOMEM" and keeps 0. 0 means no error. And thus, the behavior of its caller may be misled. This patch fixes the bug. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188821 Signed-off-by: Pan Bian --- drivers/infiniband/hw/cxgb4/device.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/cxgb4/device.c b/drivers/infiniband/hw/cxgb4/device.c index 93e3d27..b99dc9e 100644 --- a/drivers/infiniband/hw/cxgb4/device.c +++ b/drivers/infiniband/hw/cxgb4/device.c @@ -828,8 +828,10 @@ static int c4iw_rdev_open(struct c4iw_rdev *rdev) } rdev->status_page = (struct t4_dev_status_page *) __get_free_page(GFP_KERNEL); - if (!rdev->status_page) + if (!rdev->status_page) { + err = -ENOMEM; goto destroy_ocqp_pool; + } rdev->status_page->qp_start = rdev->lldi.vr->qp.start; rdev->status_page->qp_size = rdev->lldi.vr->qp.size; rdev->status_page->cq_start = rdev->lldi.vr->cq.start; -- 1.9.1