android_kernel_sony_sdm845/lib
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gao Xiang d350c03c36 lib/lz4: explicitly support in-place decompression
LZ4 final literal copy could be overlapped when doing
in-place decompression, so it's unsafe to just use memcpy()
on an optimized memcpy approach but memmove() instead.

Upstream LZ4 has updated this years ago [1] (and the impact
is non-sensible [2] plus only a few bytes remain), this commit
just synchronizes LZ4 upstream code to the kernel side as well.

It can be observed as EROFS in-place decompression failure
on specific files when X86_FEATURE_ERMS is unsupported,
memcpy() optimization of commit 59daa706fb ("x86, mem:
Optimize memcpy by avoiding memory false dependece") will
be enabled then.

Currently most modern x86-CPUs support ERMS, these CPUs just
use "rep movsb" approach so no problem at all. However, it can
still be verified with forcely disabling ERMS feature...

arch/x86/lib/memcpy_64.S:
        ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \
-                     "jmp memcpy_erms", X86_FEATURE_ERMS
+                     "jmp memcpy_orig", X86_FEATURE_ERMS

We didn't observe any strange on arm64/arm/x86 platform before
since most memcpy() would behave in an increasing address order
("copy upwards" [3]) and it's the correct order of in-place
decompression but it really needs an update to memmove() for sure
considering it's an undefined behavior according to the standard
and some unique optimization already exists in the kernel.

[1] 33cb8518ac
[2] https://github.com/lz4/lz4/pull/717#issuecomment-497818921
[3] https://sourceware.org/bugzilla/show_bug.cgi?id=12518

Link: https://lkml.kernel.org/r/20201122030749.2698994-1-hsiangkao@redhat.com
Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
Change-Id: Id3274d42bd85c6d4d493f9a269cf5be4e0b17074
Reviewed-by: Nick Terrell <terrelln@fb.com>
Cc: Yann Collet <yann.collet.73@gmail.com>
Cc: Miao Xie <miaoxie@huawei.com>
Cc: Chao Yu <yuchao0@huawei.com>
Cc: Li Guifu <bluce.liguifu@huawei.com>
Cc: Guo Xuenan <guoxuenan@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Oktapra Amtono <oktapra.amtono@gmail.com>
Signed-off-by: Anush02198 <Anush.4376@gmail.com>
Signed-off-by: Divyanshu-Modi <divyan.m05@gmail.com>
Signed-off-by: Tashfin Shakeer Rhythm <tashfinshakeerrhythm@gmail.com>
(cherry picked from commit 50a8262855642392b5471cb7c0dd8e9dae9531bf)
Signed-off-by: TogoFire <togofire@mailfence.com>
Signed-off-by: Kanishk <kanishkthederp@gmail.com>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 18:07:03 +07:00
..
842 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2016-03-17 21:38:27 -07:00
crypto lib/crypto: blake2s: move hmac construction into wireguard 2022-06-25 11:45:02 +02:00
fonts Fonts: Replace discarded const qualifier 2020-11-10 10:24:02 +01:00
lz4 lib/lz4: explicitly support in-place decompression 2026-05-15 18:07:03 +07:00
lzo
mpi Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into HEAD 2020-06-30 02:33:58 +03:00
raid6 lib/raid6/test: fix multiple definition linking error 2022-04-20 09:06:30 +02:00
reed_solomon rslib: Fix handling of of caller provided syndrome 2019-08-04 09:33:23 +02:00
vdso ANDROID: clock_gettime(CLOCK_BOOTTIME,) slows down >20x 2020-06-30 02:50:11 +03:00
xz lib/xz: Validate the value before assigning it to an enum variable 2021-11-26 11:48:30 +01:00
zlib_deflate zlib_deflate/deftree: remove bi_reverse() 2015-09-10 13:29:01 -07:00
zlib_inflate lib/zlib: remove outdated and incorrect pre-increment optimization 2020-06-30 15:38:29 -04:00
zstd UPSTREAM: lib: Add zstd modules 2018-08-23 12:05:06 -07:00
.gitignore
argv_split.c
asn1_decoder.c ASN.1: check for error from ASN1_OP_END__ACT actions 2017-12-14 09:28:12 +01:00
assoc_array.c assoc_array: Fix BUG_ON during garbage collect 2022-06-06 08:19:46 +02:00
atomic64.c UPSTREAM: atomics/generic: Define atomic64_fetch_add_unless() 2026-05-15 17:59:14 +07:00
atomic64_test.c atomic64: no need for CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE 2016-10-07 18:46:30 -07:00
audit.c
bcd.c
bch.c
bitmap.c bitmap: Add bitmap_alloc(), bitmap_zalloc() and bitmap_free() 2020-01-29 10:24:41 +01:00
bitrev.c
bsearch.c kprobes: Prohibit probing on bsearch() 2019-04-05 22:29:11 +02:00
btree.c treewide: Remove old email address 2015-11-23 09:44:58 +01:00
bug.c UPSTREAM: bug: use %pB in BUG and stack protector failure 2019-03-28 21:13:06 -07:00
build_OID_registry
bust_spinlocks.c
chacha.c BACKPORT, FROMGIT: crypto: chacha - add XChaCha12 support 2018-12-13 09:34:58 -08:00
check_signature.c
checksum.c ipv4: Update parameters for csum_tcpudp_magic to their original types 2016-03-13 23:55:13 -04:00
clz_ctz.c
clz_tab.c
cmdline.c lib/cmdline.c: fix get_options() overflow while parsing ranges 2017-06-29 13:00:28 +02:00
compat_audit.c
cordic.c
cpu-notifier-error-inject.c fault-injection/cpu: Convert to hotplug state machine 2016-09-19 21:44:31 +02:00
cpu_rmap.c
cpumask.c sched/fair, cpumask: Export for_each_cpu_wrap() 2017-07-21 07:42:23 +02:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc7.c
crc8.c
crc16.c
crc32.c lib/crc32.c: fix trivial typo in preprocessor condition 2020-10-29 09:05:39 +01:00
crc32defs.h
ctype.c
debug_info.c
debug_locks.c locking/lockdep: Fix debug_locks off performance problem 2018-11-13 11:16:48 -08:00
debugobjects.c debugobjects: avoid recursive calls with kmemleak 2018-12-17 09:38:35 +01:00
dec_and_lock.c
decompress.c
decompress_bunzip2.c lib/decompressors: use real out buf size for gunzip with kernel 2015-09-10 13:29:01 -07:00
decompress_inflate.c lib/decompressors: use real out buf size for gunzip with kernel 2015-09-10 13:29:01 -07:00
decompress_unlz4.c lib/decompress_unlz4.c: correctly handle zero-padding around initrds. 2021-07-20 16:21:12 +02:00
decompress_unlzma.c lib/decompress_unlzma: Do a NULL check for pointer 2015-09-10 13:29:01 -07:00
decompress_unlzo.c lib/decompressors: use real out buf size for gunzip with kernel 2015-09-10 13:29:01 -07:00
decompress_unxz.c lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression 2021-11-26 11:48:30 +01:00
devres.c devres: allow const resource arguments 2020-01-29 10:24:28 +01:00
digsig.c This is the 4.9.59 stable release 2017-10-30 09:27:09 +01:00
div64.c lib/div64.c: off by one in shift 2019-04-20 09:07:54 +02:00
dma-debug.c dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC 2022-06-14 16:52:29 +02:00
dma-noop.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dump_stack.c dump_stack: avoid the livelock of the dump_lock 2019-11-12 19:15:43 +01:00
dynamic_debug.c dyndbg: let query-modname override actual module name 2022-10-26 13:15:43 +02:00
dynamic_queue_limits.c
earlycpio.c lib/cpio: Make find_cpio_data()'s offset arg optional 2016-06-08 11:04:19 +02:00
error-inject.c BACKPORT: error-injection: Separate error-injection from kprobe 2026-05-15 17:56:33 +07:00
extable.c extable: add support for relative extables to search and sort routines 2016-02-24 14:57:26 +00:00
fault-inject.c fault-inject: fix inverted interval/probability values in printk 2015-10-23 17:55:10 +09:00
fdt.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c uapi: rename ext2_swab() to swab() and share globally in swab.h 2022-06-25 11:45:14 +02:00
flex_array.c
flex_proportions.c lib+mm: fix few spelling mistakes 2016-02-15 11:18:23 +01:00
gcd.c lib/GCD.c: use binary GCD algorithm instead of Euclidean 2016-05-20 17:58:30 -07:00
gen_crc32table.c
genalloc.c lib/genalloc: fix the overflow when size is too big 2021-01-12 19:49:01 +01:00
glob.c
halfmd4.c lib/halfmd4.c: use rol32 inline function in the ROUND macro 2015-11-06 17:50:42 -08:00
hexdump.c hex2bin: fix access beyond string end 2022-05-12 12:14:54 +02:00
hweight.c x86/hweight: Get rid of the special calling convention 2016-06-08 15:01:02 +02:00
idr.c ida: don't use BUG_ON() for debugging 2022-07-12 16:26:25 +02:00
inflate.c
int_sqrt.c lib/int_sqrt: optimize initial value compute 2019-04-05 22:29:04 +02:00
interval_tree.c
interval_tree_test.c lib/interval_tree_test.c: allow users to limit scope of endpoint 2018-12-21 14:11:30 +01:00
iomap.c lib: iomap: Add MSM RTB support 2016-09-26 15:03:43 -07:00
iomap_copy.c lib/iomap_copy.c: add __ioread32_copy() 2016-01-20 17:09:18 -08:00
iommu-common.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2015-11-05 16:34:48 -08:00
iommu-helper.c lib/iommu-helper: skip to next segment 2016-08-02 19:35:07 -04:00
ioremap.c ioremap: Update pgtable free interfaces with addr 2018-08-17 20:59:29 +02:00
iov_iter.c lib/iov_iter: initialize "flags" in new pipe_buffer 2022-02-23 11:56:41 +01:00
irq_poll.c This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
irq_regs.c
is_single_threaded.c lib/is_single_threaded.c: change current_is_single_threaded() to use for_each_thread() 2015-11-06 17:50:42 -08:00
jedec_ddr_data.c
kasprintf.c lib/kasprintf.c: add sanity check to kvasprintf 2016-01-16 11:17:27 -08:00
Kconfig Merge remote-tracking branch 'common/android-4.9-q' into android12-4.9-sdm845 2022-03-31 22:52:51 +03:00
Kconfig.debug BACKPORT: kbuild: add ability to generate BTF type info for vmlinux 2026-05-15 17:58:04 +07:00
Kconfig.kasan mm, kasan: switch SLUB to stackdepot, enable memory quarantine for SLUB 2016-07-28 16:07:41 -07:00
Kconfig.kgdb kgdb: depends on VT 2016-05-23 17:04:14 -07:00
Kconfig.kmemcheck
Kconfig.ubsan ubsan: allow to disable the null sanitizer 2016-09-20 14:26:08 +02:00
kfifo.c Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()" 2020-01-29 10:24:30 +01:00
klist.c scsi: klist: Make it safe to use klists in atomic context 2018-10-03 17:01:45 -07:00
kobject.c kobject: Export kobject_get_unless_zero() 2020-01-14 20:04:25 +01:00
kobject_uevent.c kobject_uevent: remove warning in init_uevent_argv() 2021-05-22 10:40:33 +02:00
kstrtox.c lib/kstrtox.c: smaller _parse_integer() 2016-10-11 15:06:30 -07:00
kstrtox.h
lcm.c
libcrc32c.c crypto: Work around deallocated stack frame reference gcc bug on sparc. 2017-06-24 07:11:17 +02:00
list_debug.c Merge android-4.9.129 (b727d1c) into msm-4.9 2018-11-07 13:12:49 +08:00
list_sort.c
llist.c lib/llist.c: fix data race in llist_del_first 2015-11-06 17:50:42 -08:00
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-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 locking/selftest: Fix output since KERN_CONT changes 2016-11-25 07:12:19 +01:00
lockref.c
lru_cache.c lru_cache: Converted lc_seq_printf_status to return void 2015-11-25 09:22:02 -07:00
Makefile BACKPORT: error-injection: Separate error-injection from kprobe 2026-05-15 17:56:33 +07:00
md5.c
memory-notifier-error-inject.c
memweight.c
net_utils.c
netdev-notifier-error-inject.c net: Add support for CHANGEUPPER notifier error injection 2015-12-03 11:49:23 -05:00
nlattr.c net: fix nla_strcmp to handle more then one trailing null character 2022-06-14 16:52:38 +02:00
nmi_backtrace.c nmi_backtrace: generate one-line reports for idle cpus 2016-10-07 18:46:30 -07:00
nodemask.c nodemask: Fix return values to be unsigned 2022-06-14 16:52:40 +02:00
notifier-error-inject.c lib/notifier-error-inject: fix error when writing -errno to debugfs file 2023-01-07 12:07:14 +01:00
notifier-error-inject.h
of-reconfig-notifier-error-inject.c
oid_registry.c 509: fix printing uninitialized stack memory when OID is empty 2018-02-25 11:05:48 +01:00
once.c once: make helper generic for calling functions once 2015-10-08 05:26:36 -07:00
parser.c
pci_iomap.c libnvdimm for 4.3: 2015-09-08 14:35:59 -07:00
percpu-refcount.c percpu-refcount: init ->confirm_switch member properly 2016-08-11 13:52:23 -04:00
percpu_counter.c percpu_counter: update debugobjects fixup callbacks return type 2016-05-19 19:12:14 -07:00
percpu_ida.c mm, page_alloc: rename __GFP_WAIT to __GFP_RECLAIM 2015-11-06 17:50:42 -08:00
percpu_test.c
plist.c
pm-notifier-error-inject.c
qmi_encdec.c soc: qcom: qmi_encdec: Restrict string length in decode 2019-03-05 16:21:06 +05:30
qmi_encdec_priv.h soc: qcom: Add snapshot of QMI 2016-11-11 17:31:37 -08:00
radix-tree.c Revert "radix tree test suite: fix compilation" 2016-12-09 10:41:42 -08:00
random32.c random: replace custom notifier chain with standard one 2022-06-25 11:45:11 +02:00
ratelimit.c ratelimit: Fix data-races in ___ratelimit(). 2022-09-05 10:23:55 +02:00
rational.c
rbtree.c rbtree: cache leftmost node internally 2022-01-27 08:47:42 +01:00
rbtree_test.c lib/rbtree-test: lower default params 2018-12-21 14:11:30 +01:00
reciprocal_div.c
refcount.c BACKPORT: locking/refcount: Create unchecked atomic_t implementation 2026-05-15 17:54:59 +07:00
rhashtable.c rhashtable: add schedule points 2018-10-18 09:13:24 +02:00
sbitmap.c sbitmap: initialize weight to zero 2016-09-19 08:19:40 -06:00
scatterlist.c lib/scatterlist: add sg_init_marker() helper 2026-05-15 17:55:47 +07:00
seq_buf.c seq_buf: Fix overflow in seq_buf_putmem_hex() 2021-07-20 16:21:09 +02:00
sg_pool.c lib: scatterlist: move SG pool code from SCSI driver to lib/sg_pool.c 2016-04-15 16:53:14 -04:00
sg_split.c
sha1.c lib/crypto: sha1: re-roll loops to reduce code size 2022-06-25 11:45:02 +02:00
show_mem.c lib/show_mem.c: correct reserved memory calculation 2015-09-08 15:35:28 -07:00
siphash.c siphash: use one source of truth for siphash permutations 2022-06-25 11:45:14 +02:00
smp_processor_id.c
sort.c
stackdepot.c lib: stackdepot: turn depot_lock spinlock to raw_spinlock 2021-05-22 10:40:34 +02:00
stmp_device.c
string.c Merge remote-tracking branch 'common/android-4.9-q' into lineage-18.1-caf-sdm845 2021-09-16 19:05:49 +03:00
string_helpers.c string_helpers: add kstrdup_quotable_file 2016-04-21 10:47:26 +10:00
strncpy_from_user.c BACKPORT: make 'user_access_begin()' do 'access_ok()' 2026-02-04 00:23:05 +02:00
strnlen_user.c BACKPORT: make 'user_access_begin()' do 'access_ok()' 2026-02-04 00:23:05 +02:00
swiotlb.c swiotlb: skip swiotlb_bounce when orig_addr is zero 2022-07-02 16:17:16 +02:00
syscall.c lib/syscall: Clear return values when no stack 2017-04-08 09:30:35 +02:00
test-kstrtox.c kstrto*: accept "-0" for signed conversion 2015-09-10 13:29:01 -07:00
test-string_helpers.c lib/test-string_helpers.c: fix and improve string_get_size() tests 2016-02-03 08:28:43 -08:00
test_bitmap.c test_bitmap: unit tests for lib/bitmap.c 2016-02-19 22:54:09 -05:00
test_bpf.c BACKPORT: treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 295 2026-05-15 17:57:45 +07:00
test_firmware.c test: firmware_class: add asynchronous request trigger 2016-01-07 13:44:22 -07:00
test_hash.c lib/test_hash.c: fix warning in preprocessor symbol evaluation 2016-09-01 17:52:01 -07:00
test_hexdump.c test_hexdump: use memcpy instead of strncpy 2018-12-08 13:05:04 +01:00
test_kasan.c This is the 4.9.214 stable release 2020-02-17 10:05:12 +01:00
test_module.c
test_printf.c UPSTREAM: lib/test_printf.c: accept "ptrval" as valid result for plain 'p' tests 2022-02-21 16:30:33 +01:00
test_rhashtable.c rhashtable-test: Fix max_size parameter description 2016-08-08 12:52:42 -07:00
test_siphash.c siphash: implement HalfSipHash1-3 for hash tables 2019-08-25 10:51:42 +02:00
test_static_key_base.c
test_static_keys.c locking/static_keys: Avoid nested functions 2016-02-09 10:27:29 +01:00
test_user_copy.c usercopy: Adjust tests to deal with SMAP/PAN 2017-06-14 15:06:05 +02:00
test_uuid.c lib/uuid: add a test module 2016-05-30 15:26:57 -07:00
textsearch.c
timerqueue.c lib/timerqueue: Rely on rbtree semantics for next timer 2022-01-27 08:47:42 +01:00
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings 2019-05-10 17:52:07 +02:00
ubsan.h lib/ubsan: add type mismatch handler for new GCC/Clang 2018-02-17 13:21:20 +01:00
ucs2_string.c lib/ucs2_string: Speed up ucs2_utf8size() 2016-09-09 16:08:46 +01:00
uuid.c lib/uuid.c: use correct offset in uuid parser 2016-05-30 15:26:57 -07:00
vsprintf.c BACKPORT: symbol lookup: introduce dereference_symbol_descriptor() 2026-05-15 17:57:02 +07:00
win_minmax.c lib/win_minmax: windowed min or max estimator 2016-09-21 00:22:59 -04:00
xxhash.c UPSTREAM: lib: Add xxhash module 2018-08-23 12:05:06 -07:00