lkml.org 
[lkml]   [2021]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 196/252] vfio-ccw: Check initialized flag in cp_init()
    Date
    From: Eric Farman <farman@linux.ibm.com>

    [ Upstream commit c6c82e0cd8125d30f2f1b29205c7e1a2f1a6785b ]

    We have a really nice flag in the channel_program struct that
    indicates if it had been initialized by cp_init(), and use it
    as a guard in the other cp accessor routines, but not for a
    duplicate call into cp_init(). The possibility of this occurring
    is low, because that flow is protected by the private->io_mutex
    and FSM CP_PROCESSING state. But then why bother checking it
    in (for example) cp_prefetch() then?

    Let's just be consistent and check for that in cp_init() too.

    Fixes: 71189f263f8a3 ("vfio-ccw: make it safe to access channel programs")
    Signed-off-by: Eric Farman <farman@linux.ibm.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Acked-by: Matthew Rosato <mjrosato@linux.ibm.com>
    Message-Id: <20210511195631.3995081-2-farman@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/s390/cio/vfio_ccw_cp.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
    index b9febc581b1f..8d1b2771c1aa 100644
    --- a/drivers/s390/cio/vfio_ccw_cp.c
    +++ b/drivers/s390/cio/vfio_ccw_cp.c
    @@ -638,6 +638,10 @@ int cp_init(struct channel_program *cp, struct device *mdev, union orb *orb)
    static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 1);
    int ret;

    + /* this is an error in the caller */
    + if (cp->initialized)
    + return -EBUSY;
    +
    /*
    * We only support prefetching the channel program. We assume all channel
    * programs executed by supported guests likewise support prefetching.
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-31 17:06    [W:6.285 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site