From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754256AbbDNJn3 (ORCPT ); Tue, 14 Apr 2015 05:43:29 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44306 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753341AbbDNJnV (ORCPT ); Tue, 14 Apr 2015 05:43:21 -0400 Date: Tue, 14 Apr 2015 11:43:15 +0200 From: Jan Kara To: Dmitry Monakhov Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, axboe@kernel.dk, viro@zeniv.linux.org.uk, dm-devel@redhat.com Subject: Re: [PATCH 5/7] md: use block_device name vsprintf helper Message-ID: <20150414094315.GJ23327@quack.suse.cz> References: <1428928300-9132-1-git-send-email-dmonakhov@openvz.org> <1428928300-9132-6-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1428928300-9132-6-git-send-email-dmonakhov@openvz.org> 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 Mon 13-04-15 16:31:38, Dmitry Monakhov wrote: > > Signed-off-by: Dmitry Monakhov ... > @@ -2610,7 +2597,6 @@ static void handle_read_error(struct mddev *mddev, struct r10bio *r10_bio) > struct bio *bio; > struct r10conf *conf = mddev->private; > struct md_rdev *rdev = r10_bio->devs[slot].rdev; > - char b[BDEVNAME_SIZE]; > unsigned long do_sync; > int max_sectors; > > @@ -2623,7 +2609,6 @@ static void handle_read_error(struct mddev *mddev, struct r10bio *r10_bio) > * frozen. > */ > bio = r10_bio->devs[slot].bio; > - bdevname(bio->bi_bdev, b); > bio_put(bio); > r10_bio->devs[slot].bio = NULL; > > @@ -2639,9 +2624,9 @@ static void handle_read_error(struct mddev *mddev, struct r10bio *r10_bio) > read_more: > rdev = read_balance(conf, r10_bio, &max_sectors); > if (rdev == NULL) { > - printk(KERN_ALERT "md/raid10:%s: %s: unrecoverable I/O" > + printk(KERN_ALERT "md/raid10:%s: %pg: unrecoverable I/O" > " read error for block %llu\n", > - mdname(mddev), b, > + mdname(mddev), bio->bi_bdev, > (unsigned long long)r10_bio->sector); > raid_end_bio_io(r10_bio); > return; So it seems to me that in the above, you'll reference bio->bi_bdev of an already free bio since the code does bio_put() just after calling bdevname()... Honza -- Jan Kara SUSE Labs, CR