lkml.org 
[lkml]   [2020]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 08/65] net: qrtr: send msgs from local of same id as broadcast
    Date
    From: Wang Wenhu <wenhu.wang@vivo.com>

    [ Upstream commit 6dbf02acef69b0742c238574583b3068afbd227c ]

    If the local node id(qrtr_local_nid) is not modified after its
    initialization, it equals to the broadcast node id(QRTR_NODE_BCAST).
    So the messages from local node should not be taken as broadcast
    and keep the process going to send them out anyway.

    The definitions are as follow:
    static unsigned int qrtr_local_nid = NUMA_NO_NODE;

    Fixes: fdf5fd397566 ("net: qrtr: Broadcast messages only from control port")
    Signed-off-by: Wang Wenhu <wenhu.wang@vivo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/qrtr/qrtr.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/net/qrtr/qrtr.c
    +++ b/net/qrtr/qrtr.c
    @@ -763,20 +763,21 @@ static int qrtr_sendmsg(struct socket *s

    node = NULL;
    if (addr->sq_node == QRTR_NODE_BCAST) {
    - enqueue_fn = qrtr_bcast_enqueue;
    - if (addr->sq_port != QRTR_PORT_CTRL) {
    + if (addr->sq_port != QRTR_PORT_CTRL &&
    + qrtr_local_nid != QRTR_NODE_BCAST) {
    release_sock(sk);
    return -ENOTCONN;
    }
    + enqueue_fn = qrtr_bcast_enqueue;
    } else if (addr->sq_node == ipc->us.sq_node) {
    enqueue_fn = qrtr_local_enqueue;
    } else {
    - enqueue_fn = qrtr_node_enqueue;
    node = qrtr_node_lookup(addr->sq_node);
    if (!node) {
    release_sock(sk);
    return -ECONNRESET;
    }
    + enqueue_fn = qrtr_node_enqueue;
    }

    plen = (len + 3) & ~3;

    \
     
     \ /
      Last update: 2020-04-20 15:00    [W:4.118 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site