From patchwork Mon Sep 21 16:27:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 309424 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B60ABC43469 for ; Mon, 21 Sep 2020 16:45:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 73C392399A for ; Mon, 21 Sep 2020 16:45:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600706706; bh=OVN5lHG6TKzZGojMHc6qeWn20ax8RP+0O+7BstJuBCc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=fzWKr/oB4AkLhz2OA6//v/VRRDOdwpD5vHLCn4wuCjs3Wr1aPYiZ4AyhMyqiJjTWC +8hFcfU3rIKVeyGFOjtOIRQl8y+fm8Uc6l/C7ovW262G/lowEoxl9qbGkNylcDQdKl EU7phuQwojuZ34KwrqRKNWsSoDM2bcC6c3m8+aWk= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729728AbgIUQpF (ORCPT ); Mon, 21 Sep 2020 12:45:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:50410 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729715AbgIUQou (ORCPT ); Mon, 21 Sep 2020 12:44:50 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 346DB2076B; Mon, 21 Sep 2020 16:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600706689; bh=OVN5lHG6TKzZGojMHc6qeWn20ax8RP+0O+7BstJuBCc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Xw6KKyvforWeGsm7DoC68M+JW32s9of2rI/HhTtqhqxH2ib7zeZOvFeHlq7ZSCtL5 TOWPfZlJAbGrrHhDh23AM0jJ55xZ0jO/5+nnoiCabMKsYxp09A1+3875wYrWh3rJnM JHd6fMQ1rLXUrbOva3CPqB0JeRsyMGPEISR0I7Pc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jason Yan , John Garry , Dan Carpenter , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 5.8 053/118] scsi: libsas: Fix error path in sas_notify_lldd_dev_found() Date: Mon, 21 Sep 2020 18:27:45 +0200 Message-Id: <20200921162038.799926505@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200921162036.324813383@linuxfoundation.org> References: <20200921162036.324813383@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Dan Carpenter [ Upstream commit 244359c99fd90f1c61c3944f93250f8219435c75 ] In sas_notify_lldd_dev_found(), if we can't allocate the necessary resources, then it seems like the wrong thing to mark the device as found and to increment the reference count. None of the callers ever drop the reference in that situation. [mkp: tweaked commit desc based on feedback from John] Link: https://lore.kernel.org/r/20200905125836.GF183976@mwanda Fixes: 735f7d2fedf5 ("[SCSI] libsas: fix domain_device leak") Reviewed-by: Jason Yan Acked-by: John Garry Signed-off-by: Dan Carpenter Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/libsas/sas_discover.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c index daf951b0b3f55..13ad2b3d314e2 100644 --- a/drivers/scsi/libsas/sas_discover.c +++ b/drivers/scsi/libsas/sas_discover.c @@ -182,10 +182,11 @@ int sas_notify_lldd_dev_found(struct domain_device *dev) pr_warn("driver on host %s cannot handle device %016llx, error:%d\n", dev_name(sas_ha->dev), SAS_ADDR(dev->sas_addr), res); + return res; } set_bit(SAS_DEV_FOUND, &dev->state); kref_get(&dev->kref); - return res; + return 0; }