mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
4ab8dafa792af9d6fde24b649fa634cb5b375495
1161715 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4ab8dafa79 |
FROMLIST: scsi: core: Retry passthrough commands if SCMD_RETRY_PASSTHROUGH is set
The SCSI core does not retry passthrough commands even if the SCSI device reports a retryable unit attention condition. Support retrying in this case by introducing the SCMD_RETRY_PASSTHROUGH flag. Cc: Damien Le Moal <dlemoal@kernel.org> Cc: Mike Christie <michael.christie@oracle.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Bart Van Assche <bvanassche@google.com> Bug: 348341595 Link: https://lore.kernel.org/linux-scsi/yq17ccp1i4b.fsf@ca-mkp.ca.oracle.com/T/#mfdb1a3a0d6d4803afe1098bdafc12fd4168e30e0 Change-Id: I44092a0d8853fd61bf619e5bae6d65eaaddad780 Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
8288de8306 |
ANDROID: GKI: Update symbol list for mtk
1 function symbol(s) added 'struct snd_kcontrol* snd_soc_cnew(const struct snd_kcontrol_new*, void*, const char*, const char*)' Bug: 359437271 Signed-off-by: Seiya Wang <seiya.wang@mediatek.com> Change-Id: I53d2771c95cabfc6931a83eb43e1499b9de8bc8b |
||
|
|
79436849ef |
ANDROID: Update the ABI symbol list
Adding the following symbols: - vm_unmapped_area Bug: 344489121 Change-Id: I1798b662e81283e1f8e8f2091e5e4b6d2d4fe2c0 Signed-off-by: Vamsidhar reddy Gaddam <gvamsi@google.com> |
||
|
|
be8ff39d2e |
ANDROID: GKI: add symbol list for telechips
Add symbol list file abi_gki_aarch64_telechips INFO: 18 function symbol(s) added 'int devm_clk_hw_register_clkdev(struct device*, struct clk_hw*, const char*, const char*)' 'struct fwnode_handle* fwnode_get_next_parent(struct fwnode_handle*)' 'struct fwnode_handle* fwnode_get_parent(const struct fwnode_handle*)' 'int linear_range_get_value_array(const struct linear_range*, int, unsigned int, unsigned int*)' 'int media_device_register_entity(struct media_device*, struct media_entity*)' 'struct media_link* media_entity_find_link(struct media_pad*, struct media_pad*)' 'void* of_fdt_unflatten_tree(const unsigned long*, struct device_node*, struct device_node**)' 'int regmap_irq_chip_get_base(struct regmap_irq_chip_data*)' 'int regulator_mode_to_status(unsigned int)' 'int regulator_set_soft_start_regmap(struct regulator_dev*)' 'int snd_pcm_hw_constraint_pow2(struct snd_pcm_runtime*, unsigned int, snd_pcm_hw_param_t)' 'int snd_soc_dai_set_clkdiv(struct snd_soc_dai*, int, int)' 'void symbol_put_addr(void*)' 'int trace_define_field(struct trace_event_call*, const char*, const char*, int, int, int, int)' 'int uart_parse_earlycon(char*, unsigned char*, resource_size_t*, char**)' 'int v4l2_fill_pixfmt_mp(struct v4l2_pix_format_mplane*, u32, u32, u32)' 'int vfs_fsync(struct file*, int)' 'int vsscanf(const char*, const char*, va_list)' 1 variable symbol(s) added 'const struct kernel_param_ops param_ops_short' Bug: 358151308 Signed-off-by: Sukjin Kong <sj.kong@telechips.com> Change-Id: I13cefc3999f4e8a0b748c126cb179ac5f6c61e22 |
||
|
|
7003f6b36a |
UPSTREAM: ufs: core: bypass quick recovery if need force reset
If force_reset is true, bypass quick recovery. This will shorten error recovery time. Bug: 356536706 Change-Id: I86ce0e8ac79b61e203a8fdad5369d540ae873cc0 Signed-off-by: Peter Wang <peter.wang@mediatek.com> Link: https://lore.kernel.org/r/20240712094506.11284-1-peter.wang@mediatek.com Reviewed-by: Bean Huo <beanhuo@micron.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> (cherry picked from commit 022587d8aec3da1d1698ddae9fb8cfe35f3ad49c) |
||
|
|
99d09135c4 |
ANDROID: Update the ABI symbol list
Adding the `devfreq_get_devfreq_by_phandle` symbol. Bug: 336947817 Change-Id: I5db1e6c7ba5a845f2116aa0e5438e7f8fece4a65 Signed-off-by: nischaljain <nischaljain@google.com> |
||
|
|
1bb38f7865 |
UPSTREAM: ring-buffer: Fix a race between readers and resize checks
The reader code in rb_get_reader_page() swaps a new reader page into the
ring buffer by doing cmpxchg on old->list.prev->next to point it to the
new page. Following that, if the operation is successful,
old->list.next->prev gets updated too. This means the underlying
doubly-linked list is temporarily inconsistent, page->prev->next or
page->next->prev might not be equal back to page for some page in the
ring buffer.
The resize operation in ring_buffer_resize() can be invoked in parallel.
It calls rb_check_pages() which can detect the described inconsistency
and stop further tracing:
[ 190.271762] ------------[ cut here ]------------
[ 190.271771] WARNING: CPU: 1 PID: 6186 at kernel/trace/ring_buffer.c:1467 rb_check_pages.isra.0+0x6a/0xa0
[ 190.271789] Modules linked in: [...]
[ 190.271991] Unloaded tainted modules: intel_uncore_frequency(E):1 skx_edac(E):1
[ 190.272002] CPU: 1 PID: 6186 Comm: cmd.sh Kdump: loaded Tainted: G E 6.9.0-rc6-default #5 158d3e1e6d0b091c34c3b96bfd99a1c58306d79f
[ 190.272011] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552c-rebuilt.opensuse.org 04/01/2014
[ 190.272015] RIP: 0010:rb_check_pages.isra.0+0x6a/0xa0
[ 190.272023] Code: [...]
[ 190.272028] RSP: 0018:ffff9c37463abb70 EFLAGS: 00010206
[ 190.272034] RAX: ffff8eba04b6cb80 RBX: 0000000000000007 RCX: ffff8eba01f13d80
[ 190.272038] RDX: ffff8eba01f130c0 RSI: ffff8eba04b6cd00 RDI: ffff8eba0004c700
[ 190.272042] RBP: ffff8eba0004c700 R08: 0000000000010002 R09: 0000000000000000
[ 190.272045] R10: 00000000ffff7f52 R11: ffff8eba7f600000 R12: ffff8eba0004c720
[ 190.272049] R13: ffff8eba00223a00 R14: 0000000000000008 R15: ffff8eba067a8000
[ 190.272053] FS: 00007f1bd64752c0(0000) GS:ffff8eba7f680000(0000) knlGS:0000000000000000
[ 190.272057] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 190.272061] CR2: 00007f1bd6662590 CR3: 000000010291e001 CR4: 0000000000370ef0
[ 190.272070] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 190.272073] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 190.272077] Call Trace:
[ 190.272098] <TASK>
[ 190.272189] ring_buffer_resize+0x2ab/0x460
[ 190.272199] __tracing_resize_ring_buffer.part.0+0x23/0xa0
[ 190.272206] tracing_resize_ring_buffer+0x65/0x90
[ 190.272216] tracing_entries_write+0x74/0xc0
[ 190.272225] vfs_write+0xf5/0x420
[ 190.272248] ksys_write+0x67/0xe0
[ 190.272256] do_syscall_64+0x82/0x170
[ 190.272363] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 190.272373] RIP: 0033:0x7f1bd657d263
[ 190.272381] Code: [...]
[ 190.272385] RSP: 002b:00007ffe72b643f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 190.272391] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f1bd657d263
[ 190.272395] RDX: 0000000000000002 RSI: 0000555a6eb538e0 RDI: 0000000000000001
[ 190.272398] RBP: 0000555a6eb538e0 R08: 000000000000000a R09: 0000000000000000
[ 190.272401] R10: 0000555a6eb55190 R11: 0000000000000246 R12: 00007f1bd6662500
[ 190.272404] R13: 0000000000000002 R14: 00007f1bd6667c00 R15: 0000000000000002
[ 190.272412] </TASK>
[ 190.272414] ---[ end trace 0000000000000000 ]---
Note that ring_buffer_resize() calls rb_check_pages() only if the parent
trace_buffer has recording disabled. Recent commit d78ab792705c
("tracing: Stop current tracer when resizing buffer") causes that it is
now always the case which makes it more likely to experience this issue.
The window to hit this race is nonetheless very small. To help
reproducing it, one can add a delay loop in rb_get_reader_page():
ret = rb_head_page_replace(reader, cpu_buffer->reader_page);
if (!ret)
goto spin;
for (unsigned i = 0; i < 1U << 26; i++) /* inserted delay loop */
__asm__ __volatile__ ("" : : : "memory");
rb_list_head(reader->list.next)->prev = &cpu_buffer->reader_page->list;
.. and then run the following commands on the target system:
echo 1 > /sys/kernel/tracing/events/sched/sched_switch/enable
while true; do
echo 16 > /sys/kernel/tracing/buffer_size_kb; sleep 0.1
echo 8 > /sys/kernel/tracing/buffer_size_kb; sleep 0.1
done &
while true; do
for i in /sys/kernel/tracing/per_cpu/*; do
timeout 0.1 cat $i/trace_pipe; sleep 0.2
done
done
To fix the problem, make sure ring_buffer_resize() doesn't invoke
rb_check_pages() concurrently with a reader operating on the same
ring_buffer_per_cpu by taking its cpu_buffer->reader_lock.
Link: https://lore.kernel.org/linux-trace-kernel/20240517134008.24529-3-petr.pavlu@suse.com
Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fixes:
|
||
|
|
37391192a9 |
UPSTREAM: lib/build_OID_registry: avoid non-destructive substitution for Perl < 5.13.2 compat
On a system with Perl 5.12.1, commit 5ef6dc08cfde
("lib/build_OID_registry: don't mention the full path of the script in
output") causes the build to fail with the error below.
Bareword found where operator expected at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
syntax error at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
Execution of ./lib/build_OID_registry aborted due to compilation errors.
make[3]: *** [lib/Makefile:352: lib/oid_registry_data.c] Error 255
Ahmad Fatoum analyzed that non-destructive substitution is only supported since
Perl 5.13.2. Instead of dropping `r` and having the side effect of modifying
`$0`, introduce a dedicated variable to support older Perl versions.
Link: https://lkml.kernel.org/r/20240702223512.8329-2-pmenzel@molgen.mpg.de
Link: https://lkml.kernel.org/r/20240701155802.75152-1-pmenzel@molgen.mpg.de
Fixes: 5ef6dc08cfde ("lib/build_OID_registry: don't mention the full path of the script in output")
Link: https://lore.kernel.org/all/259f7a87-2692-480e-9073-1c1c35b52f67@molgen.mpg.de/
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Suggested-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Bug: 346559442
Bug: 347759457
Change-Id: I367a4d22f3c27c8912703d061360e5aa2c7a5642
(cherry picked from commit 2fe29fe945637b9834c5569fbb1c9d4f881d8263)
Signed-off-by: Giuliano Procida <gprocida@google.com>
|
||
|
|
c0cf9ce611 |
UPSTREAM: lib/build_OID_registry: don't mention the full path of the script in output
This change strips the full path of the script generating lib/oid_registry_data.c to just lib/build_OID_registry. The motivation for this change is Yocto emitting a build warning File /usr/src/debug/linux-lxatac/6.7-r0/lib/oid_registry_data.c in package linux-lxatac-src contains reference to TMPDIR [buildpaths] So this change brings us one step closer to make the build result reproducible independent of the build path. Link: https://lkml.kernel.org/r/20240313211957.884561-2-u.kleine-koenig@pengutronix.de Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Bug: 346559442 Bug: 347759457 Change-Id: I09c19f26fd33ed95106174cd2f2fc7217ba99f34 (cherry picked from commit 5ef6dc08cfde240b8c748733759185646e654570) Signed-off-by: Giuliano Procida <gprocida@google.com> |
||
|
|
6aafd06a46 |
ANDROID: GKI: Add symbol list for exynosauto
netdev_master_upper_dev_get nla_append These symbols are required to use WIFI BCM driver. Following functions are added in STG file through abi_update 1 function symbol(s) added 'struct net_device* netdev_master_upper_dev_get(struct net_device*)' Bug: 357016601 Change-Id: Iff752b54d88258f2d61fab397da1104145c9297f Signed-off-by: Ajit Singh Raghav <ajit.raghav@samsung.com> |
||
|
|
4ac7f55b98 |
UPSTREAM: erofs: fix race in z_erofs_get_gbuf()
In z_erofs_get_gbuf(), the current task may be migrated to another CPU between `z_erofs_gbuf_id()` and `spin_lock(&gbuf->lock)`. Therefore, z_erofs_put_gbuf() will trigger the following issue which was found by stress test: <2>[772156.434168] kernel BUG at fs/erofs/zutil.c:58! .. <4>[772156.435007] <4>[772156.439237] CPU: 0 PID: 3078 Comm: stress Kdump: loaded Tainted: G E 6.10.0-rc7+ #2 <4>[772156.439239] Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 1.0.0 01/01/2017 <4>[772156.439241] pstate: 83400005 (Nzcv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) <4>[772156.439243] pc : z_erofs_put_gbuf+0x64/0x70 [erofs] <4>[772156.439252] lr : z_erofs_lz4_decompress+0x600/0x6a0 [erofs] .. <6>[772156.445958] stress (3127): drop_caches: 1 <4>[772156.446120] Call trace: <4>[772156.446121] z_erofs_put_gbuf+0x64/0x70 [erofs] <4>[772156.446761] z_erofs_lz4_decompress+0x600/0x6a0 [erofs] <4>[772156.446897] z_erofs_decompress_queue+0x740/0xa10 [erofs] <4>[772156.447036] z_erofs_runqueue+0x428/0x8c0 [erofs] <4>[772156.447160] z_erofs_readahead+0x224/0x390 [erofs] .. Bug: 356412494 Fixes: f36f3010f676 ("erofs: rename per-CPU buffers to global buffer pool and make it configurable") Cc: <stable@vger.kernel.org> # 6.10+ Reviewed-by: Chunhai Guo <guochunhai@vivo.com> Reviewed-by: Sandeep Dhavale <dhavale@google.com> Reviewed-by: Chao Yu <chao@kernel.org> Change-Id: Ic4924c6c14ee27af6f3c89ea5c562493b3c112a4 Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20240722035110.3456740-1-hsiangkao@linux.alibaba.com (cherry picked from commit 7dc5537c3f8be87e005f0844a7626c987914f8fd) Signed-off-by: Sandeep Dhavale <dhavale@google.com> |
||
|
|
055518d9f3 |
ANDROID: fuse: Skip canonical path logic if ENOSYS
Not all FUSE servers have implemented canonical_path such as virtiofs. This patch makes it so they go through the same logic as other filesystems that don't have canonical path implemented. Bug: 330136711 Test: ./cts-tradefed run commandAndExit cts -m CtsIncidentHostTestCases -t com.android.server.cts.ErrorsTest#testTombstone Change-Id: I35f19bd1a12420015128ac9bc2662b9bd252a612 Signed-off-by: Richard Fung <richardfung@google.com> (cherry picked from commit 4b0be62caf6923eac6acdb5a44eb03688e6f9dc5) |
||
|
|
a112c9c24c |
ANDROID: fsnotify: Do not notify lower fs of open when ENOSYS
Even though FUSE supports d_canonical_path, the underlying server may not implement the operation. In that case, follow the same logic for filesystems that do not have the canonical path operation instead of returning early from fsnotify_file with an error. Bug: 326995824 Test: cts-tradefed run commandAndExit cts -m CtsOsTestCases -t android.os.cts.FileObserverTest Change-Id: Iae618d4159222b06467b9a0bbb67fb67885aa65e Signed-off-by: Tiffany Yang <ynaffit@google.com> (cherry picked from commit 61d32e739d27dd35353a22804023f099b383df3b) |
||
|
|
7d0a1d6b86 |
ANDROID: mm: madvise: Avoid counting swap entry references for migration entries
Race between the madvise(PAGEOUT) and migration caused by page offline
can make the swp_swapcount()->_swap_info_get emitting the "Bad swap file
entry " message because it is trying to get the info on the migration
entry. Add check if it is a migration entry.
Bug: 356032508
Fixes:
|
||
|
|
7fa70ede91 |
UPSTREAM: scsi: ufs: core: Changing the status to check inflight
ufshcd_cmd_inflight() is used to check whether or not a command is in progress. Make it skip commands that have already completed by changing the !blk_mq_request_started(rq) check into blk_mq_rq_state(rq) != MQ_RQ_IN_FLIGHT. We cannot rely on lrbp->cmd since lrbp->cmd is not cleared when a command completes. Link: https://lore.kernel.org/linux-scsi/20230517223157.1068210-3-bvanassche@acm.org/ Signed-off-by: SEO HOYOUNG <hy50.seo@samsung.com> Link: https://lore.kernel.org/r/20240411071444.51873-1-hy50.seo@samsung.com Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 353887042 (cherry picked from commit 13c28be58c2bdb12e554e01b0e35621060068b11) Change-Id: I038c3956c55967f38a339a13c16fe7518ee4eb17 Signed-off-by: Manish Pandey <quic_mapa@quicinc.com> |
||
|
|
6201b295b8 |
ANDROID: Update the ABI symbol list
Adding the following symbols: - __traceiter_android_vh_hibernate_state - __tracepoint_android_vh_hibernate_state Bug: 342523877 Change-Id: I249ec4ce3b2db80470b2d4d862acf4a882ece199 Signed-off-by: karam.lee <karam.lee@lge.com> |
||
|
|
f571d0bdaa |
ANDROID: power: add vendor hook to handle hibernate failures
The driver or external module may need handling due to hibernate failure. This error cannot be detected outside of the hibernate() function. so Add a vendor hook to receive and handle errors in hibernate(). Bug: 342523877 Change-Id: I221e26f571d94e5d5c5aae19937945bb8981f85b Signed-off-by: karam.lee <karam.lee@lge.com> |
||
|
|
d7387786c2 |
ANDROID: GKI: remove export of tracing control functions
Android GKI kernel modules should NOT have the ability to control the system-wide tracing functionality, nor query to determine if it is on or not. So remove the exports of these functions. Upstream does not wish to do this, so an Android-only change is required. See the bug id for details. Bug: 355584612 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I50f69cd9930ddc6b876c5c1dd86f51cfb2ee1bac |
||
|
|
47af2fba7c |
ANDROID: fix kernelci build-break for !CONFIG_ANDROID_VENDOR_OEM_DATA
A recent change to add hooks for firmware-based hibernation
added a reference to android_vendor_data1 which breaks
builds that don't enable vendor data.
Fixes: d2cb755a4398 ("ANDROID: vendor hooks: Add hooks to support bootloader based hibernation")
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I449e968f8d0926c8573150553eed0905faeac3f3
|
||
|
|
918790efaa |
ANDROID: GKI: update symbol list file for xiaomi
6 function symbol(s) added 'void __traceiter_android_vh_handle_trylock_failed_folio(struct list_head *)' 'void __traceiter_android_vh_folio_trylock_set(struct folio *)' 'void __traceiter_android_vh_folio_trylock_clear(struct folio *)' 'void __traceiter_android_vh_get_folio_trylock_result(struct folio *, bool *)' 'void __traceiter_android_vh_do_folio_trylock(struct folio *, struct rw_semaphore *, bool *, bool *)' 'long reclaim_pages(struct list_head *folio_list)' 5 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_handle_trylock_failed_folio' 'struct tracepoint __tracepoint_android_vh_folio_trylock_set' 'struct tracepoint __tracepoint_android_vh_folio_trylock_clear' 'struct tracepoint __tracepoint_android_vh_get_folio_trylock_result' 'struct tracepoint __tracepoint_android_vh_do_folio_trylock' Bug: 353608806 Change-Id: Ibdf1757c41483961074a87f37c60de7db60d8636 Signed-off-by: Marcus Ma <maminghui5@xiaomi.corp-partner.google.com> |
||
|
|
d01f9af472 |
ANDROID: vendor_hooks: vendor hooks for optimizing the blocking problem
caused by rwsem lock contention of reverse mapping during memory recycling. Dear Sir, We want to apply the following five trace hook: 1、trace_android_vh_do_folio_trylock() 2、trace_android_vh_get_folio_trylock_result() 3、trace_android_vh_folio_trylock_clear() 4、trace_android_vh_folio_trylock_set() 5、trace_android_vh_handle_trylock_failed_folio(). The optimization objectives are as follows: In the process of memory recycling,reverse mapping is indispensable. The role of reverse mapping is to find all vma or page tables mapped to this page through physical address or page structure. Therefore,the process of reverse mapping will inevitably bring synchronous operations. Whether it is file page or an anonymous page,the synchronization operation is realized through the rwsem read-write lock. Therefore,when kswapd or the user's key thread enters direct_reclaim,the rwsem lock will cause the entire recycling link to be blocked,resulting in low memory recycling efficiency and affecting the user experience. On Xiaomi mobile phones,there is a situation in which the reverse mapping is stuck in the rwsem read-write lock during the file page recycling process,causing the entire recycling link to be blocked,so that the memory cannot be recycled in time. The display on the trace shows that there are a large number of D states,and its block function is rmap_walk_file,therefore,for non-forced recycling scenarios,try_lock and asynchronous recycling are used to handle related blocked pages. Bug: 353608806 Change-Id: I3973c9ddc4e25f8b20e763a4a8aa2dd327e3139d Signed-off-by: Marcus Ma <maminghui5@xiaomi.corp-partner.google.com> |
||
|
|
dd8ee5c242 |
UPSTREAM: of: reserved_mem: Use proper binary prefix
The printed reserved memory information uses the non-standard "K" prefix, while all other printed values use proper binary prefixes. Fix this by using "Ki" instead. While at it, drop the superfluous spaces inside the parentheses, to reduce printed line length. Bug: 353554778 Fixes: |
||
|
|
8ea8aeba31 |
BACKPORT: gpio: of: support gpio-ranges for multiple gpiochip devices
Some drivers (e.g. gpio-mt7621 and gpio-brcmstb) have multiple gpiochip banks within a single device. Unfortunately, the gpio-ranges property of the device node was being applied to every gpiochip of the device with device relative GPIO offset values rather than gpiochip relative GPIO offset values. This commit makes use of the gpio_chip offset value which can be non-zero for such devices to split the device node gpio-ranges property into GPIO offset ranges that can be applied to each of the relevant gpiochips of the device. Bug: 353554778 Change-Id: I868f0cd8e4dc8003547a34f3cfd57eece731622f Signed-off-by: Doug Berger <opendmb@gmail.com> Acked-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://lore.kernel.org/r/20240424185039.1707812-3-opendmb@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> (cherry picked from commit e818cd3c8a345c046edff00b5ad0be4d39f7e4d4) [danesh: Resolved minor conflict in drivers/gpio/gpiolib-of.c] Signed-off-by: Danesh Petigara <danesh.petigara@broadcom.com> Signed-off-by: Pierre Couillaud <pierre@broadcom.com> |
||
|
|
54edf65d08 |
UPSTREAM: dt-bindings: gpio: brcmstb: add gpio-ranges
Add optional gpio-ranges device-tree property to the Broadcom Set-Top-Box GPIO controller. Bug: 353554778 Change-Id: I95d9e6153e91d4270e1802c97bb4863de8b494c0 Signed-off-by: Doug Berger <opendmb@gmail.com> Acked-by: Florian Fainelli <florian.fainelli@broadcom.com> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20240424185039.1707812-2-opendmb@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> (cherry picked from commit 7c66f8173360556ac0c3c38a91234af5a0a5a4a9) Signed-off-by: Danesh Petigara <danesh.petigara@broadcom.com> Signed-off-by: Pierre Couillaud <pierre@broadcom.com> |
||
|
|
e0bd441f08 |
ANDROID: Incremental fs: Retry page faults on non-fatal errors
In order to not freeze on corrupt data, we need to turn off FAULT_FLAG_ALLOW_RETRY. However, this means we no longer retry on EINTR, so an interrupted read will lead to page faults. The fault handler does not seem to allow dynamic decisions as to whether to turn on or off this flag. To resolve both issues, add a flag to indicate if there are corrupt pages in a file, and only if there are turn off this flag. Also fsanitize changed the behavior of mlock - mlock should fail if the page reads fail, but with fsanitize it returns 0 then page faults on access. This broke this test, and fsanitize offers little value on test code, so disable it. Test: incfs_test passes Bug: 343532239 Change-Id: Id2ced4be3310109206d65dcc92dea05c05131182 Signed-off-by: Paul Lawrence <paullawrence@google.com> (cherry picked from commit b7bd4d088751a23209e0636e4d71502ef07b2d33) |
||
|
|
9077d52bd8 |
ANDROID: GKI: Update symbol list for BCMSTB
INFO: 1 function symbol(s) added 'int scsi_resume_device(struct scsi_device*)' Bug: 355032755 Change-Id: I65f90942b8062c559aeb2cb09394846a39c5e1dc Signed-off-by: Pierre Couillaud <pierre@broadcom.com> |
||
|
|
9fe4f05b40 |
ANDROID: GKI: Update rockchip symbols for dw_hdmi_qp.
4 function symbol(s) added 'const struct drm_edid* drm_edid_alloc(const void*, size_t)' 'int drm_edid_connector_update(struct drm_connector*, const struct drm_edid*)' 'const struct edid* drm_edid_raw(const struct drm_edid*)' 'const struct drm_edid* drm_edid_read_ddc(struct drm_connector*, struct i2c_adapter*)' Bug: 300024866 Signed-off-by: Bian Jin chen <kenjc.bian@rock-chips.com> Change-Id: I3085829b4c799b1a38426576841a4bc23ba531ec |
||
|
|
d2ab7b14ca |
UPSTREAM: net: usb: ax88179_178a: improve reset check
After ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is
set to down/up") to not reset from usbnet_open after the reset from
usbnet_probe at initialization stage to speed up this, some issues have
been reported.
It seems to happen that if the initialization is slower, and some time
passes between the probe operation and the open operation, the second reset
from open is necessary too to have the device working. The reason is that
if there is no activity with the phy, this is "disconnected".
In order to improve this, the solution is to detect when the phy is
"disconnected", and we can use the phy status register for this. So we will
only reset the device from reset operation in this situation, that is, only
if necessary.
The same bahavior is happening when the device is stopped (link set to
down) and later is restarted (link set to up), so if the phy keeps working
we only need to enable the mac again, but if enough time passes between the
device stop and restart, reset is necessary, and we can detect the
situation checking the phy status register too.
Bug: 339479352
cc: stable@vger.kernel.org # 6.6+
Fixes: ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is set to down/up")
Reported-by: Yongqin Liu <yongqin.liu@linaro.org>
Reported-by: Antje Miederhöfer <a.miederhoefer@gmx.de>
Reported-by: Arne Fitzenreiter <arne_f@ipfire.org>
Tested-by: Yongqin Liu <yongqin.liu@linaro.org>
Tested-by: Antje Miederhöfer <a.miederhoefer@gmx.de>
Change-Id: I0b5944bd0bf353281c884b93c15243c2f395dbbf
Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 7be4cb7189f747b4e5b6977d0e4387bde3204e62)
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
|
||
|
|
8cfaae3d49 |
UPSTREAM: net: usb: ax88179_178a: fix link status when link is set to down/up
The idea was to keep only one reset at initialization stage in order to reduce the total delay, or the reset from usbnet_probe or the reset from usbnet_open. I have seen that restarting from usbnet_probe is necessary to avoid doing too complex things. But when the link is set to down/up (for example to configure a different mac address) the link is not correctly recovered unless a reset is commanded from usbnet_open. So, detect the initialization stage (first call) to not reset from usbnet_open after the reset from usbnet_probe and after this stage, always reset from usbnet_open too (when the link needs to be rechecked). Apply to all the possible devices, the behavior now is going to be the same. Bug: 339479352 cc: stable@vger.kernel.org # 6.6+ Fixes: 56f78615bcb1 ("net: usb: ax88179_178a: avoid writing the mac address before first reading") Reported-by: Isaac Ganoung <inventor500@vivaldi.net> Reported-by: Yongqin Liu <yongqin.liu@linaro.org> Change-Id: I6314fcc4df3be9624b91545f1cf033144e3ae9ec Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://lore.kernel.org/r/20240510090846.328201-1-jtornosm@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> (cherry picked from commit ecf848eb934b03959918f5269f64c0e52bc23998) Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org> |
||
|
|
f21999db6a |
UPSTREAM: usb: gadget: configfs: Prevent OOB read/write in usb_string_copy()
commit 6d3c721e686ea6c59e18289b400cc95c76e927e0 upstream.
Userspace provided string 's' could trivially have the length zero. Left
unchecked this will firstly result in an OOB read in the form
`if (str[0 - 1] == '\n') followed closely by an OOB write in the form
`str[0 - 1] = '\0'`.
There is already a validating check to catch strings that are too long.
Let's supply an additional check for invalid strings that are too short.
Bug: 346754046
Signed-off-by: Lee Jones <lee@kernel.org>
Cc: stable <stable@kernel.org>
Link: https://lore.kernel.org/r/20240705074339.633717-1-lee@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit
|
||
|
|
4a9ef0dc4b |
UPSTREAM: usb: typec: tcpm: fix use-after-free case in tcpm_register_source_caps
There could be a potential use-after-free case in
tcpm_register_source_caps(). This could happen when:
* new (say invalid) source caps are advertised
* the existing source caps are unregistered
* tcpm_register_source_caps() returns with an error as
usb_power_delivery_register_capabilities() fails
This causes port->partner_source_caps to hold on to the now freed source
caps.
Reset port->partner_source_caps value to NULL after unregistering
existing source caps.
Fixes: 230ecdf71a64 ("usb: typec: tcpm: unregister existing source caps before re-registration")
Cc: stable@vger.kernel.org
Signed-off-by: Amit Sunil Dhamne <amitsd@google.com>
Reviewed-by: Ondrej Jirman <megi@xff.cz>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240514220134.2143181-1-amitsd@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Bug: 335453765
(cherry picked from commit e7e921918d905544500ca7a95889f898121ba886)
Change-Id: I655ac689dd559dfe22fdf545ef5a39ae056f2bde
Signed-off-by: Amit Sunil Dhamne <amitsd@google.com>
|
||
|
|
e8ff0d5cdd |
UPSTREAM: usb: typec: tcpm: unregister existing source caps before re-registration
Check and unregister existing source caps in tcpm_register_source_caps
function before registering new ones. This change fixes following
warning when port partner resends source caps after negotiating PD contract
for the purpose of re-negotiation.
[ 343.135030][ T151] sysfs: cannot create duplicate filename '/devices/virtual/usb_power_delivery/pd1/source-capabilities'
[ 343.135071][ T151] Call trace:
[ 343.135076][ T151] dump_backtrace+0xe8/0x108
[ 343.135099][ T151] show_stack+0x18/0x24
[ 343.135106][ T151] dump_stack_lvl+0x50/0x6c
[ 343.135119][ T151] dump_stack+0x18/0x24
[ 343.135126][ T151] sysfs_create_dir_ns+0xe0/0x140
[ 343.135137][ T151] kobject_add_internal+0x228/0x424
[ 343.135146][ T151] kobject_add+0x94/0x10c
[ 343.135152][ T151] device_add+0x1b0/0x4c0
[ 343.135187][ T151] device_register+0x20/0x34
[ 343.135195][ T151] usb_power_delivery_register_capabilities+0x90/0x20c
[ 343.135209][ T151] tcpm_pd_rx_handler+0x9f0/0x15b8
[ 343.135216][ T151] kthread_worker_fn+0x11c/0x260
[ 343.135227][ T151] kthread+0x114/0x1bc
[ 343.135235][ T151] ret_from_fork+0x10/0x20
[ 343.135265][ T151] kobject: kobject_add_internal failed for source-capabilities with -EEXIST, don't try to register things with the same name in the same directory.
Fixes:
|
||
|
|
78b1a8b2e5 |
ANDROID: GKI: Update symbol list for mtk
2 function symbol(s) added 'int rpmsg_chrdev_eptdev_create(struct rpmsg_device*, struct device*, struct rpmsg_channel_info)' 'int rpmsg_chrdev_eptdev_destroy(struct device*, void*)' 1 variable symbol(s) added 'struct class* rpmsg_class' Bug: 354094574 Change-Id: I3c10ffb4a472076f93190266d38ee5197d663ce3 Signed-off-by: Seiya Wang <seiya.wang@mediatek.com> |
||
|
|
002bba562d |
Merge tag 'android14-6.1.90_r00' into android14-6.1
This merges up to the 6.1.90 LTS release into the android14-6.1 branch. Included in here are the following commits: * |
||
|
|
6d6afa9d3f |
FROMGIT: scsi: ufs: core: Suspend clk scaling on no request
Currently UFS clk scaling is getting suspended only when the clks are scaled down. When high load is generated, a huge amount of latency is added due to scaling up the clk and completing the request post that. Suspending the scaling in its existing state when high load is generated improves the random performance KPI by 28%. So suspending the scaling when there are no requests. And the clk would be put in low scaled state when the actual request load is low. Make this change optional by having the check enabled using vops since for some devices suspending without bringing the clk in low scaled state might have impact on power consumption of the SoC. The change takes advantage of the hole in 'struct ufs_clk_scaling' before ANDROID_KABI_RESERVE and does not change the size of the struct. Use __GENKSYMS__ marker to preserve the abi correctly. Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Link: https://lore.kernel.org/r/20240627083756.25340-2-quic_rampraka@quicinc.com Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 351099319 (cherry picked from commit 50183ac2cfb54e027dd36fb22ea1bd1e91e3a08b https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 6.11/scsi-staging) Change-Id: I6e11beab7bc56746e7e1ae1ea25f9ab205394ef7 Signed-off-by: Manish Pandey <quic_mapa@quicinc.com> (cherry picked from commit 78931ac60273825b4141796eb8631424b3690712) |
||
|
|
f858f0ff4e |
FROMGIT: scsi: ufs: qcom: Enable suspending clk scaling on no request
Enable suspending clk scaling on no request for Qualcomm SoC. Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Link: https://lore.kernel.org/r/20240627083756.25340-3-quic_rampraka@quicinc.com Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 351099319 (cherry picked from commit ed7dac86f1406d73aed21d0cd1563922031a2fd8 https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 6.11/scsi-staging) Change-Id: Ifbdc14ceae5a59c04a5977b56a198fd295253b3e Signed-off-by: Manish Pandey <quic_mapa@quicinc.com> (cherry picked from commit fcfa54b63051a70ad2467a444001b302e97fe9eb) |
||
|
|
f3437db870 |
ANDROID: 16K: Don't set padding vm_flags on 32-bit archs
vma_pad_fixup_flags() and is_mergable_pad_vma() were inadvertently affecting the vm_flags on 32-bit arch, making some VMAs not mergable. This causes zygote to crash as the Art GC's heap compaction fails. The compaction depends on mremap() which will fail when operating on a range that spans multiple VMAs [1]. This can happen now due to the incorrect is_mergable_pad_vma() check. Make all the pgsize_migration APIs no-ops in 32-bit architectures, since Android only performs ELF segment extension in 64-bit archs. [1] https://github.com/torvalds/linux/blob/v6.9/mm/mremap.c#L841-L843 Bug: 353667356 Change-Id: Id9b0076ef173d75a4afc85577355d340fce03e65 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> |
||
|
|
fc94b39f66 |
ANDROID: abi_gki_aarch64_qcom: Add groups_free symbol
Add groups_free to abi_gki_aarch64_qcom. 1 function symbol(s) added 'void groups_free(struct group_info*)' Bug: 352712755 Change-Id: I4ee87435608c3050c2ebbe82e3d1b43bfb4700db Signed-off-by: quic_anane <quic_anane@quicinc.com> |
||
|
|
c78828e383 |
FROMLIST: usb: gadget: u_serial: Add null pointer checks after RX/TX submission
Commit |
||
|
|
7de5ae52b1 |
UPSTREAM: erofs: fix uninitialized page cache reported by KMSAN
syzbot reports a KMSAN reproducer [1] which generates a crafted filesystem image and causes IMA to read uninitialized page cache. Later, (rq->outputsize > rq->inputsize) will be formally supported after either large uncompressed pclusters (> block size) or big lclusters are landed. However, currently there is no way to generate such filesystems by using mkfs.erofs. Thus, let's mark this condition as unsupported for now. [1] https://lore.kernel.org/r/0000000000002be12a0611ca7ff8@google.com Bug: 353575918 Reported-and-tested-by: syzbot+7bc44a489f0ef0670bd5@syzkaller.appspotmail.com Fixes: 1ca01520148a ("erofs: refine z_erofs_transform_plain() for sub-page block support") Reviewed-by: Sandeep Dhavale <dhavale@google.com> Reviewed-by: Yue Hu <huyue2@coolpad.com> Reviewed-by: Chao Yu <chao@kernel.org> Change-Id: I7a8e0bc81c1f4512d3640b243e8124a61d849028 Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20240304035339.425857-1-hsiangkao@linux.alibaba.com (cherry picked from commit 893e5e9b7369a02e7ceaa6d98db6739162005b03) Signed-off-by: Sandeep Dhavale <dhavale@google.com> |
||
|
|
4965ad067b |
ANDROID: Fix abi issues in struct sk_buff
In commit 18685451fc4e ("inet: inet_defrag: prevent sk release while
still in use"), struct sk_buff dropped an unneeded union structure.
This did not change the actual structure size or layout at all, but the
abi checker didn't like it. So trick it by putting some __GENKSYMS__
markers in to preserve the abi correctly.
Bug: 335584858
Fixes: 18685451fc4e ("inet: inet_defrag: prevent sk release while still in use")
Change-Id: I78ca54f9df3e03cccebc326babf1d84ccb5dc781
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
|
||
|
|
47d9c7690e |
UPSTREAM: inet: inet_defrag: prevent sk release while still in use
ip_local_out() and other functions can pass skb->sk as function argument. If the skb is a fragment and reassembly happens before such function call returns, the sk must not be released. This affects skb fragments reassembled via netfilter or similar modules, e.g. openvswitch or ct_act.c, when run as part of tx pipeline. Eric Dumazet made an initial analysis of this bug. Quoting Eric: Calling ip_defrag() in output path is also implying skb_orphan(), which is buggy because output path relies on sk not disappearing. A relevant old patch about the issue was : |
||
|
|
96d66062d0 |
ANDROID: GKI: Add initialization for mutex oem_data.
Although __mutex_init() already contains a hook, but this function may be called before the mutex_init hook is registered, causing mutex's oem_data to be uninitialized and causing unpredictable errors. Bug: 352181884 Change-Id: I04378d6668fb4e7b93c11d930ac46aae484fc835 Signed-off-by: zhujingpeng <zhujingpeng@vivo.com> |
||
|
|
9e55f41695 |
ANDROID: abi_gki_aarch64_qcom: whitelist some mm symbols
Whitelist the below symbols: android_vh_madvise_cold_or_pageout_page get_shadow_from_swap_cache Compiler o/p: INFO: 2 function symbol(s) added 'int __traceiter_android_vh_madvise_cold_or_pageout_page(void*, bool, struct page*)' 'void* get_shadow_from_swap_cache(swp_entry_t)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_madvise_cold_or_pageout_page' . Bug: 350429581 Change-Id: I3f51722c9fcdc666534b4b13c62a2f7f71387242 Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com> |
||
|
|
56526cf940 |
ANDROID: mm: swap: export and whitelist get_shadow_from_swap_cache
The shadow entry in the swapcache contains information about a page that got swapped out during the reclaim which is then used at the time of refault to determine if a page is going to be a workingset or not. Once the page is swapped out, vendors can implement some algorithms on the swap area to determine if that page can be further pushed down to slower devices, Eg: say from costly and faster disk to slower disk. But if a page that is actively used is pushed to slower disk, the swapin is going to consume time which can show up in PSI events. The side effect of increased PSI events is, an example, increased kills by LMKD. Alternatively, vendors can rely on the information stored in the swapcache and determine if that particular page in the swap can be further pushed down to slower devices. Bug: 350429581 Change-Id: Ibeee10d40cc917229fe3b0fd9a6ef34ad27033e1 Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com> |
||
|
|
74be75dd10 |
ANDROID: mm: madvise: vendor hook to tune page flags
Users can proactively reclaim the pages of an app once it is in background using the system calls, like madvise. But it may be possible that such pages turn out to be the workingset page in the conventional LRU which while swapping can result into accounting of PSI events. Although this PSI events is an indication that wrong pages are being madvised, one can also argue that he is aware of what he is doing using madvise. For such clients, add the vendor hook to tune page flags, such as clearing the Workingset during swapout so that PSI might not get accounyted during swapin. Bug: 350429581 Change-Id: I675c57f63a918c5a23df8273006426d0e611c5c5 Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com> |
||
|
|
7fc3794962 |
ANDROID: GKI: Add initialization for rwsem's oem_data and vendor_data.
Add initialization for rwsem's oem_data and vendor_data. The __init_rwsem() already contains a hook, but this function may be called before the rwsem_init hook is registered, causing some rwsem's oem_data to be uninitialized and causing unpredictable errors Bug: 351133539 Change-Id: I7bbb83894d200102bc7d84e91678f164529097a0 Signed-off-by: zhujingpeng <zhujingpeng@vivo.com> (cherry picked from commit aaca6b10f1a352dec4596548396f590500f2001b) |
||
|
|
f6b99539f8 |
UPSTREAM: usb: dwc3: core: Skip setting event buffers for host only controllers
On some SoC's like SA8295P where the tertiary controller is host-only capable, GEVTADDRHI/LO, GEVTSIZ, GEVTCOUNT registers are not accessible. Trying to access them leads to a crash. For DRD/Peripheral supported controllers, event buffer setup is done again in gadget_pullup. Skip setup or cleanup of event buffers if controller is host-only capable. Suggested-by: Johan Hovold <johan@kernel.org> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Reviewed-by: Johan Hovold <johan+linaro@kernel.org> Reviewed-by: Bjorn Andersson <andersson@kernel.org> Tested-by: Johan Hovold <johan+linaro@kernel.org> Link: https://lore.kernel.org/r/20240420044901.884098-4-quic_kriskura@quicinc.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 89d7f962994604a3e3d480832788d06179abefc5 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master) Bug: 233985973 Change-Id: I66bccca575b3524b8e446f38b154d2434335a65d Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> |
||
|
|
ce6f9cab9e |
ANDROID: GKI: Update symbol list for mtk
1 function symbol(s) added 'int phy_create_lookup(struct phy*, const char*, const char*)' Bug: 350828988 Change-Id: If747b9e3acdf6e644ee23783f4997aff1d973e64 Signed-off-by: Seiya Wang <seiya.wang@mediatek.com> |
||
|
|
256660feeb |
ANDROID: GKI: Add symbol to symbol list for vivo.
1 function symbol added 'int __traceiter_android_rvh_pr_set_vma_name_bypass(void*, struct mm_struct*,unsigned long , unsigned long , struct anon_vma_name*,int*, bool*))' 1 variable symbol added 'struct tracepoint__tracepoint_android_rvh_pr_set_vma_name_bypass' Bug: 349739224 Change-Id: I4a3c4478def0400c7110c979ee00781e1b7e6821 Signed-off-by: Zhifeng Zhu <zhifeng.zhu@vivo.com> |