• Toshi Kani's avatar
    x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in __copy_user_nocache() · a82eee74
    Toshi Kani authored
    Data corruption issues were observed in tests which initiated
    a system crash/reset while accessing BTT devices.  This problem
    is reproducible.
    
    The BTT driver calls pmem_rw_bytes() to update data in pmem
    devices.  This interface calls __copy_user_nocache(), which
    uses non-temporal stores so that the stores to pmem are
    persistent.
    
    __copy_user_nocache() uses non-temporal stores when a request
    size is 8 bytes or larger (and is aligned by 8 bytes).  The
    BTT driver updates the BTT map table, which entry size is
    4 bytes.  Therefore, updates to the map table entries remain
    cached, and are not written to pmem after a crash.
    
    Change __copy_user_nocache() to use non-temporal store when
    a request size is 4 bytes.  The change extends the current
    byte-copy path for a less-than-8-bytes request, and does not
    add any overhead to the regular path.
    Reported-and-tested-by: default avatarMicah Parrish <micah.parrish@hpe.com>
    Reported-and-tested-by: default avatarBrian Boylston <brian.boylston@hpe.com>
    Signed-off-by: default avatarToshi Kani <toshi.kani@hpe.com>
    Cc: <stable@vger.kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: linux-nvdimm@lists.01.org
    Link: http://lkml.kernel.org/r/1455225857-12039-3-git-send-email-toshi.kani@hpe.com
    [ Small readability edits. ]
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a82eee74
copy_user_64.S 8.38 KB