aboutsummaryrefslogtreecommitdiff
path: root/kernel/ethosu_device.c
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2023-05-16 16:53:09 +0200
committerMikael Olsson <mikael.olsson@arm.com>2023-05-16 17:50:41 +0200
commit5fcc28c7a90fc3f4ebc16a3697f14c9c668dda62 (patch)
tree9f5b0a173853a09bf107c4c2e65e6cf6d6041387 /kernel/ethosu_device.c
parentfd6b8dc67c139a454942582dc64c0e2786a031e7 (diff)
downloadethos-u-linux-driver-stack-5fcc28c7a90fc3f4ebc16a3697f14c9c668dda62.tar.gz
Fix shared state race in mailbox message handling23.05-rc223.05
When IOCTL calls are handled and when sending messages to the mailbox, the device mutex is locked. However, when received mailbox messages are handled, the mutex is not locked so there are possible concurrent access races in shared states e.g. an inference's status may be updated while another IOCTL caller is reading it. To avoid these races, the mutex is now locked while messages received from the mailbox are handled. Change-Id: I4d51da542410ab02fb0f890c939269c642176b2c
Diffstat (limited to 'kernel/ethosu_device.c')
-rw-r--r--kernel/ethosu_device.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c
index 002e934..e1dde65 100644
--- a/kernel/ethosu_device.c
+++ b/kernel/ethosu_device.c
@@ -81,6 +81,8 @@ static int ethosu_handle_rpmsg(struct rpmsg_device *rpdev,
return -EBADMSG;
}
+ device_lock(dev);
+
dev_info(dev,
"Msg: magic=0x%08x, type=%u, msg_id=%llu",
rpmsg->header.magic, rpmsg->header.type, rpmsg->header.msg_id);
@@ -218,6 +220,8 @@ static int ethosu_handle_rpmsg(struct rpmsg_device *rpdev,
break;
}
+ device_unlock(dev);
+
return ret;
}