UBSAN: shift-out-of-bounds in xprt_do_reserve

From: syzbot
Date: Tue Feb 09 2021 - 21:18:38 EST


Hello,

syzbot found the following issue on:

HEAD commit: dd86e7fa Merge tag 'pci-v5.11-fixes-2' of git://git.kernel..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=105930c4d00000
kernel config: https://syzkaller.appspot.com/x/.config?x=266a5362c89c8127
dashboard link: https://syzkaller.appspot.com/bug?extid=f3a0fa110fd630ab56c8
compiler: Debian clang version 11.0.1-2
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17ba3038d00000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15cf0d64d00000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+f3a0fa110fd630ab56c8@xxxxxxxxxxxxxxxxxxxxxxxxx

================================================================================
UBSAN: shift-out-of-bounds in net/sunrpc/xprt.c:658:14
shift exponent 536870976 is too large for 64-bit type 'unsigned long'
CPU: 1 PID: 8411 Comm: syz-executor902 Not tainted 5.11.0-rc6-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:79 [inline]
dump_stack+0x137/0x1be lib/dump_stack.c:120
ubsan_epilogue lib/ubsan.c:148 [inline]
__ubsan_handle_shift_out_of_bounds+0x432/0x4d0 lib/ubsan.c:395
xprt_calc_majortimeo net/sunrpc/xprt.c:658 [inline]
xprt_init_majortimeo net/sunrpc/xprt.c:686 [inline]
xprt_request_init net/sunrpc/xprt.c:1805 [inline]
xprt_do_reserve+0x751/0x770 net/sunrpc/xprt.c:1815
__rpc_execute+0x1e1/0xb00 net/sunrpc/sched.c:891
rpc_run_task+0x5a4/0x740 net/sunrpc/clnt.c:1140
rpc_call_sync net/sunrpc/clnt.c:1169 [inline]
rpc_ping net/sunrpc/clnt.c:2682 [inline]
rpc_create_xprt+0x2f3/0x700 net/sunrpc/clnt.c:477
rpc_create+0x5df/0x8a0 net/sunrpc/clnt.c:593
nfs_create_rpc_client+0x5a0/0x740 fs/nfs/client.c:536
nfs_init_client+0x53/0xf0 fs/nfs/client.c:653
nfs_init_server fs/nfs/client.c:692 [inline]
nfs_create_server+0x82d/0x2130 fs/nfs/client.c:996
nfs_try_get_tree+0x385/0x1040 fs/nfs/super.c:939
vfs_get_tree+0x86/0x270 fs/super.c:1496
do_new_mount fs/namespace.c:2881 [inline]
path_mount+0x17ad/0x2a00 fs/namespace.c:3211
do_mount fs/namespace.c:3224 [inline]
__do_sys_mount fs/namespace.c:3432 [inline]
__se_sys_mount+0x28c/0x320 fs/namespace.c:3409
do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x43ef89
Code: 28 c3 e8 2a 14 00 00 66 2e 0f 1f 84 00 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffe0a856338 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 0030656c69662f2e RCX: 000000000043ef89
RDX: 0000000020fb5ffc RSI: 0000000020000080 RDI: 00000000200000c0
RBP: 0000000000402f70 R08: 000000002000a000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000403000
R13: 0000000000000000 R14: 00000000004ac018 R15: 0000000000400488
================================================================================


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
syzbot can test patches for this issue, for details see:
https://goo.gl/tpsmEJ#testing-patches