msm: gsi: fix event ring handle in gsi_alloc_channel
Add a check to event ring handle. Change-Id: If835e7e610745aeb82d4d0e363ef833d0f8d857a CRs-Fixed: 1115476 Acked-by: Ady Abraham <adya@qti.qualcomm.com> Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This commit is contained in:
parent
314869eb56
commit
170979c4fd
1 changed files with 13 additions and 7 deletions
|
@ -1591,14 +1591,20 @@ int gsi_alloc_channel(struct gsi_chan_props *props, unsigned long dev_hdl,
|
|||
return -GSI_STATUS_INVALID_PARAMS;
|
||||
}
|
||||
|
||||
if (props->evt_ring_hdl != ~0 &&
|
||||
atomic_read(&gsi_ctx->evtr[props->evt_ring_hdl].chan_ref_cnt) &&
|
||||
gsi_ctx->evtr[props->evt_ring_hdl].props.exclusive) {
|
||||
GSIERR("evt ring=%lu already in exclusive use chan_hdl=%p\n",
|
||||
props->evt_ring_hdl, chan_hdl);
|
||||
return -GSI_STATUS_UNSUPPORTED_OP;
|
||||
}
|
||||
if (props->evt_ring_hdl != ~0) {
|
||||
if (props->evt_ring_hdl >= GSI_EVT_RING_MAX) {
|
||||
GSIERR("invalid evt ring=%lu\n", props->evt_ring_hdl);
|
||||
return -GSI_STATUS_INVALID_PARAMS;
|
||||
}
|
||||
|
||||
if (atomic_read(
|
||||
&gsi_ctx->evtr[props->evt_ring_hdl].chan_ref_cnt) &&
|
||||
gsi_ctx->evtr[props->evt_ring_hdl].props.exclusive) {
|
||||
GSIERR("evt ring=%lu exclusively used by chan_hdl=%p\n",
|
||||
props->evt_ring_hdl, chan_hdl);
|
||||
return -GSI_STATUS_UNSUPPORTED_OP;
|
||||
}
|
||||
}
|
||||
|
||||
ctx = &gsi_ctx->chan[props->ch_id];
|
||||
if (ctx->allocated) {
|
||||
|
|
Loading…
Add table
Reference in a new issue