net: qrtr: Allow forwarded services
authorLoic Poulain <loic.poulain@linaro.org>
Fri, 6 Nov 2020 17:33:27 +0000 (18:33 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Nov 2020 23:29:34 +0000 (15:29 -0800)
A remote endpoint (immediate neighbors node) can forward services
from other nodes (non-immadiate), in that case ctrl packet node ID
(offering distant service) can differ from the qrtr source node
(forwarding the packet).

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/qrtr/ns.c

index b8559c88243188a7ddcf42419562f82235feda0e..56aaf8cb6527e2f05e8987ddcdbd8bffd99de0d7 100644 (file)
@@ -517,10 +517,6 @@ static int ctrl_cmd_new_server(struct sockaddr_qrtr *from,
                port = from->sq_port;
        }
 
-       /* Don't accept spoofed messages */
-       if (from->sq_node != node_id)
-               return -EINVAL;
-
        srv = server_add(service, instance, node_id, port);
        if (!srv)
                return -EINVAL;
@@ -559,10 +555,6 @@ static int ctrl_cmd_del_server(struct sockaddr_qrtr *from,
                port = from->sq_port;
        }
 
-       /* Don't accept spoofed messages */
-       if (from->sq_node != node_id)
-               return -EINVAL;
-
        /* Local servers may only unregister themselves */
        if (from->sq_node == qrtr_ns.local_node && from->sq_port != port)
                return -EINVAL;