11 Oct, 2016

1 commit

  • Pull more vfs updates from Al Viro:
    ">rename2() work from Miklos + current_time() from Deepa"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs: Replace current_fs_time() with current_time()
    fs: Replace CURRENT_TIME_SEC with current_time() for inode timestamps
    fs: Replace CURRENT_TIME with current_time() for inode timestamps
    fs: proc: Delete inode time initializations in proc_alloc_inode()
    vfs: Add current_time() api
    vfs: add note about i_op->rename changes to porting
    fs: rename "rename2" i_op to "rename"
    vfs: remove unused i_op->rename
    fs: make remaining filesystems use .rename2
    libfs: support RENAME_NOREPLACE in simple_rename()
    fs: support RENAME_NOREPLACE for local filesystems
    ncpfs: fix unused variable warning

    Linus Torvalds
     

28 Sep, 2016

1 commit

  • CURRENT_TIME macro is not appropriate for filesystems as it
    doesn't use the right granularity for filesystem timestamps.
    Use current_time() instead.

    CURRENT_TIME is also not y2038 safe.

    This is also in preparation for the patch that transitions
    vfs timestamps to use 64 bit time and hence make them
    y2038 safe. As part of the effort current_time() will be
    extended to do range checks. Hence, it is necessary for all
    file system timestamps to use current_time(). Also,
    current_time() will be transitioned along with vfs to be
    y2038 safe.

    Note that whenever a single call to current_time() is used
    to change timestamps in different inodes, it is because they
    share the same time granularity.

    Signed-off-by: Deepa Dinamani
    Reviewed-by: Arnd Bergmann
    Acked-by: Felipe Balbi
    Acked-by: Steven Whitehouse
    Acked-by: Ryusuke Konishi
    Acked-by: David Sterba
    Signed-off-by: Al Viro

    Deepa Dinamani
     

09 Sep, 2016

8 commits

  • If cxt->pstore.buf allocated failed, no need to initialize
    cxt->pstore.buf_lock. So this patch moves spin_lock_init() after the
    error checking.

    Signed-off-by: Geliang Tang
    Signed-off-by: Kees Cook

    Geliang Tang
     
  • The ramoops buffer may be mapped as either I/O memory or uncached
    memory. On ARM64, this results in a device-type (strongly-ordered)
    mapping. Since unnaligned accesses to device-type memory will
    generate an alignment fault (regardless of whether or not strict
    alignment checking is enabled), it is not safe to use memcpy().
    memcpy_fromio() is guaranteed to only use aligned accesses, so use
    that instead.

    Signed-off-by: Andrew Bresticker
    Signed-off-by: Enric Balletbo Serra
    Reviewed-by: Puneet Kumar
    Signed-off-by: Kees Cook
    Cc: stable@vger.kernel.org

    Andrew Bresticker
     
  • persistent_ram_update uses vmap / iomap based on whether the buffer is in
    memory region or reserved region. However, both map it as non-cacheable
    memory. For armv8 specifically, non-cacheable mapping requests use a
    memory type that has to be accessed aligned to the request size. memcpy()
    doesn't guarantee that.

    Signed-off-by: Furquan Shaikh
    Signed-off-by: Enric Balletbo Serra
    Reviewed-by: Aaron Durbin
    Reviewed-by: Olof Johansson
    Tested-by: Furquan Shaikh
    Signed-off-by: Kees Cook
    Cc: stable@vger.kernel.org

    Furquan Shaikh
     
  • Removing a bounce buffer copy operation in the pmsg driver path is
    always better. We also gain in overall performance by not requesting
    a vmalloc on every write as this can cause precious RT tasks, such
    as user facing media operation, to stall while memory is being
    reclaimed. Added a write_buf_user to the pstore functions, a backup
    platform write_buf_user that uses the small buffer that is part of
    the instance, and implemented a ramoops write_buf_user that only
    supports PSTORE_TYPE_PMSG.

    Signed-off-by: Mark Salyzyn
    Signed-off-by: Kees Cook

    Mark Salyzyn
     
  • The ramoops can be configured to enable each pstore type by setting
    their size. In that case, it'd be better not to register disabled types
    in the first place.

    Cc: Anton Vorontsov
    Cc: Colin Cross
    Cc: Kees Cook
    Cc: Tony Luck
    Signed-off-by: Namhyung Kim
    Signed-off-by: Kees Cook

    Namhyung Kim
     
  • This patch adds new PSTORE_FLAGS for each pstore type so that they can
    be enabled separately. This is a preparation for ongoing virtio-pstore
    work to support those types flexibly.

    The PSTORE_FLAGS_FRAGILE is changed to PSTORE_FLAGS_DMESG to preserve the
    original behavior.

    Cc: Anton Vorontsov
    Cc: Colin Cross
    Cc: Kees Cook
    Cc: Tony Luck
    Cc: "Rafael J. Wysocki"
    Cc: Len Brown
    Cc: Matt Fleming
    Cc: linux-acpi@vger.kernel.org
    Cc: linux-efi@vger.kernel.org
    Signed-off-by: Namhyung Kim
    [kees: retained "FRAGILE" for now to make merges easier]
    Signed-off-by: Kees Cook

    Namhyung Kim
     
  • I have here a FPGA behind PCIe which exports SRAM which I use for
    pstore. Now it seems that the FPGA no longer supports cmpxchg based
    updates and writes back 0xff…ff and returns the same. This leads to
    crash during crash rendering pstore useless.
    Since I doubt that there is much benefit from using cmpxchg() here, I am
    dropping this atomic access and use the spinlock based version.

    Cc: Anton Vorontsov
    Cc: Colin Cross
    Cc: Kees Cook
    Cc: Tony Luck
    Cc: Rabin Vincent
    Tested-by: Rabin Vincent
    Signed-off-by: Sebastian Andrzej Siewior
    Reviewed-by: Guenter Roeck
    [kees: remove "_locked" suffix since it's the only option now]
    Signed-off-by: Kees Cook
    Cc: stable@vger.kernel.org

    Sebastian Andrzej Siewior
     
  • A basic rmmod ramoops segfaults. Let's see why.

    Since commit 34f0ec82e0a9 ("pstore: Correct the max_dump_cnt clearing of
    ramoops") sets ->max_dump_cnt to zero before looping over ->przs but we
    didn't use it before that either.

    And since commit ee1d267423a1 ("pstore: add pstore unregister") we free
    that memory on rmmod.

    But even then, we looped until a NULL pointer or ERR. I don't see where
    it is ensured that the last member is NULL. Let's try this instead:
    simply error recovery and free. Clean up in error case where resources
    were allocated. And then, in the free path, rely on ->max_dump_cnt in
    the free path.

    Cc: Anton Vorontsov
    Cc: Colin Cross
    Cc: Kees Cook
    Cc: Tony Luck
    Cc: Namhyung Kim
    Acked-by: Namhyung Kim
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Kees Cook
    Cc: stable@vger.kernel.org # 4.4.x-

    Sebastian Andrzej Siewior
     

06 Aug, 2016

2 commits

  • persistent_ram_zone(=prz) structures are allocated by persistent_ram_new(),
    which includes vmap() or ioremap(). But they are currently freed by
    kfree(). This uses persistent_ram_free() for correct this asymmetry usage.

    Signed-off-by: Hiraku Toyooka
    Signed-off-by: Nobuhiro Iwamatsu
    Cc: Mark Salyzyn
    Cc: Seiji Aguchi
    Signed-off-by: Kees Cook

    Hiraku Toyooka
     
  • Instead of a ramoops-specific node, use a child node of /reserved-memory.
    This requires that of_platform_device_create() be explicitly called
    for the node, though, since "/reserved-memory" does not have its own
    "compatible" property.

    Suggested-by: Rob Herring
    Signed-off-by: Kees Cook
    Acked-by: Rob Herring

    Kees Cook
     

15 Jun, 2016

1 commit

  • ramoops is one of the remaining places where ARM vendors still rely on
    board-specific shims. Device Tree lets us replace those shims with
    generic code.

    These bindings mirror the ramoops module parameters, with two small
    differences:

    (1) dump_oops becomes an optional "no-dump-oops" property, since ramoops
    sets dump_oops=1 by default.

    (2) mem_type=1 becomes the more self-explanatory "unbuffered" property.

    Signed-off-by: Greg Hackmann
    [fixed platform_get_drvdata() crash, thanks to Brian Norris]
    [switched from u64 to u32 to simplify code, various whitespace fixes]
    [use dev_of_node() to gain code-elimination for CONFIG_OF=n]
    Signed-off-by: Kees Cook

    Greg Hackmann
     

03 Jun, 2016

2 commits

  • In ee1d267423a1 ("pstore: add pstore unregister") I added:
    .owner = THIS_MODULE,
    in both pstore_fs_type and pstore_file_operations to increase a reference
    count when pstore filesystem is mounted and pstore file is opened.

    But, it's repetitive. There is no need to increase the opened reference
    count. We only need to increase the mounted reference count. When a file
    is opened, the filesystem can't be unmounted. Hence the pstore module
    can't be unloaded either.

    So I drop the opened reference count in this patch.

    Fixes: ee1d267423a1 ("pstore: add pstore unregister")
    Signed-off-by: Geliang Tang
    Signed-off-by: Kees Cook

    Geliang Tang
     
  • Like zlib compression in pstore, this patch added lzo and lz4
    compression support so that users can have more options and better
    compression ratio.

    The original code treats the compressed data together with the
    uncompressed ECC correction notice by using zlib decompress. The
    ECC correction notice is missing in the decompression process. The
    treatment also makes lzo and lz4 not working. So I treat them
    separately by using pstore_decompress() to treat the compressed
    data, and memcpy() to treat the uncompressed ECC correction notice.

    Signed-off-by: Geliang Tang
    Signed-off-by: Kees Cook

    Geliang Tang
     

01 Jun, 2016

3 commits

  • The code is duplicate between compression is enabled or not.

    Signed-off-by: Namhyung Kim
    Signed-off-by: Kees Cook

    Namhyung Kim
     
  • The commit f0e2efcfd2717 ("pstore: do not use message compression
    without lock") added a check to 'is_locked' to avoid breakage in
    concurrent accesses. But it has a side-effect of disabling compression
    on normal path since 'is_locked' variable is not set. As normal path
    always takes the lock, it should be initialized to 1.

    This also makes the unlock code a bit simpler.

    Signed-off-by: Namhyung Kim
    Signed-off-by: Kees Cook

    Namhyung Kim
     
  • While none of the "fragile" pstore backends unregister yet, if they
    ever did, the unregistering code for the non-dump targets might get
    confused. This adds a check for fragile backends on unregister.

    Signed-off-by: Kees Cook

    Kees Cook
     

05 Apr, 2016

1 commit

  • PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
    ago with promise that one day it will be possible to implement page
    cache with bigger chunks than PAGE_SIZE.

    This promise never materialized. And unlikely will.

    We have many places where PAGE_CACHE_SIZE assumed to be equal to
    PAGE_SIZE. And it's constant source of confusion on whether
    PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
    especially on the border between fs and mm.

    Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
    breakage to be doable.

    Let's stop pretending that pages in page cache are special. They are
    not.

    The changes are pretty straight-forward:

    - << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};

    - page_cache_get() -> get_page();

    - page_cache_release() -> put_page();

    This patch contains automated changes generated with coccinelle using
    script below. For some reason, coccinelle doesn't patch header files.
    I've called spatch for them manually.

    The only adjustment after coccinelle is revert of changes to
    PAGE_CAHCE_ALIGN definition: we are going to drop it later.

    There are few places in the code where coccinelle didn't reach. I'll
    fix them manually in a separate patch. Comments and documentation also
    will be addressed with the separate patch.

    virtual patch

    @@
    expression E;
    @@
    - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    expression E;
    @@
    - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    @@
    - PAGE_CACHE_SHIFT
    + PAGE_SHIFT

    @@
    @@
    - PAGE_CACHE_SIZE
    + PAGE_SIZE

    @@
    @@
    - PAGE_CACHE_MASK
    + PAGE_MASK

    @@
    expression E;
    @@
    - PAGE_CACHE_ALIGN(E)
    + PAGE_ALIGN(E)

    @@
    expression E;
    @@
    - page_cache_get(E)
    + get_page(E)

    @@
    expression E;
    @@
    - page_cache_release(E)
    + put_page(E)

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

11 Mar, 2016

1 commit


23 Jan, 2016

1 commit

  • parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
    inode_foo(inode) being mutex_foo(&inode->i_mutex).

    Please, use those for access to ->i_mutex; over the coming cycle
    ->i_mutex will become rwsem, with ->lookup() done with it held
    only shared.

    Signed-off-by: Al Viro

    Al Viro
     

03 Nov, 2015

1 commit


23 Oct, 2015

1 commit


22 Oct, 2015

3 commits

  • pstore doesn't support unregistering yet. It was marked as TODO.
    This patch adds some code to fix it:
    1) Add functions to unregister kmsg/console/ftrace/pmsg.
    2) Add a function to free compression buffer.
    3) Unmap the memory and free it.
    4) Add a function to unregister pstore filesystem.

    Signed-off-by: Geliang Tang
    Acked-by: Kees Cook
    [Removed __exit annotation from ramoops_remove(). Reported by Arnd Bergmann]
    Signed-off-by: Tony Luck

    Geliang Tang
     
  • Add a new wrapper function pstore_register_kmsg to keep the
    consistency with other similar pstore_register_* functions.

    Signed-off-by: Geliang Tang
    Signed-off-by: Tony Luck

    Geliang Tang
     
  • If vmalloc fails, make write_pmsg return -ENOMEM.

    Signed-off-by: Geliang Tang
    Acked-by: Kees Cook
    Signed-off-by: Tony Luck

    Geliang Tang
     

04 Jul, 2015

1 commit

  • Pull user namespace updates from Eric Biederman:
    "Long ago and far away when user namespaces where young it was realized
    that allowing fresh mounts of proc and sysfs with only user namespace
    permissions could violate the basic rule that only root gets to decide
    if proc or sysfs should be mounted at all.

    Some hacks were put in place to reduce the worst of the damage could
    be done, and the common sense rule was adopted that fresh mounts of
    proc and sysfs should allow no more than bind mounts of proc and
    sysfs. Unfortunately that rule has not been fully enforced.

    There are two kinds of gaps in that enforcement. Only filesystems
    mounted on empty directories of proc and sysfs should be ignored but
    the test for empty directories was insufficient. So in my tree
    directories on proc, sysctl and sysfs that will always be empty are
    created specially. Every other technique is imperfect as an ordinary
    directory can have entries added even after a readdir returns and
    shows that the directory is empty. Special creation of directories
    for mount points makes the code in the kernel a smidge clearer about
    it's purpose. I asked container developers from the various container
    projects to help test this and no holes were found in the set of mount
    points on proc and sysfs that are created specially.

    This set of changes also starts enforcing the mount flags of fresh
    mounts of proc and sysfs are consistent with the existing mount of
    proc and sysfs. I expected this to be the boring part of the work but
    unfortunately unprivileged userspace winds up mounting fresh copies of
    proc and sysfs with noexec and nosuid clear when root set those flags
    on the previous mount of proc and sysfs. So for now only the atime,
    read-only and nodev attributes which userspace happens to keep
    consistent are enforced. Dealing with the noexec and nosuid
    attributes remains for another time.

    This set of changes also addresses an issue with how open file
    descriptors from /proc//ns/* are displayed. Recently readlink of
    /proc//fd has been triggering a WARN_ON that has not been
    meaningful since it was added (as all of the code in the kernel was
    converted) and is not now actively wrong.

    There is also a short list of issues that have not been fixed yet that
    I will mention briefly.

    It is possible to rename a directory from below to above a bind mount.
    At which point any directory pointers below the renamed directory can
    be walked up to the root directory of the filesystem. With user
    namespaces enabled a bind mount of the bind mount can be created
    allowing the user to pick a directory whose children they can rename
    to outside of the bind mount. This is challenging to fix and doubly
    so because all obvious solutions must touch code that is in the
    performance part of pathname resolution.

    As mentioned above there is also a question of how to ensure that
    developers by accident or with purpose do not introduce exectuable
    files on sysfs and proc and in doing so introduce security regressions
    in the current userspace that will not be immediately obvious and as
    such are likely to require breaking userspace in painful ways once
    they are recognized"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
    vfs: Remove incorrect debugging WARN in prepend_path
    mnt: Update fs_fully_visible to test for permanently empty directories
    sysfs: Create mountpoints with sysfs_create_mount_point
    sysfs: Add support for permanently empty directories to serve as mount points.
    kernfs: Add support for always empty directories.
    proc: Allow creating permanently empty directories that serve as mount points
    sysctl: Allow creating permanently empty directories that serve as mountpoints.
    fs: Add helper functions for permanently empty directories.
    vfs: Ignore unlocked mounts in fs_fully_visible
    mnt: Modify fs_fully_visible to deal with locked ro nodev and atime
    mnt: Refactor the logic for mounting sysfs and proc in a user namespace

    Linus Torvalds
     

01 Jul, 2015

1 commit

  • This allows for better documentation in the code and
    it allows for a simpler and fully correct version of
    fs_fully_visible to be written.

    The mount points converted and their filesystems are:
    /sys/hypervisor/s390/ s390_hypfs
    /sys/kernel/config/ configfs
    /sys/kernel/debug/ debugfs
    /sys/firmware/efi/efivars/ efivarfs
    /sys/fs/fuse/connections/ fusectl
    /sys/fs/pstore/ pstore
    /sys/kernel/tracing/ tracefs
    /sys/fs/cgroup/ cgroup
    /sys/kernel/security/ securityfs
    /sys/fs/selinux/ selinuxfs
    /sys/fs/smackfs/ smackfs

    Cc: stable@vger.kernel.org
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

22 May, 2015

5 commits


27 Apr, 2015

1 commit

  • Pull fourth vfs update from Al Viro:
    "d_inode() annotations from David Howells (sat in for-next since before
    the beginning of merge window) + four assorted fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    RCU pathwalk breakage when running into a symlink overmounting something
    fix I_DIO_WAKEUP definition
    direct-io: only inc/dec inode->i_dio_count for file systems
    fs/9p: fix readdir()
    VFS: assorted d_backing_inode() annotations
    VFS: fs/inode.c helpers: d_inode() annotations
    VFS: fs/cachefiles: d_backing_inode() annotations
    VFS: fs library helpers: d_inode() annotations
    VFS: assorted weird filesystems: d_inode() annotations
    VFS: normal filesystems (and lustre): d_inode() annotations
    VFS: security/: d_inode() annotations
    VFS: security/: d_backing_inode() annotations
    VFS: net/: d_inode() annotations
    VFS: net/unix: d_backing_inode() annotations
    VFS: kernel/: d_inode() annotations
    VFS: audit: d_backing_inode() annotations
    VFS: Fix up some ->d_inode accesses in the chelsio driver
    VFS: Cachefiles should perform fs modifications on the top layer only
    VFS: AF_UNIX sockets should call mknod on the top layer only

    Linus Torvalds
     

17 Apr, 2015

1 commit

  • Pull powerpc updates from Michael Ellerman:

    - Numerous minor fixes, cleanups etc.

    - More EEH work from Gavin to remove its dependency on device_nodes.

    - Memory hotplug implemented entirely in the kernel from Nathan
    Fontenot.

    - Removal of redundant CONFIG_PPC_OF by Kevin Hao.

    - Rewrite of VPHN parsing logic & tests from Greg Kurz.

    - A fix from Nish Aravamudan to reduce memory usage by clamping
    nodes_possible_map.

    - Support for pstore on powernv from Hari Bathini.

    - Removal of old powerpc specific byte swap routines by David Gibson.

    - Fix from Vasant Hegde to prevent the flash driver telling you it was
    flashing your firmware when it wasn't.

    - Patch from Ben Herrenschmidt to add an OPAL heartbeat driver.

    - Fix for an oops causing get/put_cpu_var() imbalance in perf by Jan
    Stancek.

    - Some fixes for migration from Tyrel Datwyler.

    - A new syscall to switch the cpu endian by Michael Ellerman.

    - Large series from Wei Yang to implement SRIOV, reviewed and acked by
    Bjorn.

    - A fix for the OPAL sensor driver from Cédric Le Goater.

    - Fixes to get STRICT_MM_TYPECHECKS building again by Michael Ellerman.

    - Large series from Daniel Axtens to make our PCI hooks per PHB rather
    than per machine.

    - Small patch from Sam Bobroff to explicitly abort non-suspended
    transactions on syscalls, plus a test to exercise it.

    - Numerous reworks and fixes for the 24x7 PMU from Sukadev Bhattiprolu.

    - Small patch to enable the hard lockup detector from Anton Blanchard.

    - Fix from Dave Olson for missing L2 cache information on some CPUs.

    - Some fixes from Michael Ellerman to get Cell machines booting again.

    - Freescale updates from Scott: Highlights include BMan device tree
    nodes, an MSI erratum workaround, a couple minor performance
    improvements, config updates, and misc fixes/cleanup.

    * tag 'powerpc-4.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux: (196 commits)
    powerpc/powermac: Fix build error seen with powermac smp builds
    powerpc/pseries: Fix compile of memory hotplug without CONFIG_MEMORY_HOTREMOVE
    powerpc: Remove PPC32 code from pseries specific find_and_init_phbs()
    powerpc/cell: Fix iommu breakage caused by controller_ops change
    powerpc/eeh: Fix crash in eeh_add_device_early() on Cell
    powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH
    powerpc/perf/hv-24x7: Fail 24x7 initcall if create_events_from_catalog() fails
    powerpc/pseries: Correct memory hotplug locking
    powerpc: Fix missing L2 cache size in /sys/devices/system/cpu
    powerpc: Add ppc64 hard lockup detector support
    oprofile: Disable oprofile NMI timer on ppc64
    powerpc/perf/hv-24x7: Add missing put_cpu_var()
    powerpc/perf/hv-24x7: Break up single_24x7_request
    powerpc/perf/hv-24x7: Define update_event_count()
    powerpc/perf/hv-24x7: Whitespace cleanup
    powerpc/perf/hv-24x7: Define add_event_to_24x7_request()
    powerpc/perf/hv-24x7: Rename hv_24x7_event_update
    powerpc/perf/hv-24x7: Move debug prints to separate function
    powerpc/perf/hv-24x7: Drop event_24x7_request()
    powerpc/perf/hv-24x7: Use pr_devel() to log message
    ...

    Conflicts:
    tools/testing/selftests/powerpc/Makefile
    tools/testing/selftests/powerpc/tm/Makefile

    Linus Torvalds
     

16 Apr, 2015

1 commit


23 Mar, 2015

1 commit


17 Mar, 2015

1 commit

  • In the function ramoops_probe, the console_size, pmsg_size,
    ftrace_size may be update because the value is not the power
    of two. We should update the module parameter variables
    as well so they are visible through /sys/module/ramoops/parameters
    correctly.

    Signed-off-by: Wang Long
    Acked-by: Mark Salyzyn
    Acked-by: Kees Cook
    Signed-off-by: Tony Luck

    Wang Long
     

17 Jan, 2015

2 commits

  • We should use sprintf format specifier "%u" instead of "%d" for
    argument of type 'unsigned int' in pstore_dump().

    Signed-off-by: Alex Chen
    Reviewed-by: Joseph Qi
    Acked-by: Kees Cook
    Signed-off-by: Tony Luck

    alex chen
     
  • A secured user-space accessible pstore object. Writes
    to /dev/pmsg0 are appended to the buffer, on reboot
    the persistent contents are available in
    /sys/fs/pstore/pmsg-ramoops-[ID].

    One possible use is syslogd, or other daemon, can
    write messages, then on reboot provides a means to
    triage user-space activities leading up to a panic
    as a companion to the pstore dmesg or console logs.

    Signed-off-by: Mark Salyzyn
    Acked-by: Kees Cook
    Signed-off-by: Tony Luck

    Mark Salyzyn