Message ID | 20221110094639.3086409-2-roberto.sassu@huaweicloud.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp47266wru; Thu, 10 Nov 2022 01:48:33 -0800 (PST) X-Google-Smtp-Source: AMsMyM5RtbJqQNEes8LMmHMivPSYB/Y8kER4nuVkfCJNSHfLe8CBO3QiKb9Zsl2MA8v/aupUAaMX X-Received: by 2002:a63:1303:0:b0:46f:b44b:3519 with SMTP id i3-20020a631303000000b0046fb44b3519mr48664556pgl.278.1668073713015; Thu, 10 Nov 2022 01:48:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668073713; cv=none; d=google.com; s=arc-20160816; b=cKAhu3qiuVZ5BQFX6LwLR7z/HBkncOkiMxpaZHvxO9Vqzicffn0cLOkG5ktI6l0xXs 6xlFb698WDaYaab+sX65vMYSnHFZ23IPUPyV64iFkGmCmxoVzycfdFO995+dGio4piyY G+r59MEAAlFEAv0/aAVUJbleaTJkWbEc4E6xunok6T16ObfRFm+c1Bie3zFgutnSjBKz oTP0qdHbkwqnD0k0IX9+BuxBi6PBFHcA1uOYQ360jynh+Fhky/XP1NsCScvPo76MEFUH nebPcpaFA6j01FCumU00D2dmarorChVbyXdrdq5UYtCOAfBrKn8L4BIQj3vND1NaSvRu LvLg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=2VAAlOSXBcPOlersHd3DI/54d1UBtbj388Atwy2mc6s=; b=LiFDCcyP1Hlsub3ASQ/TAjjOswrjiGdXlQpzU8O/O6p+s3XS+hj+yLCK33zq9cd1PS Me7xJbSIe4xWXg48B1dcVX2RmRgcvcXkGhi0tZd6OGdZFWahOfTb2gFXsqIKwYRoeJel ogvREocLAn6PvBDpxU1mieLta1RImVu4pSsBWsYqW2RnVeK1jsjTVS9C+6zhhGfAmgxA LjZ90A1ZNoVBXHZ6YMO/DEtiBS5xzcuOVJjmy/eEQfYjUO3HFfbo6y4UUrJ4cmUGfbw/ gdp6d9YsFmCfWTRKjNB8YfyPs77XFAGJxS0IFDS+Dc2f37uj8l6UFMChEsMNpNtGPFja IHeA== 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 l16-20020a170902f69000b0018388edd187si23422614plg.56.2022.11.10.01.48.18; Thu, 10 Nov 2022 01:48:33 -0800 (PST) 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 S230028AbiKJJrq (ORCPT <rfc822;winker.wchi@gmail.com> + 99 others); Thu, 10 Nov 2022 04:47:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229988AbiKJJrg (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Thu, 10 Nov 2022 04:47:36 -0500 Received: from frasgout13.his.huawei.com (frasgout13.his.huawei.com [14.137.139.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9CEA46A777; Thu, 10 Nov 2022 01:47:34 -0800 (PST) Received: from mail02.huawei.com (unknown [172.18.147.227]) by frasgout13.his.huawei.com (SkyGuard) with ESMTP id 4N7Gzp66pbz9xFHJ; Thu, 10 Nov 2022 17:40:54 +0800 (CST) Received: from huaweicloud.com (unknown [10.204.63.22]) by APP1 (Coremail) with SMTP id LxC2BwCHc3CNyGxjO3hSAA--.1123S3; Thu, 10 Nov 2022 10:47:11 +0100 (CET) From: Roberto Sassu <roberto.sassu@huaweicloud.com> To: zohar@linux.ibm.com, dmitry.kasatkin@gmail.com, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, stephen.smalley.work@gmail.com, eparis@parisplace.org, casey@schaufler-ca.com Cc: linux-integrity@vger.kernel.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org, reiserfs-devel@vger.kernel.org, linux-kernel@vger.kernel.org, keescook@chromium.org, nicolas.bouchinet@clip-os.org, Roberto Sassu <roberto.sassu@huawei.com>, stable@vger.kernel.org, Jeff Mahoney <jeffm@suse.com>, Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Subject: [PATCH v4 1/5] reiserfs: Add missing calls to reiserfs_security_free() Date: Thu, 10 Nov 2022 10:46:35 +0100 Message-Id: <20221110094639.3086409-2-roberto.sassu@huaweicloud.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221110094639.3086409-1-roberto.sassu@huaweicloud.com> References: <20221110094639.3086409-1-roberto.sassu@huaweicloud.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: LxC2BwCHc3CNyGxjO3hSAA--.1123S3 X-Coremail-Antispam: 1UD129KBjvJXoWxGw4DZFW3Kry8GFWUur4Durg_yoW5AF4xpF 47K3WUGr1DJF1kWrn5AanxuF1IgrW3Gay7GrsxG3yqyanxXw18tF4Iy343CrZ3trWDJFZ3 ta17Cw45A345J3DanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBjb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUGw A2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxS w2x7M28EF7xvwVC0I7IYx2IY67AKxVWUJVWUCwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxV W8JVWxJwA2z4x0Y4vEx4A2jsIE14v26r4j6F4UM28EF7xvwVC2z280aVCY1x0267AKxVW8 JVW8Jr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx 0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWU JVW8JwACjcxG0xvY0x0EwIxGrwACI402YVCY1x02628vn2kIc2xKxwCF04k20xvY0x0EwI xGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480 Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_GFv_WrylIxkGc2Ij64vIr41lIxAIcVC0I7 IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k2 6cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxV AFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jn9N3UUUUU= X-CM-SenderInfo: purev21wro2thvvxqx5xdzvxpfor3voofrz/1tbiAQAMBF1jj4VHBwAAs9 X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS autolearn=ham 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749102061538242859?= X-GMAIL-MSGID: =?utf-8?q?1749102061538242859?= |
Series |
evm: Prepare for moving to the LSM infrastructure
|
|
Commit Message
Roberto Sassu
Nov. 10, 2022, 9:46 a.m. UTC
From: Roberto Sassu <roberto.sassu@huawei.com> Commit 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") defined reiserfs_security_free() to free the name and value of a security xattr allocated by the active LSM through security_old_inode_init_security(). However, this function is not called in the reiserfs code. Thus, add a call to reiserfs_security_free() whenever reiserfs_security_init() is called, and initialize value to NULL, to avoid to call kfree() on an uninitialized pointer. Finally, remove the kfree() for the xattr name, as it is not allocated anymore. Fixes: 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") Cc: stable@vger.kernel.org Cc: Jeff Mahoney <jeffm@suse.com> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Reported-by: Mimi Zohar <zohar@linux.ibm.com> Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> --- fs/reiserfs/namei.c | 4 ++++ fs/reiserfs/xattr_security.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Comments
On Thu, 2022-11-10 at 10:46 +0100, Roberto Sassu wrote: > From: Roberto Sassu <roberto.sassu@huawei.com> > > Commit 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes > during inode creation") defined reiserfs_security_free() to free the name > and value of a security xattr allocated by the active LSM through > security_old_inode_init_security(). However, this function is not called > in the reiserfs code. > > Thus, add a call to reiserfs_security_free() whenever > reiserfs_security_init() is called, and initialize value to NULL, to avoid > to call kfree() on an uninitialized pointer. > > Finally, remove the kfree() for the xattr name, as it is not allocated > anymore. > > Fixes: 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") > Cc: stable@vger.kernel.org > Cc: Jeff Mahoney <jeffm@suse.com> > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Reported-by: Mimi Zohar <zohar@linux.ibm.com> > Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
On Thu, Nov 10, 2022 at 4:47 AM Roberto Sassu <roberto.sassu@huaweicloud.com> wrote: > > From: Roberto Sassu <roberto.sassu@huawei.com> > > Commit 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes > during inode creation") defined reiserfs_security_free() to free the name > and value of a security xattr allocated by the active LSM through > security_old_inode_init_security(). However, this function is not called > in the reiserfs code. > > Thus, add a call to reiserfs_security_free() whenever > reiserfs_security_init() is called, and initialize value to NULL, to avoid > to call kfree() on an uninitialized pointer. > > Finally, remove the kfree() for the xattr name, as it is not allocated > anymore. > > Fixes: 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") > Cc: stable@vger.kernel.org > Cc: Jeff Mahoney <jeffm@suse.com> > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Reported-by: Mimi Zohar <zohar@linux.ibm.com> > Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> > --- > fs/reiserfs/namei.c | 4 ++++ > fs/reiserfs/xattr_security.c | 2 +- > 2 files changed, 5 insertions(+), 1 deletion(-) If I'm understanding this patch correctly, this is a standalone bugfix, right? Any reason this shouldn't be merged now, independent of the rest of patches in this patchset? > diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c > index 3d7a35d6a18b..b916859992ec 100644 > --- a/fs/reiserfs/namei.c > +++ b/fs/reiserfs/namei.c > @@ -696,6 +696,7 @@ static int reiserfs_create(struct user_namespace *mnt_userns, struct inode *dir, > > out_failed: > reiserfs_write_unlock(dir->i_sb); > + reiserfs_security_free(&security); > return retval; > } > > @@ -779,6 +780,7 @@ static int reiserfs_mknod(struct user_namespace *mnt_userns, struct inode *dir, > > out_failed: > reiserfs_write_unlock(dir->i_sb); > + reiserfs_security_free(&security); > return retval; > } > > @@ -878,6 +880,7 @@ static int reiserfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, > retval = journal_end(&th); > out_failed: > reiserfs_write_unlock(dir->i_sb); > + reiserfs_security_free(&security); > return retval; > } > > @@ -1194,6 +1197,7 @@ static int reiserfs_symlink(struct user_namespace *mnt_userns, > retval = journal_end(&th); > out_failed: > reiserfs_write_unlock(parent_dir->i_sb); > + reiserfs_security_free(&security); > return retval; > } > > diff --git a/fs/reiserfs/xattr_security.c b/fs/reiserfs/xattr_security.c > index 8965c8e5e172..857a65b05726 100644 > --- a/fs/reiserfs/xattr_security.c > +++ b/fs/reiserfs/xattr_security.c > @@ -50,6 +50,7 @@ int reiserfs_security_init(struct inode *dir, struct inode *inode, > int error; > > sec->name = NULL; > + sec->value = NULL; > > /* Don't add selinux attributes on xattrs - they'll never get used */ > if (IS_PRIVATE(dir)) > @@ -95,7 +96,6 @@ int reiserfs_security_write(struct reiserfs_transaction_handle *th, > > void reiserfs_security_free(struct reiserfs_security_handle *sec) > { > - kfree(sec->name); > kfree(sec->value); > sec->name = NULL; > sec->value = NULL; > -- > 2.25.1 >
On Mon, 2022-11-21 at 18:41 -0500, Paul Moore wrote: > On Thu, Nov 10, 2022 at 4:47 AM Roberto Sassu > <roberto.sassu@huaweicloud.com> wrote: > > From: Roberto Sassu <roberto.sassu@huawei.com> > > > > Commit 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes > > during inode creation") defined reiserfs_security_free() to free the name > > and value of a security xattr allocated by the active LSM through > > security_old_inode_init_security(). However, this function is not called > > in the reiserfs code. > > > > Thus, add a call to reiserfs_security_free() whenever > > reiserfs_security_init() is called, and initialize value to NULL, to avoid > > to call kfree() on an uninitialized pointer. > > > > Finally, remove the kfree() for the xattr name, as it is not allocated > > anymore. > > > > Fixes: 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") > > Cc: stable@vger.kernel.org > > Cc: Jeff Mahoney <jeffm@suse.com> > > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > > Reported-by: Mimi Zohar <zohar@linux.ibm.com> > > Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> > > --- > > fs/reiserfs/namei.c | 4 ++++ > > fs/reiserfs/xattr_security.c | 2 +- > > 2 files changed, 5 insertions(+), 1 deletion(-) > > If I'm understanding this patch correctly, this is a standalone > bugfix, right? Any reason this shouldn't be merged now, independent > of the rest of patches in this patchset? Yes. It would be fine for me to pick this sooner. Thanks Roberto > > diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c > > index 3d7a35d6a18b..b916859992ec 100644 > > --- a/fs/reiserfs/namei.c > > +++ b/fs/reiserfs/namei.c > > @@ -696,6 +696,7 @@ static int reiserfs_create(struct user_namespace *mnt_userns, struct inode *dir, > > > > out_failed: > > reiserfs_write_unlock(dir->i_sb); > > + reiserfs_security_free(&security); > > return retval; > > } > > > > @@ -779,6 +780,7 @@ static int reiserfs_mknod(struct user_namespace *mnt_userns, struct inode *dir, > > > > out_failed: > > reiserfs_write_unlock(dir->i_sb); > > + reiserfs_security_free(&security); > > return retval; > > } > > > > @@ -878,6 +880,7 @@ static int reiserfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, > > retval = journal_end(&th); > > out_failed: > > reiserfs_write_unlock(dir->i_sb); > > + reiserfs_security_free(&security); > > return retval; > > } > > > > @@ -1194,6 +1197,7 @@ static int reiserfs_symlink(struct user_namespace *mnt_userns, > > retval = journal_end(&th); > > out_failed: > > reiserfs_write_unlock(parent_dir->i_sb); > > + reiserfs_security_free(&security); > > return retval; > > } > > > > diff --git a/fs/reiserfs/xattr_security.c b/fs/reiserfs/xattr_security.c > > index 8965c8e5e172..857a65b05726 100644 > > --- a/fs/reiserfs/xattr_security.c > > +++ b/fs/reiserfs/xattr_security.c > > @@ -50,6 +50,7 @@ int reiserfs_security_init(struct inode *dir, struct inode *inode, > > int error; > > > > sec->name = NULL; > > + sec->value = NULL; > > > > /* Don't add selinux attributes on xattrs - they'll never get used */ > > if (IS_PRIVATE(dir)) > > @@ -95,7 +96,6 @@ int reiserfs_security_write(struct reiserfs_transaction_handle *th, > > > > void reiserfs_security_free(struct reiserfs_security_handle *sec) > > { > > - kfree(sec->name); > > kfree(sec->value); > > sec->name = NULL; > > sec->value = NULL; > > -- > > 2.25.1 > > > >
On Tue, Nov 22, 2022 at 3:12 AM Roberto Sassu <roberto.sassu@huaweicloud.com> wrote: > On Mon, 2022-11-21 at 18:41 -0500, Paul Moore wrote: > > On Thu, Nov 10, 2022 at 4:47 AM Roberto Sassu > > <roberto.sassu@huaweicloud.com> wrote: > > > From: Roberto Sassu <roberto.sassu@huawei.com> > > > > > > Commit 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes > > > during inode creation") defined reiserfs_security_free() to free the name > > > and value of a security xattr allocated by the active LSM through > > > security_old_inode_init_security(). However, this function is not called > > > in the reiserfs code. > > > > > > Thus, add a call to reiserfs_security_free() whenever > > > reiserfs_security_init() is called, and initialize value to NULL, to avoid > > > to call kfree() on an uninitialized pointer. > > > > > > Finally, remove the kfree() for the xattr name, as it is not allocated > > > anymore. > > > > > > Fixes: 57fe60df6241 ("reiserfs: add atomic addition of selinux attributes during inode creation") > > > Cc: stable@vger.kernel.org > > > Cc: Jeff Mahoney <jeffm@suse.com> > > > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > > > Reported-by: Mimi Zohar <zohar@linux.ibm.com> > > > Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > > > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> > > > --- > > > fs/reiserfs/namei.c | 4 ++++ > > > fs/reiserfs/xattr_security.c | 2 +- > > > 2 files changed, 5 insertions(+), 1 deletion(-) > > > > If I'm understanding this patch correctly, this is a standalone > > bugfix, right? Any reason this shouldn't be merged now, independent > > of the rest of patches in this patchset? > > Yes. It would be fine for me to pick this sooner. Okay, as it's been almost two weeks with no comments from the reiserfs folks and this looks okay to me I'm going to go ahead and pull this into the lsm/next branch as it's at least "LSM adjacent" :) As it is lsm/next and not lsm/stable-6.1, this should give the reiserfs folks another couple of weeks to object if they find this to be problematic. Thanks all.
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c index 3d7a35d6a18b..b916859992ec 100644 --- a/fs/reiserfs/namei.c +++ b/fs/reiserfs/namei.c @@ -696,6 +696,7 @@ static int reiserfs_create(struct user_namespace *mnt_userns, struct inode *dir, out_failed: reiserfs_write_unlock(dir->i_sb); + reiserfs_security_free(&security); return retval; } @@ -779,6 +780,7 @@ static int reiserfs_mknod(struct user_namespace *mnt_userns, struct inode *dir, out_failed: reiserfs_write_unlock(dir->i_sb); + reiserfs_security_free(&security); return retval; } @@ -878,6 +880,7 @@ static int reiserfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, retval = journal_end(&th); out_failed: reiserfs_write_unlock(dir->i_sb); + reiserfs_security_free(&security); return retval; } @@ -1194,6 +1197,7 @@ static int reiserfs_symlink(struct user_namespace *mnt_userns, retval = journal_end(&th); out_failed: reiserfs_write_unlock(parent_dir->i_sb); + reiserfs_security_free(&security); return retval; } diff --git a/fs/reiserfs/xattr_security.c b/fs/reiserfs/xattr_security.c index 8965c8e5e172..857a65b05726 100644 --- a/fs/reiserfs/xattr_security.c +++ b/fs/reiserfs/xattr_security.c @@ -50,6 +50,7 @@ int reiserfs_security_init(struct inode *dir, struct inode *inode, int error; sec->name = NULL; + sec->value = NULL; /* Don't add selinux attributes on xattrs - they'll never get used */ if (IS_PRIVATE(dir)) @@ -95,7 +96,6 @@ int reiserfs_security_write(struct reiserfs_transaction_handle *th, void reiserfs_security_free(struct reiserfs_security_handle *sec) { - kfree(sec->name); kfree(sec->value); sec->name = NULL; sec->value = NULL;