lkml.org 
[lkml]   [2017]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.12 049/106] tcmu: Fix flushing cmd entry dcache page
    Date
    4.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Xiubo Li <lixiubo@cmss.chinamobile.com>

    commit 9d62bc0e6d79b11e3298e831358155930fb8f5e3 upstream.

    When feeding the tcmu's cmd ring, we need to flush the dcache page
    for the cmd entry to make sure these kernel stores are visible to
    user space mappings of that page.

    For the none PAD cmd entry, this will be flushed at the end of the
    tcmu_queue_cmd_ring().

    Signed-off-by: Xiubo Li <lixiubo@cmss.chinamobile.com>
    Reviewed-by: Mike Christie <mchristi@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/target/target_core_user.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/target/target_core_user.c
    +++ b/drivers/target/target_core_user.c
    @@ -699,21 +699,21 @@ tcmu_queue_cmd_ring(struct tcmu_cmd *tcm
    size_t pad_size = head_to_end(cmd_head, udev->cmdr_size);

    entry = (void *) mb + CMDR_OFF + cmd_head;
    - tcmu_flush_dcache_range(entry, sizeof(*entry));
    tcmu_hdr_set_op(&entry->hdr.len_op, TCMU_OP_PAD);
    tcmu_hdr_set_len(&entry->hdr.len_op, pad_size);
    entry->hdr.cmd_id = 0; /* not used for PAD */
    entry->hdr.kflags = 0;
    entry->hdr.uflags = 0;
    + tcmu_flush_dcache_range(entry, sizeof(*entry));

    UPDATE_HEAD(mb->cmd_head, pad_size, udev->cmdr_size);
    + tcmu_flush_dcache_range(mb, sizeof(*mb));

    cmd_head = mb->cmd_head % udev->cmdr_size; /* UAM */
    WARN_ON(cmd_head != 0);
    }

    entry = (void *) mb + CMDR_OFF + cmd_head;
    - tcmu_flush_dcache_range(entry, sizeof(*entry));
    tcmu_hdr_set_op(&entry->hdr.len_op, TCMU_OP_CMD);
    entry->hdr.cmd_id = tcmu_cmd->cmd_id;
    entry->hdr.kflags = 0;

    \
     
     \ /
      Last update: 2017-08-09 19:11    [W:4.064 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site