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 move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
crypto This push fixes a regression in mpi that broke RSA. 2024-10-21 09:59:43 -07:00
dim dimlib: use *-y instead of *-objs in Makefile 2024-09-01 20:43:40 -07:00
fonts
kunit The core clk framework is left largely untouched this time around except for 2024-09-23 15:01:48 -07:00
lz4 move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
lzo move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
math Many singleton patches - please see the various changelogs for details. 2024-09-21 08:20:50 -07:00
pldmfw move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
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 random: vDSO: minimize and simplify header includes 2024-09-13 17:28:35 +02:00
xz move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
zlib_deflate lib/zlib: add missing MODULE_DESCRIPTION() macro 2024-07-04 23:43:11 -07:00
zlib_dfltcc
zlib_inflate
zstd move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
.gitignore fortify: refactor test_fortify Makefile to fix some build problems 2024-08-15 09:26:02 -07:00
alloc_tag.c sysctl changes for 6.11-rc1 2024-07-16 14:24:29 -07:00
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c
asn1_encoder.c
assoc_array.c
atomic64_test.c
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 lib/bch.c: use swap() to improve code 2024-07-12 16:39:53 -07:00
bitfield_kunit.c
bitmap-str.c
bitmap.c
bitrev.c
bootconfig-data.S
bootconfig.c bootconfig: Remove duplicate included header file linux/bootconfig.h 2024-07-12 08:55:02 +09:00
bsearch.c
btree.c minmax: make generic MIN() and MAX() macros available everywhere 2024-07-28 15:49:18 -07:00
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 lib/buildid: Handle memfd_secret() files in build_id_parse() 2024-10-17 21:30:32 +02:00
bust_spinlocks.c
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
closure.c closures: use seq_putc() in debug_show() 2024-09-01 20:43:29 -07:00
clz_ctz.c
clz_tab.c
cmdline_kunit.c
cmdline.c
cmpdi2.c
cmpxchg-emu.c
codetag.c lib: alloc_tag_module_unload must wait for pending kfree_rcu calls 2024-10-17 00:28:07 -07:00
compat_audit.c
cpu_rmap.c
cpumask_kunit.c
cpumask.c
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
decompress_bunzip2.c decompress_bunzip2: fix rare decompression failure 2024-07-26 14:33:09 -07:00
decompress_inflate.c
decompress_unlz4.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
decompress_unlzma.c minmax: make generic MIN() and MAX() macros available everywhere 2024-07-28 15:49:18 -07:00
decompress_unlzo.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
decompress_unxz.c xz: remove XZ_EXTERN and extern from functions 2024-09-01 20:43:27 -07:00
decompress_unzstd.c
decompress.c
devmem_is_allowed.c
devres.c
dhry_1.c
dhry_2.c
dhry_run.c
dhry.h
digsig.c
dump_stack.c Linux 6.11-rc1 2024-07-30 09:30:11 -10:00
dynamic_debug.c dyndbg: use seq_putc() in ddebug_proc_show() 2024-09-01 20:43:29 -07:00
dynamic_queue_limits.c
earlycpio.c
errname.c
error-inject.c
errseq.c
extable.c
fault-inject-usercopy.c
fault-inject.c fault-inject: improve build for CONFIG_FAULT_INJECTION=n 2024-09-01 20:43:33 -07:00
fdt_addresses.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
fdt.c
find_bit_benchmark.c
find_bit.c
flex_proportions.c
fortify_kunit.c mm: kvmalloc: align kvrealloc() with krealloc() 2024-09-01 20:25:44 -07:00
fw_table.c
gen_crc32table.c
gen_crc64table.c
genalloc.c
generic-radix-tree.c lib/generic-radix-tree.c: add preallocation 2024-09-09 09:41:47 -04:00
glob.c lib: glob.c: added null check for character class 2024-09-09 16:47:41 -07:00
globtest.c
group_cpus.c
hashtable_test.c
hexdump.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
hweight.c
idr.c
inflate.c
interval_tree_test.c
interval_tree.c
iomap_copy.c
iomap.c
iommu-helper.c
iov_iter.c iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP 2024-10-28 13:39:35 +01:00
irq_poll.c softirq: Remove unused 'action' parameter from action callback 2024-08-20 17:13:40 +02:00
irq_regs.c
is_signed_type_kunit.c
is_single_threaded.c
kasprintf.c
Kconfig
Kconfig.debug lib/Kconfig.debug: fix grammar in RUST_BUILD_ASSERT_ALLOW 2024-10-07 19:13:03 +02:00
Kconfig.kasan Revert "kasan: Disable Software Tag-Based KASAN with GCC" 2024-10-23 16:04:30 +01:00
Kconfig.kcsan
Kconfig.kfence
Kconfig.kgdb
Kconfig.kmsan
Kconfig.ubsan x86/traps: Enable UBSAN traps on x86 2024-08-06 13:42:40 +02:00
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_sort.c
list-test.c Revert "list: test: fix tests for list_cut_position()" 2024-09-26 14:01:44 -07:00
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
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
locking-selftest.c
lockref.c
logic_iomem.c
logic_pio.c
lru_cache.c lib/lru_cache: fix spelling mistake "colision"->"collision" 2024-09-01 20:43:29 -07:00
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 maple_tree: correct tree corruption on spanning store 2024-10-17 08:35:10 -07:00
memcat_p.c
memcpy_kunit.c
memory-notifier-error-inject.c
memregion.c
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c
nmi_backtrace.c
notifier-error-inject.c
notifier-error-inject.h
objagg.c
objpool.c objpool: fix to make percpu slot allocation more robust 2024-11-07 14:14:58 -08:00
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c
overflow_kunit.c kunit/overflow: Fix UB in overflow_allocation_test 2024-08-15 09:24:55 -07:00
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
pm-notifier-error-inject.c
polynomial.c
radix-tree.c
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
refcount.c
rhashtable.c lib/rhashtable: cleanup fallback check in bucket_table_alloc() 2024-09-01 20:43:32 -07:00
sbitmap.c lib/sbitmap: define swap_lock as raw_spinlock_t 2024-09-20 00:20:06 -06:00
scatterlist.c mm: Define struct folio_queue and ITER_FOLIOQ to handle a sequence of folios 2024-09-12 12:20:21 +02:00
seq_buf.c
sg_pool.c
sg_split.c
siphash_kunit.c
siphash.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
slub_kunit.c slub/kunit: fix a WARNING due to unwrapped __kmalloc_cache_noprof 2024-10-23 09:50:58 +02:00
smp_processor_id.c
sort.c
stackdepot.c
stackinit_kunit.c
stmp_device.c
string_helpers_kunit.c
string_helpers.c lib/string_helpers: rework overflow-dependent code 2024-08-15 09:26:02 -07:00
string_kunit.c
string.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
strncpy_from_user.c x86: support user address masking instead of non-speculative conditional 2024-08-19 11:31:18 -07:00
strnlen_user.c x86: support user address masking instead of non-speculative conditional 2024-08-19 11:31:18 -07:00
syscall.c
test_bitmap.c
test_bitops.c
test_bits.c lib/test_bits.c: Add tests for GENMASK_U128() 2024-08-28 06:54:39 -07:00
test_blackhole_dev.c
test_bpf.c netdev_features: convert NETIF_F_LLTX to dev->lltx 2024-09-03 11:36:43 +02:00
test_debug_virtual.c
test_dynamic_debug.c
test_firmware.c
test_fprobe.c
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
test_fpu.h
test_free_pages.c
test_hash.c
test_hexdump.c
test_hmm_uapi.h
test_hmm.c lib: test_hmm: use min() to improve dmirror_exclusive() 2024-09-01 20:25:52 -07:00
test_ida.c
test_kmod.c
test_kprobes.c
test_linear_ranges.c
test_list_sort.c
test_lockup.c
test_maple_tree.c
test_memcat_p.c
test_meminit.c
test_min_heap.c
test_module.c
test_objagg.c
test_objpool.c lib: test_objpool: add missing MODULE_DESCRIPTION() macro 2024-09-01 20:43:23 -07:00
test_parman.c
test_printf.c printf: remove %pGt support 2024-09-03 21:15:42 -07:00
test_ref_tracker.c
test_rhashtable.c
test_scanf.c
test_sort.c
test_static_key_base.c
test_static_keys.c
test_sysctl.c
test_ubsan.c
test_uuid.c
test_vmalloc.c
test_xarray.c
test-kstrtox.c
textsearch.c
timerqueue.c
trace_readwrite.c
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c
ubsan.h
ucmpdi2.c
ucs2_string.c
union_find.c Union-Find: add a new module in kernel library 2024-07-30 13:04:36 -10:00
usercopy_kunit.c
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
xxhash.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00