]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
staging: vchiq_core: handle NULL result of find_service_by_handle
authorStefan Wahren <stefan.wahren@i2se.com>
Sun, 23 Jan 2022 20:02:22 +0000 (21:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Apr 2022 18:03:08 +0000 (20:03 +0200)
[ Upstream commit ca225857faf237234d2fffe5d1919467dfadd822 ]

In case of an invalid handle the function find_servive_by_handle
returns NULL. So take care of this and avoid a NULL pointer dereference.

Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1642968143-19281-18-git-send-email-stefan.wahren@i2se.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c

index 7fe20d4b7ba28a4179e574bca845fce86ebdc3f4..b7295236671c148a948211fbd44533b42d2f81b1 100644 (file)
@@ -2306,6 +2306,9 @@ void vchiq_msg_queue_push(unsigned int handle, struct vchiq_header *header)
        struct vchiq_service *service = find_service_by_handle(handle);
        int pos;
 
+       if (!service)
+               return;
+
        while (service->msg_queue_write == service->msg_queue_read +
                VCHIQ_MAX_SLOTS) {
                if (wait_for_completion_interruptible(&service->msg_queue_pop))
@@ -2326,6 +2329,9 @@ struct vchiq_header *vchiq_msg_hold(unsigned int handle)
        struct vchiq_header *header;
        int pos;
 
+       if (!service)
+               return NULL;
+
        if (service->msg_queue_write == service->msg_queue_read)
                return NULL;