linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jens Axboe <jens.axboe@oracle.com>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	linux-next@vger.kernel.org
Subject: Re: linux-next: block tree build failure
Date: Wed, 03 Sep 2008 19:29:28 +0200	[thread overview]
Message-ID: <48BEC978.3050507@kernel.org> (raw)
In-Reply-To: <20080903093245.da237b40.akpm@linux-foundation.org>

[-- Attachment #1: Type: text/plain, Size: 1304 bytes --]

Andrew Morton wrote:
> On Wed, 03 Sep 2008 18:27:12 +0200 Tejun Heo <tj@kernel.org> wrote:
> 
>> Andrew Morton wrote:
>>> @@ -674,6 +674,8 @@ static void *disk_seqf_next(struct seq_f
>>>  	struct device *dev;
>>>  
>>>  	(*pos)++;
>>> +	if (seqf->private == NULL)
>>> +		return NULL;
>>>  	dev = class_dev_iter_next(seqf->private);
>>>  	if (dev)
>>>  		return dev_to_disk(dev);
>> Ehh... next can't be called with NULL private.
> 
> My computer disagreed ;)
> 
>>  Where can I take a look
>> at the merged tree?  There have been two separate changes to that area
>> of code.  Ad-hoc behavior fix for 2.6.27 and general clean up scheduled
>> for 2.6.28 and the two use seqf->private for different purposes.  Maybe
>> the two got mixed up?
> 
> It's linux-next-20080903

Hmmm... Can't see how it can happen and can't reproduce it either.
seqf->private is initialized from disk_seqf_start().  If allocation
fails, it returns ERR_PTR(-ENOMEM).  On error return from start, both
seq_file::seq_read and seq_file::traverse() immediately calls ->stop()
and fails, so ->next can't really be called with null ->private.

Just to make sure, I made disk_seqf_start() fail and it works (or
rather fails) as expected.

Argggghh... strange.  Can you please try the attached patch and post
the log?

Thanks.

-- 
tejun

[-- Attachment #2: genhd-next-dbg.patch --]
[-- Type: text/x-patch, Size: 1367 bytes --]

diff --git a/block/genhd.c b/block/genhd.c
index ed926b7..b76c56b 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -655,8 +655,11 @@ static void *disk_seqf_start(struct seq_file *seqf, loff_t *pos)
 	struct device *dev;
 
 	iter = kmalloc(sizeof(*iter), GFP_KERNEL);
-	if (!iter)
+	if (!iter) {
+		printk("XXX disk_seqf_start: -ENOMEM\n");
 		return ERR_PTR(-ENOMEM);
+	}
+	printk("XXX disk_seqf_start: iter=%p pos=%lld\n", iter, (long long)*pos);
 
 	seqf->private = iter;
 	class_dev_iter_init(iter, &block_class, NULL, &disk_type);
@@ -673,6 +676,8 @@ static void *disk_seqf_next(struct seq_file *seqf, void *v, loff_t *pos)
 {
 	struct device *dev;
 
+	printk("XXX disk_seqf_next: iter=%p pos=%lld\n",
+	       seqf->private, (long long)*pos);
 	(*pos)++;
 	dev = class_dev_iter_next(seqf->private);
 	if (dev)
@@ -685,6 +690,7 @@ static void disk_seqf_stop(struct seq_file *seqf, void *v)
 {
 	struct class_dev_iter *iter = seqf->private;
 
+	printk("XXX disk_seqf_stop: iter=%p\n", seqf->private);
 	/* stop is called even after start failed :-( */
 	if (iter) {
 		class_dev_iter_exit(iter);
@@ -697,7 +703,7 @@ static void *show_partition_start(struct seq_file *seqf, loff_t *pos)
 	static void *p;
 
 	p = disk_seqf_start(seqf, pos);
-	if (!IS_ERR(p) && p)
+	if (!IS_ERR(p) && p && !*pos)
 		seq_puts(seqf, "major minor  #blocks  name\n\n");
 	return p;
 }

  reply	other threads:[~2008-09-03 17:31 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-03  6:15 linux-next: block tree build failure Stephen Rothwell
2008-09-03  6:34 ` Jens Axboe
2008-09-03  7:04   ` Andrew Morton
2008-09-03  7:07     ` Jens Axboe
2008-09-03  8:50       ` Stephen Rothwell
2008-09-03 16:05       ` Andrew Morton
2008-09-03 16:27         ` Tejun Heo
2008-09-03 16:32           ` Andrew Morton
2008-09-03 17:29             ` Tejun Heo [this message]
2008-09-04  4:06               ` Andrew Morton
  -- strict thread matches above, loose matches on Subject: below --
2009-12-07  8:44 Stephen Rothwell
2009-12-07  8:49 ` Jens Axboe
2009-12-07  9:23   ` Stephen Rothwell
2009-12-07  9:28     ` Jens Axboe
2009-12-04  3:36 Stephen Rothwell
2009-12-04  7:43 ` Jens Axboe
2009-12-04 13:54   ` Jens Axboe
2009-12-04 22:49     ` Stephen Rothwell
2009-12-05  9:20       ` Jens Axboe
2009-10-27  3:34 Stephen Rothwell
2009-10-27  5:31 ` Jens Axboe
2009-10-27  5:50   ` Stephen Rothwell
2009-10-07  2:55 Stephen Rothwell
     [not found] ` <20091007135505.df1f058c.sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org>
2009-10-07  6:33   ` Jens Axboe
2009-09-23  4:51 Stephen Rothwell
2009-09-23  7:11 ` Lars Ellenberg
2009-09-23  7:32   ` Stephen Rothwell
     [not found]   ` <20090923071152.GA8000-pI6ZZpWkm2Ob3Om96lsyHpni2hclXnRB@public.gmane.org>
2009-09-23 11:12     ` Lars Ellenberg
     [not found]       ` <20090923111225.GC8000-pI6ZZpWkm2Ob3Om96lsyHpni2hclXnRB@public.gmane.org>
2009-09-23 11:56         ` Stephen Rothwell
2009-09-14  4:27 Stephen Rothwell
2009-09-14  6:25 ` Jens Axboe
2009-09-11  4:32 Stephen Rothwell
2009-09-11  5:30 ` Jens Axboe
2009-09-01  4:59 Stephen Rothwell
2009-09-01  5:30 ` Stephen Rothwell
2009-09-01  5:38   ` Jens Axboe
2009-09-01  8:13     ` Jens Axboe
2009-09-01  8:38       ` Stephen Rothwell
2009-07-07  3:49 Stephen Rothwell
2009-07-07  6:38 ` Jens Axboe
2009-07-07  6:45   ` Stephen Rothwell
2009-07-07 13:57   ` Christoph Hellwig
2009-07-07 14:31     ` Jens Axboe
2009-07-08  3:17   ` Stephen Rothwell
2009-07-08  6:55     ` Jens Axboe
2009-07-07 13:55 ` Christoph Hellwig
2009-07-08  0:41   ` Stephen Rothwell
2009-06-26  2:53 Stephen Rothwell
2009-06-26  4:34 ` NeilBrown
2009-06-26  4:39   ` Jens Axboe
2009-06-26  5:49     ` Neil Brown
2009-06-26  9:00       ` Jens Axboe
2009-05-25  4:35 Stephen Rothwell
2009-05-25  5:38 ` Martin K. Petersen
2009-05-25  5:54   ` Stephen Rothwell
2009-05-13  4:04 Stephen Rothwell
2009-05-13  9:21 ` Tejun Heo
2009-05-13 12:07   ` James Bottomley
2009-05-15  0:45     ` Tejun Heo
2009-05-15  2:35       ` James Bottomley
2009-05-15  2:47         ` Tejun Heo
2009-05-15  3:24           ` James Bottomley
2009-05-15  3:38             ` Tejun Heo
2009-04-09  3:37 Stephen Rothwell
2009-04-14  2:35 ` Stephen Rothwell
2009-04-14  6:21   ` Jens Axboe
2009-04-14  6:26     ` Stephen Rothwell
2009-04-14  6:32       ` Jens Axboe
2008-11-26 10:29 Stephen Rothwell
2008-11-26 10:42 ` Ingo Molnar
2008-11-26 10:47   ` Jens Axboe
2008-11-26 11:16     ` Ingo Molnar
2008-11-26 11:20       ` Jens Axboe
2008-11-26 11:28         ` Ingo Molnar
2008-11-26 11:23       ` Mathieu Desnoyers
2008-11-26 11:25         ` Ingo Molnar
     [not found] <20081110145442.d60e57b7.sfr@canb.auug.org.au>
2008-11-10  4:13 ` malahal
2008-11-10  4:46 ` malahal
2008-11-10 12:12   ` Jens Axboe
2008-09-18  3:04 Stephen Rothwell
2008-09-18  4:31 ` Jens Axboe
2008-09-15  5:18 Stephen Rothwell
2008-09-15  5:38 ` Alex Dubov
2008-09-15 13:18   ` Jens Axboe
2008-08-29  5:07 Stephen Rothwell
2008-08-29  9:00 ` Jens Axboe
     [not found] <20080627165326.9222c841.sfr@canb.auug.org.au>
2008-06-27  7:00 ` Jens Axboe
2008-06-27  7:14   ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48BEC978.3050507@kernel.org \
    --to=tj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=jens.axboe@oracle.com \
    --cc=linux-next@vger.kernel.org \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).