Skip to content

Commit b5dc0ff

Browse files
cris-masudeep-holla
authored andcommitted
firmware: arm_scmi: Use xa_insert() when saving raw queues
Use xa_insert() when saving per-channel raw queues to better check for duplicates. Fixes: 7860701 ("firmware: arm_scmi: Add per-channel raw injection support") Signed-off-by: Cristian Marussi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Sudeep Holla <[email protected]>
1 parent e8ef4bb commit b5dc0ff

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

drivers/firmware/arm_scmi/raw_mode.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,6 @@ static int scmi_raw_mode_setup(struct scmi_raw_mode_info *raw,
11111111
int i;
11121112

11131113
for (i = 0; i < num_chans; i++) {
1114-
void *xret;
11151114
struct scmi_raw_queue *q;
11161115

11171116
q = scmi_raw_queue_init(raw);
@@ -1120,13 +1119,12 @@ static int scmi_raw_mode_setup(struct scmi_raw_mode_info *raw,
11201119
goto err_xa;
11211120
}
11221121

1123-
xret = xa_store(&raw->chans_q, channels[i], q,
1122+
ret = xa_insert(&raw->chans_q, channels[i], q,
11241123
GFP_KERNEL);
1125-
if (xa_err(xret)) {
1124+
if (ret) {
11261125
dev_err(dev,
11271126
"Fail to allocate Raw queue 0x%02X\n",
11281127
channels[i]);
1129-
ret = xa_err(xret);
11301128
goto err_xa;
11311129
}
11321130
}
@@ -1322,6 +1320,12 @@ void scmi_raw_message_report(void *r, struct scmi_xfer *xfer,
13221320
dev = raw->handle->dev;
13231321
q = scmi_raw_queue_select(raw, idx,
13241322
SCMI_XFER_IS_CHAN_SET(xfer) ? chan_id : 0);
1323+
if (!q) {
1324+
dev_warn(dev,
1325+
"RAW[%d] - NO queue for chan 0x%X. Dropping report.\n",
1326+
idx, chan_id);
1327+
return;
1328+
}
13251329

13261330
/*
13271331
* Grab the msg_q_lock upfront to avoid a possible race between

0 commit comments

Comments
 (0)