• Jerome Marchand's avatar
    procfs: fix numbering in /proc/locks · 99dc8292
    Jerome Marchand authored
    The lock number in /proc/locks (first field) is implemented by a counter
    (private field of struct seq_file) which is incremented at each call of
    locks_show() and reset to 1 in locks_start() whatever the offset is.  It
    should be reset according to the actual position in the list.  Because of
    this, the numbering erratically restarts at 1 several times when reading a
    long /proc/locks file.
    
    Moreover, locks_show() can be called twice to print a single line thus
    skipping a number.  The counter should be incremented in locks_next().
    
    And last, pos is a loff_t, which can be bigger than a pointer, so we don't
    use the pointer as an integer anymore, and allocate a loff_t instead.
    Signed-off-by: default avatarJerome Marchand <jmarchan@redhat.com>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Cc: Matthew Wilcox <matthew@wil.cx>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    99dc8292
locks.c 58.3 KB