From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751481AbbCOBjw (ORCPT ); Sat, 14 Mar 2015 21:39:52 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:51959 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751058AbbCOBjv (ORCPT ); Sat, 14 Mar 2015 21:39:51 -0400 Date: Sun, 15 Mar 2015 01:39:49 +0000 From: Al Viro To: Alexander Holler Cc: Linus Torvalds , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-usb@vger.kernel.org Subject: Re: [git pull] gadgetfs fixes Message-ID: <20150315013948.GU29656@ZenIV.linux.org.uk> References: <20150313164228.GQ29656@ZenIV.linux.org.uk> <5504D4B9.2010901@ahsoftware.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5504D4B9.2010901@ahsoftware.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Mar 15, 2015 at 01:39:21AM +0100, Alexander Holler wrote: > Am 13.03.2015 um 17:42 schrieb Al Viro: > > Assorted fixes around AIO on gadgetfs: leaks, use-after-free, > > troubles caused by ->f_op flipping. Please, pull from > > git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git gadget > > > > Shortlog: > > Al Viro (8): > > new helper: dup_iter() > > move iov_iter.c from mm/ to lib/ > > gadget/function/f_fs.c: close leaks > > gadget/function/f_fs.c: use put iov_iter into io_data > > gadget/function/f_fs.c: switch to ->{read,write}_iter() > > > gadgetfs: use-after-free in ->aio_read() > > If that patch ends up in the stable kernels (as it is marked as such), > it needs a > value = -ENOMEM > before that added "goto fail;", otherwise the return value is unitialized. Umm... If I'm not misparsing what you said, you are talking about the one that gets removed by - if (iv) { - priv->iv = kmemdup(iv, nr_segs * sizeof(struct iovec), - GFP_KERNEL); - if (!priv->iv) { - kfree(priv); - goto fail; - } - } in "gadget: switch ep_io_operations to ->read_iter/->write_iter" very shortly afterwards, and _that_ is a prereq for ->f_op flipping fixes, which is also clear -stable fodder. But yes, it's a bisect hazard and a cherry-pick one as well. Nice catch...