Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932775AbdCJQtK (ORCPT ); Fri, 10 Mar 2017 11:49:10 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:47090 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751316AbdCJQtB (ORCPT ); Fri, 10 Mar 2017 11:49:01 -0500 Message-ID: <1489164532.2593.17.camel@decadent.org.uk> Subject: Re: [PATCH 4.4 48/91] ext4: fix inline data error paths From: Ben Hutchings To: Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, Theodore Tso Date: Fri, 10 Mar 2017 16:48:52 +0000 In-Reply-To: <20170310083903.182707143@linuxfoundation.org> References: <20170310083900.730556986@linuxfoundation.org> <20170310083903.182707143@linuxfoundation.org> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-ANN81ltlc7qhicvZH+Nm" X-Mailer: Evolution 3.22.5-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 82.70.136.246 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2671 Lines: 79 --=-ANN81ltlc7qhicvZH+Nm Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2017-03-10 at 10:08 +0100, Greg Kroah-Hartman wrote: > 4.4-stable review patch.=C2=A0=C2=A0If anyone has any objections, please = let me > know. >=20 > ------------------ >=20 > From: Theodore Ts'o >=20 > commit eb5efbcb762aee4b454b04f7115f73ccbcf8f0ef upstream. >=20 > The write_end() function must always unlock the page and drop its ref > count, even on an error. This looks like a theoretical rather than a real issue, because I can't see how ext4_write_inline_data_end() ever returns an error code. > Signed-off-by: Theodore Ts'o > Signed-off-by: Greg Kroah-Hartman >=20 > --- > =C2=A0fs/ext4/inline.c |=C2=A0=C2=A0=C2=A0=C2=A09 ++++++++- > =C2=A0fs/ext4/inode.c=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A020 +++++++++++++++---= -- > =C2=A02 files changed, 23 insertions(+), 6 deletions(-) >=20 > --- a/fs/ext4/inline.c > +++ b/fs/ext4/inline.c > @@ -933,8 +933,15 @@ int ext4_da_write_inline_data_end(struct > > =C2=A0 =C2=A0=C2=A0struct page *page) > =C2=A0{ > =C2=A0 int i_size_changed =3D 0; > + int ret; > =C2=A0 > - copied =3D ext4_write_inline_data_end(inode, pos, len, copied, page); > + ret =3D ext4_write_inline_data_end(inode, pos, len, copied, page); > + if (ret < 0) { > + unlock_page(page); > + put_page(page); [...] For 4.4 each put_page() should ideally be changed to page_cache_release(). It makes no practical difference but would be consistent with other paths. Ben. --=20 Ben Hutchings If you seem to know what you are doing, you'll be given more to do. --=-ANN81ltlc7qhicvZH+Nm Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAljC2PQACgkQ57/I7JWG EQk3Rw/9H2TT8AFObpfdAB2ZRpIozNvL7ccbHfMrdQWu4RQWmRA8QYHrAm2D6Whl MIBFsetG+IzEN2Lsc/c6MbPGW0zeiSacSBDEQYfUEG+DfM1GPnqnWKy5kEExw9JB 0ra7dN1klJykGYKP66X5iOKhOZQNNUQ5KrW+VddYj4K0DAZ1bmRdWqyn+9fkOGCI +ygjlCJqRQlpoTyTposXY6VAYbmiWkHPtfb0206Ge/5kxwyMYmW7osDaN19/UZ7t 0X7vMKEuDavEB02c8JZEXUibltIn8BDz6eOgtO/rlLiYFNgUiWxdzJUneXOz4bKn cwqXS6qmqy1xcRka0a+omAlvRUOjZ0hQzzCNb21ibXHrsmDkBRa5ZrgPtx7570TL 4e4ImndDnyPE1/qW5COYVlrpNCyx+S2CQ13ZiZdfYP7hcTrGq+70P30RILLCtloi NE38BCjS8LgeFL04+p2uOI3pA50+dEM4dE2JuFXQqE8MemotJLKHR6aqe0ClONg3 cLop+h2WHZ0k+aVgRDTEQXd2pCtH9MXYaBpYlaArLrkw932Vft+gMSmjO/alapwd NAFxfAAT3cMRACPEKjN/RIeDfeZxv3wVlK0nnlh4LkPltOyDQTW/Y8ROHKGpfL/o AeH+DX0WIdAeeAny/79hVztjHRQFBZ1GFaLdfB7P/eWQ6grqEcU= =qdxL -----END PGP SIGNATURE----- --=-ANN81ltlc7qhicvZH+Nm--