diff options
author | Mike McTernan <mikemcternan@google.com> | 2024-02-16 04:56:59 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-16 04:56:59 +0000 |
commit | 97e090fbf0e204533d88aecdc45802955ddb3361 (patch) | |
tree | 078ed00ac6910eaaf7f1d916c9fbb3ff53aee868 | |
parent | cfe21b08e64f7c535734f2d117b31fc8d0b9a810 (diff) | |
parent | 6d47ef7bcec49d67a5f12a856f47ccdf888ffff4 (diff) | |
download | trusty-97e090fbf0e204533d88aecdc45802955ddb3361.tar.gz |
trusty: ipc_msg: don't touch the iov if num_iov is 0 am: 6d47ef7bce
Original change: https://android-review.googlesource.com/c/trusty/lk/trusty/+/2919787
Change-Id: I360044b00670cdccf982ac870e97965377ea15f6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | lib/trusty/ipc_msg.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/trusty/ipc_msg.c b/lib/trusty/ipc_msg.c index f8d595b..1842811 100644 --- a/lib/trusty/ipc_msg.c +++ b/lib/trusty/ipc_msg.c @@ -396,7 +396,7 @@ static int kern_msg_read_locked(struct ipc_msg_queue* mq, int32_t msg_id, uint32_t offset, struct ipc_msg_kern* kmsg) { - int ret; + int ret = 0; struct msg_item* item; item = msg_check_read_item(mq, msg_id, offset); @@ -406,10 +406,12 @@ static int kern_msg_read_locked(struct ipc_msg_queue* mq, const uint8_t* buf = msg_queue_get_buf(mq, item) + offset; size_t bytes_left = item->len - offset; - ret = membuf_to_kern_iovec((const struct iovec_kern*)kmsg->iov, - kmsg->num_iov, buf, bytes_left); - if (ret < 0) - return ret; + if (likely(kmsg->num_iov)) { + ret = membuf_to_kern_iovec((const struct iovec_kern*)kmsg->iov, + kmsg->num_iov, buf, bytes_left); + if (ret < 0) + return ret; + } uint hcnt = MIN(kmsg->num_handles, item->num_handles); for (uint i = 0; i < hcnt; i++) { |