Revision 9acf636215a6ce9362fe618e7da4913b8bfe84c8 authored by Ziyang Xuan on 09 October 2021, 07:40:18 UTC, committed by Marc Kleine-Budde on 17 October 2021, 12:17:55 UTC
Using wait_event_interruptible() to wait for complete transmission, but do not check the result of wait_event_interruptible() which can be interrupted. It will result in TX buffer has multiple accessors and the later process interferes with the previous process. Following is one of the problems reported by syzbot. ============================================================= WARNING: CPU: 0 PID: 0 at net/can/isotp.c:840 isotp_tx_timer_handler+0x2e0/0x4c0 CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.13.0-rc7+ #68 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014 RIP: 0010:isotp_tx_timer_handler+0x2e0/0x4c0 Call Trace: <IRQ> ? isotp_setsockopt+0x390/0x390 __hrtimer_run_queues+0xb8/0x610 hrtimer_run_softirq+0x91/0xd0 ? rcu_read_lock_sched_held+0x4d/0x80 __do_softirq+0xe8/0x553 irq_exit_rcu+0xf8/0x100 sysvec_apic_timer_interrupt+0x9e/0xc0 </IRQ> asm_sysvec_apic_timer_interrupt+0x12/0x20 Add result check for wait_event_interruptible() in isotp_sendmsg() to avoid multiple accessers for tx buffer. Fixes: e057dd3fc20f ("can: add ISO 15765-2:2016 transport protocol") Link: https://lore.kernel.org/all/10ca695732c9dd267c76a3c30f37aefe1ff7e32f.1633764159.git.william.xuanziyang@huawei.com Cc: stable@vger.kernel.org Reported-by: syzbot+78bab6958a614b0c80b9@syzkaller.appspotmail.com Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com> Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
1 parent a4fbe70
File | Mode | Size |
---|---|---|
842 | ||
crypto | ||
dim | ||
fonts | ||
kunit | ||
livepatch | ||
lz4 | ||
lzo | ||
math | ||
mpi | ||
pldmfw | ||
raid6 | ||
reed_solomon | ||
vdso | ||
xz | ||
zlib_deflate | ||
zlib_dfltcc | ||
zlib_inflate | ||
zstd | ||
.gitignore | -rw-r--r-- | 121 bytes |
Kconfig | -rw-r--r-- | 16.1 KB |
Kconfig.debug | -rw-r--r-- | 85.7 KB |
Kconfig.kasan | -rw-r--r-- | 7.3 KB |
Kconfig.kcsan | -rw-r--r-- | 9.5 KB |
Kconfig.kfence | -rw-r--r-- | 3.0 KB |
Kconfig.kgdb | -rw-r--r-- | 5.6 KB |
Kconfig.ubsan | -rw-r--r-- | 6.3 KB |
Makefile | -rw-r--r-- | 12.0 KB |
argv_split.c | -rw-r--r-- | 2.1 KB |
ashldi3.c | -rw-r--r-- | 541 bytes |
ashrdi3.c | -rw-r--r-- | 565 bytes |
asn1_decoder.c | -rw-r--r-- | 13.2 KB |
asn1_encoder.c | -rw-r--r-- | 10.3 KB |
assoc_array.c | -rw-r--r-- | 51.8 KB |
atomic64.c | -rw-r--r-- | 4.6 KB |
atomic64_test.c | -rw-r--r-- | 6.4 KB |
audit.c | -rw-r--r-- | 1.8 KB |
bcd.c | -rw-r--r-- | 297 bytes |
bch.c | -rw-r--r-- | 38.3 KB |
bitfield_kunit.c | -rw-r--r-- | 4.4 KB |
bitmap.c | -rw-r--r-- | 44.5 KB |
bitrev.c | -rw-r--r-- | 1.9 KB |
bootconfig.c | -rw-r--r-- | 19.9 KB |
bsearch.c | -rw-r--r-- | 1.2 KB |
btree.c | -rw-r--r-- | 19.2 KB |
bucket_locks.c | -rw-r--r-- | 1.4 KB |
bug.c | -rw-r--r-- | 5.9 KB |
build_OID_registry | -rwxr-xr-x | 4.5 KB |
buildid.c | -rw-r--r-- | 5.0 KB |
bust_spinlocks.c | -rw-r--r-- | 676 bytes |
check_signature.c | -rw-r--r-- | 635 bytes |
checksum.c | -rw-r--r-- | 4.1 KB |
clz_ctz.c | -rw-r--r-- | 1.2 KB |
clz_tab.c | -rw-r--r-- | 891 bytes |
cmdline.c | -rw-r--r-- | 5.8 KB |
cmdline_kunit.c | -rw-r--r-- | 4.2 KB |
cmpdi2.c | -rw-r--r-- | 501 bytes |
compat_audit.c | -rw-r--r-- | 832 bytes |
cpu_rmap.c | -rw-r--r-- | 7.6 KB |
cpumask.c | -rw-r--r-- | 7.1 KB |
crc-ccitt.c | -rw-r--r-- | 5.6 KB |
crc-itu-t.c | -rw-r--r-- | 2.7 KB |
crc-t10dif.c | -rw-r--r-- | 3.2 KB |
crc16.c | -rw-r--r-- | 2.7 KB |
crc32.c | -rw-r--r-- | 9.3 KB |
crc32defs.h | -rw-r--r-- | 1.6 KB |
crc32test.c | -rw-r--r-- | 37.4 KB |
crc4.c | -rw-r--r-- | 1003 bytes |
crc64.c | -rw-r--r-- | 1.8 KB |
crc7.c | -rw-r--r-- | 2.5 KB |
crc8.c | -rw-r--r-- | 2.4 KB |
ctype.c | -rw-r--r-- | 1.4 KB |
debug_info.c | -rw-r--r-- | 782 bytes |
debug_locks.c | -rw-r--r-- | 1.2 KB |
debugobjects.c | -rw-r--r-- | 35.4 KB |
dec_and_lock.c | -rw-r--r-- | 1.2 KB |
decompress.c | -rw-r--r-- | 1.8 KB |
decompress_bunzip2.c | -rw-r--r-- | 23.5 KB |
decompress_inflate.c | -rw-r--r-- | 4.8 KB |
decompress_unlz4.c | -rw-r--r-- | 4.2 KB |
decompress_unlzma.c | -rw-r--r-- | 15.8 KB |
decompress_unlzo.c | -rw-r--r-- | 6.4 KB |
decompress_unxz.c | -rw-r--r-- | 10.9 KB |
decompress_unzstd.c | -rw-r--r-- | 10.2 KB |
devmem_is_allowed.c | -rw-r--r-- | 683 bytes |
devres.c | -rw-r--r-- | 13.0 KB |
digsig.c | -rw-r--r-- | 5.5 KB |
dump_stack.c | -rw-r--r-- | 3.0 KB |
dynamic_debug.c | -rw-r--r-- | 28.1 KB |
dynamic_queue_limits.c | -rw-r--r-- | 4.3 KB |
earlycpio.c | -rw-r--r-- | 3.6 KB |
errname.c | -rw-r--r-- | 3.7 KB |
error-inject.c | -rw-r--r-- | 5.5 KB |
errseq.c | -rw-r--r-- | 6.6 KB |
extable.c | -rw-r--r-- | 2.9 KB |
fault-inject-usercopy.c | -rw-r--r-- | 823 bytes |
fault-inject.c | -rw-r--r-- | 5.9 KB |
fdt.c | -rw-r--r-- | 69 bytes |
fdt_addresses.c | -rw-r--r-- | 79 bytes |
fdt_empty_tree.c | -rw-r--r-- | 80 bytes |
fdt_ro.c | -rw-r--r-- | 72 bytes |
fdt_rw.c | -rw-r--r-- | 72 bytes |
fdt_strerror.c | -rw-r--r-- | 78 bytes |
fdt_sw.c | -rw-r--r-- | 72 bytes |
fdt_wip.c | -rw-r--r-- | 73 bytes |
find_bit.c | -rw-r--r-- | 3.3 KB |
find_bit_benchmark.c | -rw-r--r-- | 3.9 KB |
flex_proportions.c | -rw-r--r-- | 6.8 KB |
gen_crc32table.c | -rw-r--r-- | 3.3 KB |
gen_crc64table.c | -rw-r--r-- | 1.4 KB |
genalloc.c | -rw-r--r-- | 26.4 KB |
generic-radix-tree.c | -rw-r--r-- | 5.3 KB |
glob.c | -rw-r--r-- | 3.5 KB |
globtest.c | -rw-r--r-- | 4.2 KB |
hexdump.c | -rw-r--r-- | 7.4 KB |
hweight.c | -rw-r--r-- | 1.9 KB |
idr.c | -rw-r--r-- | 17.5 KB |
inflate.c | -rw-r--r-- | 38.7 KB |
interval_tree.c | -rw-r--r-- | 540 bytes |
interval_tree_test.c | -rw-r--r-- | 3.4 KB |
iomap.c | -rw-r--r-- | 9.1 KB |
iomap_copy.c | -rw-r--r-- | 2.2 KB |
iommu-helper.c | -rw-r--r-- | 755 bytes |
iov_iter.c | -rw-r--r-- | 48.1 KB |
irq_poll.c | -rw-r--r-- | 5.4 KB |
irq_regs.c | -rw-r--r-- | 394 bytes |
is_single_threaded.c | -rw-r--r-- | 1.2 KB |
kasprintf.c | -rw-r--r-- | 1.4 KB |
kfifo.c | -rw-r--r-- | 12.1 KB |
klist.c | -rw-r--r-- | 10.4 KB |
kobject.c | -rw-r--r-- | 28.2 KB |
kobject_uevent.c | -rw-r--r-- | 18.9 KB |
kstrtox.c | -rw-r--r-- | 10.7 KB |
kstrtox.h | -rw-r--r-- | 411 bytes |
libcrc32c.c | -rw-r--r-- | 2.0 KB |
linear_ranges.c | -rw-r--r-- | 8.1 KB |
list-test.c | -rw-r--r-- | 17.4 KB |
list_debug.c | -rw-r--r-- | 1.8 KB |
list_sort.c | -rw-r--r-- | 8.2 KB |
llist.c | -rw-r--r-- | 2.5 KB |
locking-selftest-hardirq.h | -rw-r--r-- | 246 bytes |
locking-selftest-mutex.h | -rw-r--r-- | 159 bytes |
locking-selftest-rlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock.h | -rw-r--r-- | 197 bytes |
locking-selftest-rsem.h | -rw-r--r-- | 202 bytes |
locking-selftest-rtmutex.h | -rw-r--r-- | 162 bytes |
locking-selftest-softirq.h | -rw-r--r-- | 246 bytes |
locking-selftest-spin-hardirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin-softirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin.h | -rw-r--r-- | 157 bytes |
locking-selftest-wlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock.h | -rw-r--r-- | 197 bytes |
locking-selftest-wsem.h | -rw-r--r-- | 202 bytes |
locking-selftest.c | -rw-r--r-- | 63.7 KB |
lockref.c | -rw-r--r-- | 4.5 KB |
logic_iomem.c | -rw-r--r-- | 7.1 KB |
logic_pio.c | -rw-r--r-- | 8.5 KB |
lru_cache.c | -rw-r--r-- | 18.8 KB |
lshrdi3.c | -rw-r--r-- | 559 bytes |
memcat_p.c | -rw-r--r-- | 753 bytes |
memory-notifier-error-inject.c | -rw-r--r-- | 1.1 KB |
memregion.c | -rw-r--r-- | 429 bytes |
memweight.c | -rw-r--r-- | 1.0 KB |
muldi3.c | -rw-r--r-- | 1.7 KB |
net_utils.c | -rw-r--r-- | 640 bytes |
netdev-notifier-error-inject.c | -rw-r--r-- | 1.5 KB |
nlattr.c | -rw-r--r-- | 26.9 KB |
nmi_backtrace.c | -rw-r--r-- | 3.2 KB |
nodemask.c | -rw-r--r-- | 653 bytes |
notifier-error-inject.c | -rw-r--r-- | 2.5 KB |
notifier-error-inject.h | -rw-r--r-- | 653 bytes |
objagg.c | -rw-r--r-- | 28.3 KB |
of-reconfig-notifier-error-inject.c | -rw-r--r-- | 1.3 KB |
oid_registry.c | -rw-r--r-- | 4.4 KB |
once.c | -rw-r--r-- | 1.5 KB |
packing.c | -rw-r--r-- | 6.5 KB |
parman.c | -rw-r--r-- | 10.6 KB |
parser.c | -rw-r--r-- | 8.9 KB |
pci_iomap.c | -rw-r--r-- | 5.7 KB |
percpu-refcount.c | -rw-r--r-- | 15.3 KB |
percpu_counter.c | -rw-r--r-- | 6.4 KB |
percpu_test.c | -rw-r--r-- | 3.2 KB |
plist.c | -rw-r--r-- | 5.9 KB |
pm-notifier-error-inject.c | -rw-r--r-- | 1.2 KB |
radix-tree.c | -rw-r--r-- | 43.1 KB |
random32.c | -rw-r--r-- | 18.5 KB |
ratelimit.c | -rw-r--r-- | 1.6 KB |
rbtree.c | -rw-r--r-- | 17.1 KB |
rbtree_test.c | -rw-r--r-- | 9.4 KB |
refcount.c | -rw-r--r-- | 4.8 KB |
rhashtable.c | -rw-r--r-- | 29.5 KB |
sbitmap.c | -rw-r--r-- | 16.4 KB |
scatterlist.c | -rw-r--r-- | 28.3 KB |
seq_buf.c | -rw-r--r-- | 10.0 KB |
sg_pool.c | -rw-r--r-- | 4.2 KB |
sg_split.c | -rw-r--r-- | 5.0 KB |
sha1.c | -rw-r--r-- | 6.3 KB |
show_mem.c | -rw-r--r-- | 1.1 KB |
siphash.c | -rw-r--r-- | 11.9 KB |
slub_kunit.c | -rw-r--r-- | 3.3 KB |
smp_processor_id.c | -rw-r--r-- | 1.4 KB |
sort.c | -rw-r--r-- | 8.4 KB |
stackdepot.c | -rw-r--r-- | 10.1 KB |
stmp_device.c | -rw-r--r-- | 1.9 KB |
string.c | -rw-r--r-- | 26.1 KB |
string_helpers.c | -rw-r--r-- | 15.8 KB |
strncpy_from_user.c | -rw-r--r-- | 3.9 KB |
strnlen_user.c | -rw-r--r-- | 3.3 KB |
syscall.c | -rw-r--r-- | 2.7 KB |
test-kstrtox.c | -rw-r--r-- | 17.3 KB |
test-string_helpers.c | -rw-r--r-- | 14.9 KB |
test_bitmap.c | -rw-r--r-- | 27.8 KB |
test_bitops.c | -rw-r--r-- | 2.5 KB |
test_bits.c | -rw-r--r-- | 1.8 KB |
test_blackhole_dev.c | -rw-r--r-- | 2.5 KB |
test_bpf.c | -rw-r--r-- | 213.6 KB |
test_debug_virtual.c | -rw-r--r-- | 981 bytes |
test_firmware.c | -rw-r--r-- | 27.7 KB |
test_fpu.c | -rw-r--r-- | 2.0 KB |
test_free_pages.c | -rw-r--r-- | 995 bytes |
test_hash.c | -rw-r--r-- | 6.3 KB |
test_hexdump.c | -rw-r--r-- | 6.3 KB |
test_hmm.c | -rw-r--r-- | 29.3 KB |
test_hmm_uapi.h | -rw-r--r-- | 2.4 KB |
test_ida.c | -rw-r--r-- | 4.3 KB |
test_kasan.c | -rw-r--r-- | 30.5 KB |
test_kasan_module.c | -rw-r--r-- | 3.3 KB |
test_kmod.c | -rw-r--r-- | 29.9 KB |
test_linear_ranges.c | -rw-r--r-- | 7.5 KB |
test_list_sort.c | -rw-r--r-- | 3.3 KB |
test_lockup.c | -rw-r--r-- | 16.3 KB |
test_memcat_p.c | -rw-r--r-- | 2.2 KB |
test_meminit.c | -rw-r--r-- | 9.7 KB |
test_min_heap.c | -rw-r--r-- | 4.3 KB |
test_module.c | -rw-r--r-- | 794 bytes |
test_objagg.c | -rw-r--r-- | 24.6 KB |
test_overflow.c | -rw-r--r-- | 22.3 KB |
test_parman.c | -rw-r--r-- | 11.2 KB |
test_printf.c | -rw-r--r-- | 19.0 KB |
test_rhashtable.c | -rw-r--r-- | 20.0 KB |
test_scanf.c | -rw-r--r-- | 28.9 KB |
test_siphash.c | -rw-r--r-- | 7.5 KB |
test_sort.c | -rw-r--r-- | 907 bytes |
test_stackinit.c | -rw-r--r-- | 15.2 KB |
test_static_key_base.c | -rw-r--r-- | 1.6 KB |
test_static_keys.c | -rw-r--r-- | 5.6 KB |
test_string.c | -rw-r--r-- | 3.9 KB |
test_strscpy.c | -rw-r--r-- | 4.0 KB |
test_sysctl.c | -rw-r--r-- | 3.9 KB |
test_ubsan.c | -rw-r--r-- | 2.9 KB |
test_user_copy.c | -rw-r--r-- | 9.1 KB |
test_uuid.c | -rw-r--r-- | 3.4 KB |
test_vmalloc.c | -rw-r--r-- | 10.9 KB |
test_xarray.c | -rw-r--r-- | 46.8 KB |
textsearch.c | -rw-r--r-- | 9.3 KB |
timerqueue.c | -rw-r--r-- | 2.3 KB |
ts_bm.c | -rw-r--r-- | 5.1 KB |
ts_fsm.c | -rw-r--r-- | 10.4 KB |
ts_kmp.c | -rw-r--r-- | 4.1 KB |
ubsan.c | -rw-r--r-- | 10.0 KB |
ubsan.h | -rw-r--r-- | 1.8 KB |
ucmpdi2.c | -rw-r--r-- | 568 bytes |
ucs2_string.c | -rw-r--r-- | 2.5 KB |
usercopy.c | -rw-r--r-- | 2.2 KB |
uuid.c | -rw-r--r-- | 2.9 KB |
vsprintf.c | -rw-r--r-- | 87.1 KB |
win_minmax.c | -rw-r--r-- | 3.4 KB |
xarray.c | -rw-r--r-- | 58.5 KB |
xxhash.c | -rw-r--r-- | 12.7 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...