From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752270AbbD0FTm (ORCPT ); Mon, 27 Apr 2015 01:19:42 -0400 Received: from cantor2.suse.de ([195.135.220.15]:52986 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751478AbbD0FTk (ORCPT ); Mon, 27 Apr 2015 01:19:40 -0400 Date: Mon, 27 Apr 2015 15:19:31 +1000 From: NeilBrown To: Jens Axboe , Tejun Heo Cc: Christoph Hellwig , lkml Subject: [PATCH] block: turn Oops into WARNING if bdi_register_dev fails. Message-ID: <20150427151931.7a43ecc6@notabene.brown> X-Mailer: Claws Mail 3.10.1-162-g4d0ed6 (GTK+ 2.24.25; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/KeWLhA5+dxs.xhVdaYTLJSG"; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --Sig_/KeWLhA5+dxs.xhVdaYTLJSG Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable add_disk() does not return an error status, but it can still fail if there are problems elsewhere. In particular a recent problem caused bdi_register_dev() to sometimes fail because the name was already in use. In that case bdi->dev is NULL, so retval =3D sysfs_create_link(&disk_to_dev(disk)->kobj, &bdi->dev->kobj, "bdi"); triggers an oops, after having already produced warnings. This patch causes add_disk() to WARN and return if bdi_register_dev() fails, much like it already does if blk_alloc_devt() fails. This should make no difference on a correctly functioning system, but can make a developers life a bit easier. Signed-off-by: NeilBrown diff --git a/block/genhd.c b/block/genhd.c index 0a536dc05f3b..e351fc521053 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -612,6 +612,10 @@ void add_disk(struct gendisk *disk) /* Register BDI before referencing it from bdev */ bdi =3D &disk->queue->backing_dev_info; bdi_register_dev(bdi, disk_devt(disk)); + if (!bdi->dev) { + WARN_ON(1); + return; + } =20 blk_register_region(disk_devt(disk), disk->minors, NULL, exact_match, exact_lock, disk); --Sig_/KeWLhA5+dxs.xhVdaYTLJSG Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIVAwUBVT3G4znsnt1WYoG5AQK7sg/7BGeEAbNOfgyZVCdmQHRRBpeqEzFsN21y fMc+1sjSr8ts5WCNGiavwzKKh1mhlPFUTaE5rtlZ02Zch8vGqTp5S5JGXbTJrIxy 0tr9IWT9BdZLRbE/XmjJQAyYXQatQSkIMj87iHtAsYrrpWjodyZAZAd9E+boOJyY quO2OzEXfkY6QyOVBCQR++3Ev9lOn3Icg+6Er/GEmtEfp1szhMWs1uHaL0H5YmfE iRcER1h8nkpQLgBoIYG59S8fZrxXji2RO+gRyA/7pj0lMqVJa9czJj2QA+elumeF pWmctdLe68cnoCyRINDb0/kqa55oKDIJCQL+JD0dqocGu8d4YLufbnoJTwiVTljn a2bZ3F0HgKqpZqkUVyv93JPEF/j0iu/WAxum63BECgOqVg4HyDMKUhK/UllbwRR6 NECqrqwH8Pj7WteCptg0RnbbFmGJpaqyEFzDbPiJ/XW4mlBa/2Yu5boeNP9Csfn+ V7f+8W8J0QWPfshy1S6GF36SKa6rUecHWeLxcrBHULAdqlP/WtaoAlu+CqAIiAgl aZdlpYFrAQX8boOAPkKol0ZhR82C8WtXnKdHcrFEHScxOpoDgYkuIm5xu92p8/lm cQrR4ye8Rlbiv6AGzq6JzTKxb+Z58eH0RdqHEDef0UT50SHoLRLZ32XWUDP5rpON cA47ZIjOLYg= =W/+U -----END PGP SIGNATURE----- --Sig_/KeWLhA5+dxs.xhVdaYTLJSG--