Skip to content
  • Vlastimil Babka's avatar
    mm: /proc/pid/*maps remove is_pid and related wrappers · 871305bb
    Vlastimil Babka authored
    Patch series "cleanups and refactor of /proc/pid/smaps*".
    
    The recent regression in /proc/pid/smaps made me look more into the code.
    Especially the issues with smaps_rollup reported in [1] as explained in
    Patch 4, which fixes them by refactoring the code.  Patches 2 and 3 are
    preparations for that.  Patch 1 is me realizing that there's a lot of
    boilerplate left from times where we tried (unsuccessfuly) to mark thread
    stacks in the output.
    
    Originally I had also plans to rework the translation from
    /proc/pid/*maps* file offsets to the internal structures.  Now the offset
    means "vma number", which is not really stable (vma's can come and go
    between read() calls) and there's an extra caching of last vma's address.
    My idea was that offsets would be interpreted directly as addresses, which
    would also allow meaningful seeks (see the ugly seek_to_smaps_entry() in
    tools/testing/selftests/vm/mlock2.h).  However loff_t is (signed) long
    long so that might be insufficient somewhere for the unsigned long
    addresses.
    
    So the result is fixed issues with skewed /proc/pid/smaps_rollup results,
    simpler smaps code, and a lot of unused code removed.
    
    [1] https://marc.info/?l=linux-mm&m=151927723128134&w=2
    
    This patch (of 4):
    
    Commit b7643757 ("procfs: mark thread stack correctly in
    proc/<pid>/maps") introduced differences between /proc/PID/maps and
    /proc/PID/task/TID/maps to mark thread stacks properly, and this was
    also done for smaps and numa_maps.  However it didn't work properly and
    was ultimately removed by commit b18cb64e ("fs/proc: Stop trying to
    report thread stacks").
    
    Now the is_pid parameter for the related show_*() functions is unused
    and we can remove it together with wrapper functions and ops structures
    that differ for PID and TID cases only in this parameter.
    
    Link: http://lkml.kernel.org/r/20180723111933.15443-2-vbabka@suse.cz
    
    
    Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
    Cc: Daniel Colascione <dancol@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    871305bb