Skip to content

Commit c6c82e0

Browse files
efarmancohuck
authored andcommitted
vfio-ccw: Check initialized flag in cp_init()
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: 71189f2 ("vfio-ccw: make it safe to access channel programs") Signed-off-by: Eric Farman <[email protected]> Reviewed-by: Cornelia Huck <[email protected]> Acked-by: Matthew Rosato <[email protected]> Message-Id: <[email protected]> Signed-off-by: Cornelia Huck <[email protected]>
1 parent 6efb943 commit c6c82e0

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

drivers/s390/cio/vfio_ccw_cp.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,10 @@ int cp_init(struct channel_program *cp, struct device *mdev, union orb *orb)
638638
static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 1);
639639
int ret;
640640

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

0 commit comments

Comments
 (0)