All of lore.kernel.org
 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: 93+ 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
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-10-07  6:33     ` Jens Axboe
2009-09-23  4:51 Stephen Rothwell
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
2009-09-23 11:12       ` Lars Ellenberg
     [not found]       ` <20090923111225.GC8000-pI6ZZpWkm2Ob3Om96lsyHpni2hclXnRB@public.gmane.org>
2009-09-23 11:56         ` Stephen Rothwell
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.