Re: [PATCH v2 20/20] ppc: propagate the calling conventions change down to csum_partial_copy_generic()
From: Jason A. Donenfeld <Jason@zx2c4.com>
Date: 2020-10-14 22:26:58
Hi Al, On Fri, Jul 24, 2020 at 02:25:46AM +0100, Al Viro wrote:
From: Al Viro <viro@zeniv.linux.org.uk> ... and get rid of the pointless fallback in the wrappers. On error it used to zero the unwritten area and calculate the csum of the entire thing. Not wanting to do it in assembler part had been very reasonable; doing that in the first place, OTOH... In case of an error the caller discards the data we'd copied, along with whatever checksum it might've had.
This patch is causing crashes in WireGuard's CI over at https://www.wireguard.com/build-status/ . Apparently sending a simple network packet winds up triggering refcount_t's warn-on-saturate code. I don't know if the new assembly failed to reset some flag or if something else is up. I can start digging into it if you want, but I thought I should let you know first about the issue. The splat follows below. Thanks, Jason $ ping -c 10 -f -W 1 192.168.241.1 PING 192.168.241.1 (192.168.241.1) 56(84) bytes of data. [ 1.432922] ------------[ cut here ]------------ [ 1.433069] refcount_t: saturated; leaking memory. [ 1.433344] WARNING: CPU: 3 PID: 90 at refcount_warn_saturate+0x100/0x1bc [ 1.433646] CPU: 3 PID: 90 Comm: ping Not tainted 5.9.0+ #3 [ 1.433797] NIP: c01a6fa0 LR: c01a6fa0 CTR: c01ccbec [ 1.433964] REGS: cfacfb80 TRAP: 0700 Not tainted (5.9.0+) [ 1.434102] MSR: 00029000 <CE,EE,ME> CR: 28022404 XER: 00000000 [ 1.434345] [ 1.434345] GPR00: c01a6fa0 cfacfc38 cf8eeae0 00000026 3fffefff cfacfa90 cfacfaa0 00021000 [ 1.434345] GPR08: 0f4a1000 00000000 c08b4674 c0918704 42022404 00000000 cfa34180 00000000 [ 1.434345] GPR16: 00000000 cf8ef004 00000000 00000000 00000040 00000000 00000000 cfbac230 [ 1.434345] GPR24: cfacfce8 c02a802c 00000000 cfa34180 cfacfc58 c02aa53c 55c0a4ff 00000000 [ 1.435471] NIP [c01a6fa0] refcount_warn_saturate+0x100/0x1bc [ 1.435615] LR [c01a6fa0] refcount_warn_saturate+0x100/0x1bc [ 1.435825] Call Trace: [ 1.435922] [cfacfc38] [c01a6fa0] refcount_warn_saturate+0x100/0x1bc (unreliable) [ 1.436149] [cfacfc48] [c02a7f14] __ip_append_data.isra.0+0x8a8/0xde0 [ 1.436302] [cfacfce8] [c02a84e0] ip_append_data.part.0+0x94/0xf0 [ 1.436438] [cfacfd18] [c02dffe0] raw_sendmsg+0x298/0xa84 [ 1.436544] [cfacfe48] [c020b9ec] __sys_sendto+0xdc/0x13c [ 1.436641] [cfacff38] [c000f1dc] ret_from_syscall+0x0/0x38 [ 1.436824] --- interrupt: c01 at 0xb7e44f00 [ 1.436824] LR = 0xb7e21ba0 [ 1.437038] Instruction dump: [ 1.437239] 3d20c092 39291bc1 89490001 2c0a0000 4082ff64 3c60c040 7c0802a6 39400001 [ 1.437439] 38633b74 90010014 99490001 4be9b6e1 <0fe00000> 80010014 7c0803a6 4bffff38 [ 1.437753] ---[ end trace aaa4b4788958d0a6 ]---