public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* /proc/diskstats buglet
@ 2014-08-26 14:47 Alexey Dobriyan
  2014-08-26 14:55 ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Alexey Dobriyan @ 2014-08-26 14:47 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linux Kernel

Found and reproduced some time ago, almost forgot about :-)

In part_round_stats_single(), ->stamp field is written but without
locking SMP-wise.

    part->stamp = now;

So, if two processes read /proc/diskstats, it is possible for "now -
part->stamp" value to become negative.

And indeed this can happen:

now 4294755500, ->stamp 4294755501
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1950 at block/blk-core.c:1229
part_round_stats_single+0xc0/0xd0()
 ...
 [<ffffffff811963f0>] part_round_stats_single+0xc0/0xd0
 [<ffffffff81196447>] part_round_stats+0x47/0x70
 [<ffffffff811a069d>] diskstats_show+0x8d/0x4b0
 ...

Dunno how important used fields in /proc/diskstats but they can be
clearly bogus.

    Alexey

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-08-30 21:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-26 14:47 /proc/diskstats buglet Alexey Dobriyan
2014-08-26 14:55 ` Jens Axboe
2014-08-26 15:00   ` Alexey Dobriyan
2014-08-26 15:01     ` Jens Axboe
2014-08-30 21:39       ` Alexey Dobriyan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox