Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3514392ybt; Tue, 23 Jun 2020 04:19:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUxK4qPfF0+UqVyiP0cuaWisvzNoL85eSEkTZn1LaQTAi6DoZ+3DZOu3MXZaddkC+oXFAA X-Received: by 2002:a17:906:19c7:: with SMTP id h7mr19393749ejd.403.1592911169034; Tue, 23 Jun 2020 04:19:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592911169; cv=none; d=google.com; s=arc-20160816; b=f1upbpwnKses+3ADqWOm9F36tdxvMr+rqOGRb0ZhPHhNeIZp8AJs6vztUNVKM6W0gp 0n1PtlYCP9zUozJEAh2Ub3cQLJafLWzub8cheMKdDoZsnTkdKru+3J0ASdu1Ypq87h5P xmnMX/L5vruKlHr5XMr4qhfIyRjzoAsQOoW0WGgKYKt860BNwsZrlrpua++xUHncMEzU sbPza2o4j41H+WsytpzqeLBWe4LWu6NSuarb83R/P5Ek8m/i6ojAriVdrD/QsE5/OrZa ptroPFNBSGmPhI8iNgDZiWRoEf9aA9BxNO2TZLNHQgXQsmoZDDwCyiSTZvFrH9hdqwZM 8nwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=savl7QXZ6IjbFf9WkardrX7IZ70lUWUyJceC5volDbg=; b=lJg9lgSPckCPA0wGGfrEb4LS5WC6QEb2kvLF9sK+twPhhvlJBBW/1rHtaJHfFZEd3x khZjL+5dl/o4xC2HPBI5LsACknDD9t0r8uQLWO1hXijRD6QOtOT8fxMNpAZfNbypxfMq znH+Z2XQpYeYQk6zdetQpdWr1ZWZGiOmbON2PEATsZjruNEznbyKZkOoE3bevaOZe/Dp VXq5nSENW8nXuCpobBXDywQqb7RwBauK708HqEdt5OiSvM/S/TEGEcV6sTevbslSJunm s4PSIwnz4vW6Zyqv/LmPyqKId+CAyOD3hGW77gJdsTq6eGUi4uw2/GbakvbTytDT5Utc 8uow== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a11si11421397eds.271.2020.06.23.04.19.06; Tue, 23 Jun 2020 04:19:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732542AbgFWLRQ (ORCPT + 99 others); Tue, 23 Jun 2020 07:17:16 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:49034 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732525AbgFWLQz (ORCPT ); Tue, 23 Jun 2020 07:16:55 -0400 Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 193BF6F357166CCBA0C2; Tue, 23 Jun 2020 19:16:52 +0800 (CST) Received: from huawei.com (10.67.174.156) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.487.0; Tue, 23 Jun 2020 19:16:43 +0800 From: Chen Tao To: CC: , , Subject: [PATCH -next] afs: Fix the memory leak in afs_mkdir Date: Tue, 23 Jun 2020 19:15:28 +0800 Message-ID: <20200623111528.205681-1-chentao107@huawei.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.67.174.156] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fix the memory leak in afs_mkdir not freeing scb in error path. Fixes: a58823ac45896 ("afs: Fix application of status and callback to be under same lock") Signed-off-by: Chen Tao --- fs/afs/dir.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fs/afs/dir.c b/fs/afs/dir.c index d1e1caa23c8b..ab5472ad1da8 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c @@ -1599,17 +1599,17 @@ static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, if (dentry->d_name.len >= AFSNAMEMAX) goto error; - key = afs_request_key(dvnode->volume->cell); - if (IS_ERR(key)) { - ret = PTR_ERR(key); - goto error; - } - ret = -ENOMEM; scb = kcalloc(2, sizeof(struct afs_status_cb), GFP_KERNEL); if (!scb) goto error_scb; + key = afs_request_key(dvnode->volume->cell); + if (IS_ERR(key)) { + ret = PTR_ERR(key); + goto error_scb; + } + ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { data_version = dvnode->status.data_version + 1; @@ -1645,10 +1645,10 @@ static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, _leave(" = 0"); return 0; -error_scb: - kfree(scb); error_key: key_put(key); +error_scb: + kfree(scb); error: d_drop(dentry); _leave(" = %d", ret); -- 2.22.0