[PATCH mptcp-next] Squash to "mptcp: add get_subflow wrappers" III

Geliang Tang posted 1 patch 1 year, 6 months ago
Failed in applying to current master (apply log)
net/mptcp/sched.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH mptcp-next] Squash to "mptcp: add get_subflow wrappers" III
Posted by Geliang Tang 1 year, 6 months ago
This patch is for "register default scheduler" v2. Fix the following error:

---------
<1>[  357.589992] BUG: kernel NULL pointer dereference, address: 0000000000000000
<1>[  357.590009] #PF: supervisor read access in kernel mode
<1>[  357.590020] #PF: error_code(0x0000) - not-present page
<6>[  357.590029] PGD 11aac7067 P4D 11aac7067 PUD 15c888067 PMD 0
<4>[  357.590051] Oops: 0000 [#1] PREEMPT SMP NOPTI
<4>[  357.590064] CPU: 0 PID: 9878 Comm: mptcp_connect Not tainted 6.0.0-mptcp+ #1343
<4>[  357.590078] Hardware name: LENOVO 20UASA0901/20UASA0901, BIOS N2WET27W (1.17 ) 03/29/2021
<4>[  357.590088] RIP: 0010:mptcp_sched_get_retrans+0x44/0x90
<4>[  357.590109] Code: 01 66 90 48 c7 c2 00 16 bc 9a 48 c7 c6 17 b9 01 9b 48 c7 c7 98 6d ab a2 e8 b9 4a 64 ff 48 8b 83 20 07 00 00 48 89 ee 48 89 df <48> 8b 00 ff d0 0f 1f 00 66 90 48 c7 c2 00 16 bc 9a 48 c7 c6 30 b9
<4>[  357.590122] RSP: 0018:ffff9fe18683bd28 EFLAGS: 00010282
<4>[  357.590135] RAX: 0000000000000000 RBX: ffff8fdc4567f800 RCX: 0000000000000001
<4>[  357.590145] RDX: 0000000000000000 RSI: ffff9fe18683bd60 RDI: ffff8fdc4567f800
<4>[  357.590154] RBP: ffff9fe18683bd60 R08: 0000000000000000 R09: c0000000ffefffff
<4>[  357.590164] R10: ffff9fe18683bd30 R11: ffff9fe18683bb18 R12: 0000000000000010
<4>[  357.590174] R13: ffff8fdc40271920 R14: ffff8fdcdb23d240 R15: ffff8fdc4567f800
<4>[  357.590183] FS:  00007fd57658d740(0000) GS:ffff8fdfad600000(0000) knlGS:0000000000000000
<4>[  357.590194] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4>[  357.590204] CR2: 0000000000000000 CR3: 0000000105e06003 CR4: 00000000003706f0
<4>[  357.590214] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
<4>[  357.590222] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
<4>[  357.590230] Call Trace:
<4>[  357.590240]  <TASK>
<4>[  357.590253]  __mptcp_retrans+0x9f/0x350
<4>[  357.590274]  ? __local_bh_enable_ip+0x37/0x80
<4>[  357.590288]  ? mptcp_pm_free_anno_list+0xa6/0x100
<4>[  357.590302]  mptcp_release_cb+0x174/0x270
<4>[  357.590319]  release_sock+0x40/0x90
<4>[  357.590332]  mptcp_close+0x29/0x70
<4>[  357.590345]  inet_release+0x3c/0x80
<4>[  357.590358]  __sock_release+0x3a/0xc0
<4>[  357.590370]  sock_close+0x11/0x20
<4>[  357.590379]  __fput+0x8f/0x250
<4>[  357.590389]  task_work_run+0x67/0xa0
<4>[  357.590402]  exit_to_user_mode_prepare+0x203/0x210
<4>[  357.590415]  syscall_exit_to_user_mode+0x17/0x40
<4>[  357.590423]  do_syscall_64+0x46/0x90
<4>[  357.590435]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
<4>[  357.590446] RIP: 0033:0x7fd575f07343
<4>[  357.590455] Code: f1 15 02 00 0f 1f 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 64 8b 04 25 18 00 00 00 85 c0 75 14 b8 03 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 3d f3 c3 0f 1f 00 53 89 fb 48 83 ec 10 e8 44
<4>[  357.590463] RSP: 002b:00007fff7da16f48 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
<4>[  357.590472] RAX: 0000000000000000 RBX: 0000000000000003 RCX: 00007fd575f07343
<4>[  357.590477] RDX: 0000000000000000 RSI: 00007fff7da14eb0 RDI: 0000000000000003
<4>[  357.590482] RBP: 00000000006072a0 R08: 00007fd5761e9044 R09: 00007fd5761e90a0
<4>[  357.590487] R10: 00007fd575e07468 R11: 0000000000000246 R12: 0000000000000000
<4>[  357.590493] R13: 00007fff7da16f90 R14: 0000000000000000 R15: 00007fff7da17e5d
<4>[  357.590501]  </TASK>
<4>[  357.590505] Modules linked in: uhid xt_bpf sch_netem ipt_REJECT btusb btrtl btbcm btintel bluetooth ecdh_generic ecc nf_tables iptable_nat bpfilter i2c_designware_platform iwlmvm i2c_designware_core iwlwifi x86_pkg_temp_thermal intel_lpss_pci intel_lpss mfd_core thinkpad_acpi ledtrig_audio platform_profile battery intel_pmc_core intel_hid hid_multitouch hid_generic usbhid nvme nvme_core i2c_hid_acpi i2c_hid pinctrl_cannonlake sg dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua efivarfs
<4>[  357.590589] CR2: 0000000000000000
<4>[  357.590596] ---[ end trace 0000000000000000 ]---
<4>[  361.714975] RIP: 0010:mptcp_sched_get_retrans+0x44/0x90
<4>[  361.714990] Code: 01 66 90 48 c7 c2 00 16 bc 9a 48 c7 c6 17 b9 01 9b 48 c7 c7 98 6d ab a2 e8 b9 4a 64 ff 48 8b 83 20 07 00 00 48 89 ee 48 89 df <48> 8b 00 ff d0 0f 1f 00 66 90 48 c7 c2 00 16 bc 9a 48 c7 c6 30 b9
<4>[  361.714992] RSP: 0018:ffff9fe18683bd28 EFLAGS: 00010282
<4>[  361.714995] RAX: 0000000000000000 RBX: ffff8fdc4567f800 RCX: 0000000000000001
<4>[  361.714996] RDX: 0000000000000000 RSI: ffff9fe18683bd60 RDI: ffff8fdc4567f800
<4>[  361.715013] RBP: ffff9fe18683bd60 R08: 0000000000000000 R09: c0000000ffefffff
<4>[  361.715015] R10: ffff9fe18683bd30 R11: ffff9fe18683bb18 R12: 0000000000000010
<4>[  361.715016] R13: ffff8fdc40271920 R14: ffff8fdcdb23d240 R15: ffff8fdc4567f800
<4>[  361.715017] FS:  00007fd57658d740(0000) GS:ffff8fdfad600000(0000) knlGS:0000000000000000
<4>[  361.715019] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4>[  361.715020] CR2: 0000000000000000 CR3: 0000000105e06003 CR4: 00000000003706f0
<4>[  361.715022] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
<4>[  361.715023] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
<6>[  361.812605] IPv6: ADDRCONF(NETDEV_CHANGE): ns1eth1: link becomes ready
<6>[  361.820442] IPv6: ADDRCONF(NETDEV_CHANGE): ns1eth2: link becomes ready
<6>[  361.828501] IPv6: ADDRCONF(NETDEV_CHANGE): ns1eth3: link becomes ready
<6>[  361.837312] IPv6: ADDRCONF(NETDEV_CHANGE): ns1eth4: link becomes ready
<7>[  361.842062] MPTCP: subflow=00000000c9892109
----------

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/sched.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c
index 99d7df8d9b58..1ff717e492d7 100644
--- a/net/mptcp/sched.c
+++ b/net/mptcp/sched.c
@@ -164,6 +164,8 @@ int mptcp_sched_get_send(struct mptcp_sock *msk,
 	}
 
 	data->reinject = false;
+	if (!msk->sched)
+		return -EINVAL;
 	msk->sched->data_init(msk, data);
 	return msk->sched->get_subflow(msk, data);
 }
@@ -178,6 +180,8 @@ int mptcp_sched_get_retrans(struct mptcp_sock *msk,
 		return -EINVAL;
 
 	data->reinject = true;
+	if (!msk->sched)
+		return -EINVAL;
 	msk->sched->data_init(msk, data);
 	return msk->sched->get_subflow(msk, data);
 }
-- 
2.35.3