From patchwork Wed Mar 15 06:21:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Kuai X-Patchwork-Id: 70018 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp2168430wrd; Tue, 14 Mar 2023 23:37:08 -0700 (PDT) X-Google-Smtp-Source: AK7set+qCZwnWzoSOL0EovPuBTBFjSe1bbudUhFFbDCdGqQ7vtqDf6QXpBzJjaXrn7uqNIZdtUSO X-Received: by 2002:a17:90a:19:b0:23a:ad68:25a7 with SMTP id 25-20020a17090a001900b0023aad6825a7mr32986290pja.2.1678862228441; Tue, 14 Mar 2023 23:37:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678862228; cv=none; d=google.com; s=arc-20160816; b=fUJX++T0F0MwUqbwym8Ejzrz5mGT6Wng6mvDt8q3bD5rJgUUf5wieZs8tHgDnAukYm xk3NQebVGtmQAZJQkYXVIA9HdNsOHskhNxsnegBB8ZRkoaGVHsl4T9cumO2/YFVYNors KGg5OdtQtiz3w0HfhzV3TYMNZlwiu+2bv5lvpNuQmCQW+YDm8pga2cfqi82U1OFXbOz/ NGEv/FFJ+1VsUUY9YMn9tq+c2Pvi4myemsByKSf8GDz9juZjRhqmIuMHc/1p+3vtGR15 WiOy2VfDcEePRU9ypZVkC8QzEFhmXkv3S25UTVpkmlmObU63wUGqYapzM4uu1giH/X9h 5K+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=NRA5lSU2/K++Yw70wv6GXLMRCw0Ct9ZLAWeknboy7AI=; b=TFHpjOOxQIcAlaZWgojq4o+haPkzyt1ej93STywMGuyWSnhn9JmRWMgmTQzh3RjNkS OF8ydD+CiTORPudmgVn24byQGRmA9ZxN84kusrmX7DK0OcvApH6Ib2fj9xPUC1OVUhVV uPbOL6i1DcuQULvnwfIctF+5XT9Vdo4LVpbf4Vj8Iwml9PlaS3gjwVsR1E9ZZjHsNrFS Nh7Dy29odp9umqSvLerICYfYrEfDjNQBqqEkyQfXZsqa50A/6KOAPxR7pIOVZgd7DRcK FtEBkvK5ieIoaUIWp2zchaIIQMUdcNGbM16/RqJQWmC08sBtqrKPgGg3bkORH3Mlz4u7 Dzwg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a6-20020a631a46000000b004f2bbbca525si4012454pgm.435.2023.03.14.23.36.55; Tue, 14 Mar 2023 23:37:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230348AbjCOGWy (ORCPT + 99 others); Wed, 15 Mar 2023 02:22:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231191AbjCOGWr (ORCPT ); Wed, 15 Mar 2023 02:22:47 -0400 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48CA52FCF9; Tue, 14 Mar 2023 23:22:41 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.169]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Pc0gJ6W5qz4f4fBy; Wed, 15 Mar 2023 14:22:36 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.127.227]) by APP3 (Coremail) with SMTP id _Ch0CgDX0R8tZBFkjiTNEw--.32962S4; Wed, 15 Mar 2023 14:22:38 +0800 (CST) From: Yu Kuai To: jejb@linux.ibm.com, martin.petersen@oracle.com, bvanassche@acm.org, hare@suse.de, axboe@kernel.dk, sconnor@purestorage.com, michael.christie@oracle.com, brian@purestorage.com, yukuai3@huawei.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, yukuai1@huaweicloud.com, yi.zhang@huawei.com, yangerkun@huawei.com Subject: [PATCH -next] scsi: scsi_dh_alua: fix memleak for 'qdata' in alua_activate() Date: Wed, 15 Mar 2023 14:21:54 +0800 Message-Id: <20230315062154.668812-1-yukuai1@huaweicloud.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgDX0R8tZBFkjiTNEw--.32962S4 X-Coremail-Antispam: 1UD129KBjvJXoW7Kw4UZr13ZrW3Gr4UArWxtFb_yoW8Aw18pr Z8Kas8CrW8XF4UuFWjyF13JFyY9FW8uFy8JFWft34rGFy8GFyUt347Cr1jgrWDJF97Jry7 Ar1UCFyjqryDJw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvY14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2 Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r43 MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY6xkF7I 0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Zr0_Wr1UMIIF0xvEx4A2jsIE14v2 6r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0J UZa9-UUUUU= X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-CFilter-Loop: Reflected X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,KHOP_HELO_FCRDNS, MAY_BE_FORGED,SPF_HELO_NONE,SPF_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760414639979087124?= X-GMAIL-MSGID: =?utf-8?q?1760414639979087124?= From: Yu Kuai If alua_rtpg_queue() failed from alua_activate(), then 'qdata' is not freed, which will cause following memleak: unreferenced object 0xffff88810b2c6980 (size 32): comm "kworker/u16:2", pid 635322, jiffies 4355801099 (age 1216426.076s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 40 39 24 c1 ff ff ff ff 00 f8 ea 0a 81 88 ff ff @9$............. backtrace: [<0000000098f3a26d>] alua_activate+0xb0/0x320 [<000000003b529641>] scsi_dh_activate+0xb2/0x140 [<000000007b296db3>] activate_path_work+0xc6/0xe0 [dm_multipath] [<000000007adc9ace>] process_one_work+0x3c5/0x730 [<00000000c457a985>] worker_thread+0x93/0x650 [<00000000cb80e628>] kthread+0x1ba/0x210 [<00000000a1e61077>] ret_from_fork+0x22/0x30 Fix the problem by freeing 'qdata' in error path. Fixes: 625fe857e4fa ("scsi: scsi_dh_alua: Check scsi_device_get() return value") Signed-off-by: Yu Kuai Reviewed-by: Benjamin Block Reviewed-by: Bart Van Assche --- drivers/scsi/device_handler/scsi_dh_alua.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 362fa631f39b..a226dc1b65d7 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -1145,10 +1145,12 @@ static int alua_activate(struct scsi_device *sdev, rcu_read_unlock(); mutex_unlock(&h->init_mutex); - if (alua_rtpg_queue(pg, sdev, qdata, true)) + if (alua_rtpg_queue(pg, sdev, qdata, true)) { fn = NULL; - else + } else { + kfree(qdata); err = SCSI_DH_DEV_OFFLINED; + } kref_put(&pg->kref, release_port_group); out: if (fn)