1
linux/lib
Masami Hiramatsu (Google) cb6fcef8b4 objpool: fix to make percpu slot allocation more robust
Since gfp & GFP_ATOMIC == GFP_ATOMIC is true for GFP_KERNEL | GFP_HIGH, it
will use kmalloc if user specifies that combination.  Here the reason why
combining the __vmalloc_node() and kmalloc_node() is that the vmalloc does
not support all GFP flag, especially GFP_ATOMIC.  So we should check if
gfp & (GFP_ATOMIC | GFP_KERNEL) != GFP_ATOMIC for vmalloc first.  This
ensures caller can sleep.  And for the robustness, even if vmalloc fails,
it should retry with kmalloc to allocate it.

Link: https://lkml.kernel.org/r/173008598713.1262174.2959179484209897252.stgit@mhiramat.roam.corp.google.com
Fixes: aff1871bfc ("objpool: fix choosing allocation for percpu slots")
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Closes: https://lore.kernel.org/all/CAHk-=whO+vSH+XVRio8byJU8idAWES0SPGVZ7KAVdc4qrV0VUA@mail.gmail.com/
Cc: Leo Yan <leo.yan@arm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Matt Wu <wuqiang.matt@bytedance.com>
Cc: Mikel Rychliski <mikel@mikelr.com>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Cc: Viktor Malik <vmalik@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2024-11-07 14:14:58 -08:00
..
842
crypto
dim dimlib: use *-y instead of *-objs in Makefile 2024-09-01 20:43:40 -07:00
fonts lib/fonts: Fix visiblity of SUN12x22 and TER16x32 if DRM_PANIC 2024-06-24 13:18:02 +02:00
kunit
lz4
lzo
math
pldmfw
raid6
reed_solomon
test_fortify fortify: use if_changed_dep to record header dependency in *.cmd files 2024-08-15 09:26:02 -07:00
vdso
xz move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
zlib_deflate
zlib_dfltcc lib/zlib: unpoison DFLTCC output buffers 2024-07-03 19:30:23 -07:00
zlib_inflate
zstd
.gitignore
alloc_tag.c
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c
asn1_encoder.c
assoc_array.c
atomic64_test.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/*_test.ko 2024-06-24 22:25:06 -07:00
atomic64.c
audit.c
base64.c
bcd.c lib/bcd: optimize _bin2bcd() for improved performance 2024-09-01 20:43:33 -07:00
bch.c
bitfield_kunit.c
bitmap-str.c
bitmap.c
bitrev.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
bootconfig-data.S
bootconfig.c
bsearch.c
btree.c
bucket_locks.c
bug.c
build_OID_registry lib/build_OID_registry: avoid non-destructive substitution for Perl < 5.13.2 compat 2024-07-06 11:39:51 -07:00
buildid.c
bust_spinlocks.c kernel/panic: Drop unblank_screen call 2022-09-01 16:55:35 +02:00
check_signature.c
checksum_kunit.c lib: checksum: use ARRAY_SIZE() to improve assert_setup_correct() 2024-09-01 20:43:30 -07:00
checksum.c unify generic instances of csum_partial_copy_nocheck() 2020-08-20 15:45:14 -04:00
closure.c
clz_ctz.c lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels 2023-08-25 13:22:10 -07:00
clz_tab.c
cmdline_kunit.c
cmdline.c
cmpdi2.c
cmpxchg-emu.c
codetag.c
compat_audit.c
cpu_rmap.c
cpumask_kunit.c
cpumask.c bitmap patches for v6.7 2023-11-03 07:08:36 -10:00
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c
crc32defs.h
crc32test.c
crc64-rocksoft.c
crc64.c
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
ctype.c
debug_info.c
debug_locks.c
debugobjects.c debugobjects: Remove redundant checks in fill_pool() 2024-09-09 16:40:26 +02:00
dec_and_lock.c perf: Fix perf_event_pmu_context serialization 2023-01-31 20:37:18 +01:00
decompress_bunzip2.c
decompress_inflate.c
decompress_unlz4.c
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c xz: remove XZ_EXTERN and extern from functions 2024-09-01 20:43:27 -07:00
decompress_unzstd.c decompressor: provide missing prototypes 2023-06-09 17:44:17 -07:00
decompress.c
devmem_is_allowed.c
devres.c
dhry_1.c
dhry_2.c lib: add Dhrystone benchmark test 2023-02-02 22:50:01 -08:00
dhry_run.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
dhry.h
digsig.c
dump_stack.c
dynamic_debug.c
dynamic_queue_limits.c
earlycpio.c
errname.c parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes 2023-11-25 09:43:18 +01:00
error-inject.c lib: error-inject: remove error checking for debugfs_create_dir() 2023-08-18 10:18:55 -07:00
errseq.c
extable.c sparc32: switch to generic extables 2021-01-03 20:05:18 -05:00
fault-inject-usercopy.c lib, include/linux: add usercopy failure capability 2020-10-16 11:11:22 -07:00
fault-inject.c
fdt_addresses.c
fdt_empty_tree.c
fdt_ro.c of/lib: Allow scripts/dtc/libfdt to be used from kernel code 2012-07-23 13:54:52 +01:00
fdt_rw.c of/lib: Allow scripts/dtc/libfdt to be used from kernel code 2012-07-23 13:54:52 +01:00
fdt_strerror.c
fdt_sw.c
fdt_wip.c
fdt.c
find_bit_benchmark.c lib: bitmap: add missing MODULE_DESCRIPTION() macros 2024-06-18 10:40:52 -07:00
find_bit.c bitmap patches for 6.10 2024-05-21 15:29:01 -07:00
flex_proportions.c flex_proportions: remove unused fprop_local_single 2024-02-22 15:38:52 -08:00
fortify_kunit.c
fw_table.c
gen_crc32table.c
gen_crc64table.c lib: add rocksoft model crc64 2022-03-07 12:48:35 -07:00
genalloc.c Devicetree include cleanups for v6.6: 2023-08-30 17:04:28 -07:00
generic-radix-tree.c lib/generic-radix-tree.c: add preallocation 2024-09-09 09:41:47 -04:00
glob.c
globtest.c
group_cpus.c
hashtable_test.c
hexdump.c
hweight.c
idr.c ida: Fix crash in ida_free when the bitmap is empty 2023-12-21 10:02:28 -08:00
inflate.c
interval_tree_test.c
interval_tree.c
iomap_copy.c
iomap.c kmsan: add iomap support 2022-10-03 14:03:21 -07:00
iommu-helper.c
iov_iter.c
irq_poll.c
irq_regs.c
is_signed_type_kunit.c
is_single_threaded.c
kasprintf.c
Kconfig
Kconfig.debug
Kconfig.kasan Revert "kasan: Disable Software Tag-Based KASAN with GCC" 2024-10-23 16:04:30 +01:00
Kconfig.kcsan Kernel concurrency sanitizer (KCSAN) updates for v6.3 2023-02-25 13:02:20 -08:00
Kconfig.kfence
Kconfig.kgdb
Kconfig.kmsan mm/slab: remove CONFIG_SLAB from all Kconfig and Makefile 2023-12-05 11:14:40 +01:00
Kconfig.ubsan
kfifo.c
klist.c
kobject_uevent.c
kobject.c
kstrtox.c
kstrtox.h
kunit_iov_iter.c mm: Define struct folio_queue and ITER_FOLIOQ to handle a sequence of folios 2024-09-12 12:20:21 +02:00
libcrc32c.c
linear_ranges.c
list_debug.c list: Introduce CONFIG_LIST_HARDENED 2023-08-15 14:57:25 -07:00
list_sort.c
list-test.c
llist.c llist: add llist_del_first_this() 2023-10-16 12:44:06 -04:00
locking-selftest-hardirq.h
locking-selftest-mutex.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest.c
lockref.c
logic_iomem.c lib/logic_iomem: correct fallback config references 2022-03-11 10:42:56 +01:00
logic_pio.c
lru_cache.c
lshrdi3.c
lwq.c
Makefile Many singleton patches - please see the various changelogs for details. 2024-09-21 08:20:50 -07:00
maple_tree.c
memcat_p.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
memcpy_kunit.c
memory-notifier-error-inject.c
memregion.c
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nlattr.c netlink: add nla be16/32 types to minlen array 2024-02-22 19:01:55 -08:00
nmi_backtrace.c
notifier-error-inject.c lib: remove error checking for debugfs_create_dir() 2023-08-18 10:18:55 -07:00
notifier-error-inject.h
objagg.c
objpool.c
of-reconfig-notifier-error-inject.c
oid_registry.c lib/oid_registry.c: remove redundant assignment to variable num 2022-11-18 13:55:06 -08:00
once.c once: rename _SLOW to _SLEEPABLE 2022-10-03 17:34:32 -07:00
overflow_kunit.c
packing.c
parman.c
parser.c
percpu_counter.c lib/percpu_counter: add missing __percpu qualifier to a cast 2024-09-01 20:43:34 -07:00
percpu_test.c
percpu-refcount.c
plist.c lib/plist.c: avoid worst case scenario in plist_add 2024-06-24 22:25:10 -07:00
pm-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
polynomial.c
radix-tree.c radix tree: remove unused variable 2023-08-21 13:07:22 -07:00
radix-tree.h
random32.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ratelimit.c
rbtree_test.c
rbtree.c lib/rbtree.c: fix the example typo 2024-07-04 23:43:10 -07:00
rcuref.c
ref_tracker.c lib/ref_tracker: remove warnings in case of allocation failure 2023-06-05 15:28:42 -07:00
refcount.c
rhashtable.c
sbitmap.c
scatterlist.c
seq_buf.c
sg_pool.c
sg_split.c
siphash_kunit.c
siphash.c
slub_kunit.c
smp_processor_id.c
sort.c lib/sort: optimize heapsort for handling final 2 or 3 elements 2024-06-24 22:25:03 -07:00
stackdepot.c stackdepot: use gfp_nested_mask() instead of open coded masking 2024-05-19 14:40:44 -07:00
stackinit_kunit.c
stmp_device.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
string_helpers_kunit.c string: kunit: add missing MODULE_DESCRIPTION() macros 2024-06-28 08:54:55 -07:00
string_helpers.c
string_kunit.c
string.c
strncpy_from_user.c
strnlen_user.c
syscall.c sched: Change task_struct::state 2021-06-18 11:43:09 +02:00
test_bitmap.c
test_bitops.c
test_bits.c
test_blackhole_dev.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_bpf.c
test_debug_virtual.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
test_dynamic_debug.c dyndbg: add missing MODULE_DESCRIPTION() macro 2024-06-04 17:40:02 +02:00
test_firmware.c
test_fprobe.c fprobe: Pass return address to the handlers 2023-06-06 21:39:55 +09:00
test_fpu_glue.c lib: fix the NULL vs IS_ERR() bug for debugfs_create_dir() 2024-09-01 20:43:40 -07:00
test_fpu_impl.c selftests/fpu: move FP code to a separate translation unit 2024-05-19 14:36:20 -07:00
test_fpu.h
test_free_pages.c
test_hash.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_hexdump.c
test_hmm_uapi.h
test_hmm.c
test_ida.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_kmod.c
test_kprobes.c
test_linear_ranges.c
test_list_sort.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_lockup.c lib/test_lockup: fix kernel pointer check for separate address spaces 2022-02-25 09:36:06 +01:00
test_maple_tree.c test_maple_tree: add the missing MODULE_DESCRIPTION() macro 2024-07-03 19:30:05 -07:00
test_memcat_p.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_meminit.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_min_heap.c
test_module.c
test_objagg.c
test_objpool.c
test_parman.c
test_printf.c
test_ref_tracker.c
test_rhashtable.c
test_scanf.c vsprintf: add missing MODULE_DESCRIPTION() macro 2024-06-12 13:26:28 +02:00
test_sort.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_static_key_base.c
test_static_keys.c
test_sysctl.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
test_ubsan.c
test_uuid.c uuid: add missing MODULE_DESCRIPTION() macro 2024-06-24 22:25:06 -07:00
test_vmalloc.c
test_xarray.c
test-kstrtox.c KUnit: add missing MODULE_DESCRIPTION() macros for lib/test_*.ko 2024-06-24 22:25:11 -07:00
textsearch.c
timerqueue.c
trace_readwrite.c lib/trace_readwrite.c:: replace asm-generic/io with linux/io 2023-12-29 12:22:29 -08:00
ts_bm.c lib/ts: add missing MODULE_DESCRIPTION() macros 2024-06-24 22:25:04 -07:00
ts_fsm.c lib/ts: add missing MODULE_DESCRIPTION() macros 2024-06-24 22:25:04 -07:00
ts_kmp.c
ubsan.c
ubsan.h
ucmpdi2.c
ucs2_string.c lib/ucs2_string: Add UCS-2 strscpy function 2023-09-13 10:18:42 -07:00
union_find.c
usercopy_kunit.c kunit/usercopy: Add missing MODULE_DESCRIPTION() 2024-07-02 10:11:45 -06:00
usercopy.c uaccess: always export _copy_[from|to]_user with CONFIG_RUST 2024-07-08 23:44:01 +02:00
uuid.c
vsprintf.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
win_minmax.c
xarray.c The usual shower of singleton fixes and minor series all over MM, 2024-05-19 09:21:03 -07:00
xxhash.c