net: qrtr: fix usage of idr in port assignment to socket
authorNecip Fazil Yildiran <necip@google.com>
Mon, 17 Aug 2020 15:54:48 +0000 (15:54 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Aug 2020 07:31:47 +0000 (09:31 +0200)
commit351366ffef2c85e089039a76f45f196c5904acfa
treea97e223ba1f5f5616e046d1bc31110673173a05b
parentc4c76ec584a749283eeb5df606498290c08cee65
net: qrtr: fix usage of idr in port assignment to socket

[ Upstream commit 8dfddfb79653df7c38a9c8c4c034f242a36acee9 ]

Passing large uint32 sockaddr_qrtr.port numbers for port allocation
triggers a warning within idr_alloc() since the port number is cast
to int, and thus interpreted as a negative number. This leads to
the rejection of such valid port numbers in qrtr_port_assign() as
idr_alloc() fails.

To avoid the problem, switch to idr_alloc_u32() instead.

Fixes: bdabad3e363d ("net: Add Qualcomm IPC router")
Reported-by: syzbot+f31428628ef672716ea8@syzkaller.appspotmail.com
Signed-off-by: Necip Fazil Yildiran <necip@google.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/qrtr/qrtr.c