Skip to content
  • Heiko Carstens's avatar
    /proc/stat: convert to single_open_size() · f74373a5
    Heiko Carstens authored
    
    
    These two patches are supposed to "fix" failed order-4 memory
    allocations which have been observed when reading /proc/stat.  The
    problem has been observed on s390 as well as on x86.
    
    To address the problem change the seq_file memory allocations to
    fallback to use vmalloc, so that allocations also work if memory is
    fragmented.
    
    This approach seems to be simpler and less intrusive than changing
    /proc/stat to use an interator.  Also it "fixes" other users as well,
    which use seq_file's single_open() interface.
    
    This patch (of 2):
    
    Use seq_file's single_open_size() to preallocate a buffer that is large
    enough to hold the whole output, instead of open coding it.  Also
    calculate the requested size using the number of online cpus instead of
    possible cpus, since the size of the output only depends on the number
    of online cpus.
    
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Cc: Ian Kent <raven@themaw.net>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Thorsten Diehl <thorsten.diehl@de.ibm.com>
    Cc: Andrea Righi <andrea@betterlinux.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Stefan Bader <stefan.bader@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f74373a5