From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932796AbcLMLRh (ORCPT ); Tue, 13 Dec 2016 06:17:37 -0500 Received: from mx2.suse.de ([195.135.220.15]:41384 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932464AbcLMLRg (ORCPT ); Tue, 13 Dec 2016 06:17:36 -0500 Date: Tue, 13 Dec 2016 12:17:34 +0100 From: Jan Kara To: Mark Salyzyn Cc: Cong Wang , LKML , aneesh.kumar@linux.vnet.ibm.com, Jan Kara Subject: Re: CVE-2016-7097 causes acl leak Message-ID: <20161213111734.GD15362@quack2.suse.cz> References: <3a180415-2f02-c9c0-e1e6-519b5d3115b7@android.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3a180415-2f02-c9c0-e1e6-519b5d3115b7@android.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 12-12-16 16:26:00, Mark Salyzyn wrote: > On 12/11/2016 04:34 PM, Cong Wang wrote: > >On Mon, Dec 5, 2016 at 9:16 AM, Mark Salyzyn wrote: > >>Commit 073931017b49d9458aa351605b43a7e34598caef has several occurrences of > >>an acl leak. > >> > >>posix_acl_update_mode(inose, &mode, &acl); > >> > >>. . . > >> > >>posix_acl_release(acl); > >> > >> > >>acl is NULLed in posix_acl_update_mode to signal caller to not update the > >>acl; but because it is nulled, it is never released. > >I think you blame the wrong commit, this leak exists before that commit. > >Looks like we should just release it before NULL'ing. > > > >diff --git a/fs/posix_acl.c b/fs/posix_acl.c > >index 5955220..edd862a 100644 > >--- a/fs/posix_acl.c > >+++ b/fs/posix_acl.c > >@@ -648,8 +648,10 @@ int posix_acl_update_mode(struct inode *inode, > >umode_t *mode_p, > > error = posix_acl_equiv_mode(*acl, &mode); > > if (error < 0) > > return error; > >- if (error == 0) > >+ if (error == 0) { > >+ posix_acl_release(*acl); > > *acl = NULL; > >+ } > > if (!in_group_p(inode->i_gid) && > > !capable_wrt_inode_uidgid(inode, CAP_FSETID)) > > mode &= ~S_ISGID; > > The leaks were introduced in 9p, gfs2, jfs and xfs drivers only. So I agree 9p leaks acl reference (and it was buggy even before my commit). GFS2, JFS, and XFS seem to be OK as far as I can tell. Honza -- Jan Kara SUSE Labs, CR