lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 075/413] RAS/CEC: Fix pfn insertion
    Date
    [ Upstream commit 6d8e294bf5f0e85c34e8b14b064e2965f53f38b0 ]

    When inserting random PFNs for debugging the CEC through
    (debugfs)/ras/cec/pfn, depending on the return value of pfn_set(),
    multiple values get inserted per a single write.

    That is because simple_attr_write() interprets a retval of 0 as
    success and claims the whole input. However, pfn_set() returns the
    cec_add_elem() value, which, if > 0 and smaller than the whole input
    length, makes glibc continue issuing the write syscall until there's
    input left:

    pfn_set
    simple_attr_write
    debugfs_attr_write
    full_proxy_write
    vfs_write
    ksys_write
    do_syscall_64
    entry_SYSCALL_64_after_hwframe

    leading to those repeated calls.

    Return 0 to fix that.

    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/ras/cec.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/ras/cec.c b/drivers/ras/cec.c
    index 673f8a128397..f5795adc5a6e 100644
    --- a/drivers/ras/cec.c
    +++ b/drivers/ras/cec.c
    @@ -369,7 +369,9 @@ static int pfn_set(void *data, u64 val)
    {
    *(u64 *)data = val;

    - return cec_add_elem(val);
    + cec_add_elem(val);
    +
    + return 0;
    }

    DEFINE_DEBUGFS_ATTRIBUTE(pfn_ops, u64_get, pfn_set, "0x%llx\n");
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-24 22:39    [W:4.163 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site