Commit Graph

988374 Commits

Author SHA1 Message Date
Robin Peng
185f60f2bb ANDROID: add forward declaration vm_unmapped_area_info
aosp/2215503 remove inclusions from hook definition headers
and build breakage detected on pixel device.

include/trace/hooks/mm.h:80:40: error: declaration of 'struct vm_unmapped_area_info' will not be visible outside of this function

Fix this by adding struct vm_unmapped_area_info forward declaration.

Fixes: 7108d9d0e5 ("ANDROID: remove inclusions from hook definition headers")
Bug: 233047575
Signed-off-by: Robin Peng <robinpeng@google.com>
Change-Id: I8989ba78977a26e13c79f9efb156bf8317c1010e
2022-09-15 01:24:29 +00:00
Soukjin Bae
d1b29856ca ANDROID: net: export symbol for tracepoint_consume_skb
Need to use the tracepoint_consume_skb symbol at module driver

Bug: 244504166
Link: https://lore.kernel.org/lkml/20220617200021.02ad8ffc@kernel.org/T

Signed-off-by: Soukjin Bae <soukjin.bae@samsung.com>
Change-Id: Icffa3e7d2045156691a7711c5f19b309f8356261
2022-09-13 19:34:26 +00:00
Sarthak Kukreti
952141fb92 BACKPORT: dm verity: set DM_TARGET_IMMUTABLE feature flag
commit 4caae58406 upstream.

The device-mapper framework provides a mechanism to mark targets as
immutable (and hence fail table reloads that try to change the target
type). Add the DM_TARGET_IMMUTABLE flag to the dm-verity target's
feature flags to prevent switching the verity target with a different
target type.

Bug: 234475629
Fixes: a4ffc15219 ("dm: add verity target")
Cc: stable@vger.kernel.org
Signed-off-by: Sarthak Kukreti <sarthakkukreti@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Iaeec7fa3be98a646062439e4551f84242dacfb45
2022-09-12 22:53:31 +00:00
David Howells
b5fe8c470e BACKPORT: pipe: Fix missing lock in pipe_resize_ring()
commit 189b0ddc24 upstream.

pipe_resize_ring() needs to take the pipe->rd_wait.lock spinlock to
prevent post_one_notification() from trying to insert into the ring
whilst the ring is being replaced.

The occupancy check must be done after the lock is taken, and the lock
must be taken after the new ring is allocated.

The bug can lead to an oops looking something like:

 BUG: KASAN: use-after-free in post_one_notification.isra.0+0x62e/0x840
 Read of size 4 at addr ffff88801cc72a70 by task poc/27196
 ...
 Call Trace:
  post_one_notification.isra.0+0x62e/0x840
  __post_watch_notification+0x3b7/0x650
  key_create_or_update+0xb8b/0xd20
  __do_sys_add_key+0x175/0x340
  __x64_sys_add_key+0xbe/0x140
  do_syscall_64+0x5c/0xc0
  entry_SYSCALL_64_after_hwframe+0x44/0xae

Reported by Selim Enes Karaduman @Enesdex working with Trend Micro Zero
Day Initiative.

Bug: 244395411
Fixes: c73be61ced ("pipe: Add general notification queue support")
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-17291
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I129164eb9dba557d5a4370f4eca124b9916774a6
2022-09-12 22:53:02 +00:00
Sean Christopherson
790fa51f7b BACKPORT: KVM: x86: avoid calling x86 emulator without a decoded instruction
commit fee060cd52 upstream.

Whenever x86_decode_emulated_instruction() detects a breakpoint, it
returns the value that kvm_vcpu_check_breakpoint() writes into its
pass-by-reference second argument.  Unfortunately this is completely
bogus because the expected outcome of x86_decode_emulated_instruction
is an EMULATION_* value.

Then, if kvm_vcpu_check_breakpoint() does "*r = 0" (corresponding to
a KVM_EXIT_DEBUG userspace exit), it is misunderstood as EMULATION_OK
and x86_emulate_instruction() is called without having decoded the
instruction.  This causes various havoc from running with a stale
emulation context.

The fix is to move the call to kvm_vcpu_check_breakpoint() where it was
before commit 4aa2691dcb ("KVM: x86: Factor out x86 instruction
emulation with decoding") introduced x86_decode_emulated_instruction().
The other caller of the function does not need breakpoint checks,
because it is invoked as part of a vmexit and the processor has already
checked those before executing the instruction that #GP'd.

This fixes CVE-2022-1852.

Bug: 235183128
Reported-by: Qiuhao Li <qiuhao@sysec.org>
Reported-by: Gaoning Pan <pgn@zju.edu.cn>
Reported-by: Yongkang Jia <kangel@zju.edu.cn>
Fixes: 4aa2691dcb ("KVM: x86: Factor out x86 instruction emulation with decoding")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220311032801.3467418-2-seanjc@google.com>
[Rewrote commit message according to Qiuhao's report, since a patch
 already existed to fix the bug. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I3acbb7fc23566c4108f15960c420384af52c2703
2022-09-12 22:52:56 +00:00
Ziyi Cui
ee742bccf6 ANDROID: power: fix vendor hook in suspend.c
Fix the position of the trace point.

Bug: 241946090
Fixes: 737a5314c9 ("ANDROID: power: Add vendor hook for suspend")
Signed-off-by: Ziyi Cui <ziyic@google.com>
Change-Id: I8bf231ee35e0c0ebcb35722f4c527ab61116901e
2022-09-12 22:23:00 +00:00
Todd Kjos
7108d9d0e5 ANDROID: remove inclusions from hook definition headers
To avoid changing the visibiliy of data types when including
hook definition headers remove header file inclusions from
the hook definition header files.

Instead, the hook definition headers should just have forward
declarations that don't require full definition.

To provide full definitions of the types for the KMI, the
headers that define the types should be included by the
source file that instantiates the hooks - normally
vendor_hooks.c.

Since the KMI is frozen, some of the inclusions are still
required to preserve the CRC associated with symbols. Keep
these inclusions under #ifdef __GENKSYMS__.

This patch results in 17 fewer opaque types in the KMI
(80 vs 97). Of the remaining 80 opaque types, 50 are
defined in C files (and therefore are truly opaque and
cannot be used by vendor modules). That leaves 30
types that still need definition in the KMI.

Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ibc1173eb4b07fcec21c7abd8e0ab1950b3fb5b34
2022-09-12 17:09:03 +00:00
Todd Kjos
d6ab8e3ba2 Revert "ANDROID: arm64: smp: fix Lockdep warning: RCU used illegally from idle CPU."
This reverts commit 4af50419db.

Causes a build break for kernel_microdroid_aarch64 builds

Change-Id: I385a8e56ae1245bccba4d1b641175e73807da88b
Signed-off-by: Todd Kjos <tkjos@google.com>
2022-09-12 16:54:10 +00:00
Todd Kjos
aa381a5c71 ANDROID: remove CONFIG_TRACEPOINTS from hook definition headers
Remove the obsolete use of CONFIG_TRACEPOINTS in hook definition
header files. The !CONFIG_TRACEPOINTS case is correctly handled
by the included trace header files.

Bug: 233047575
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I957649bcfef375284f2885cf732ff2960c303837
2022-09-12 16:54:10 +00:00
Linus Torvalds
aff2309034 BACKPORT: watchqueue: make sure to serialize 'wqueue->defunct' properly
commit 353f7988dd upstream.

When the pipe is closed, we mark the associated watchqueue defunct by
calling watch_queue_clear().  However, while that is protected by the
watchqueue lock, new watchqueue entries aren't actually added under that
lock at all: they use the pipe->rd_wait.lock instead, and looking up
that pipe happens without any locking.

The watchqueue code uses the RCU read-side section to make sure that the
wqueue entry itself hasn't disappeared, but that does not protect the
pipe_info in any way.

So make sure to actually hold the wqueue lock when posting watch events,
properly serializing against the pipe being torn down.

Bug: 235277737
Reported-by: Noam Rathaus <noamr@ssd-disclosure.com>
Cc: Greg KH <gregkh@linuxfoundation.org>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I42b0d56021be1d8950c3642ae0acc5cdccadb394
2022-09-12 07:24:16 +00:00
Jack Diver
66047fb431 ANDROID: Update the ABI representation
1 symbol(s) added
  'void __bitmap_xor(unsigned long int *, const unsigned long int *, const unsigned long int *, unsigned int)'

Bug: 228779790
Signed-off-by: Jack Diver <diverj@google.com>
Change-Id: Ia7622941d313214eaf1aaf26aba64e0e149fa7ca
2022-09-09 19:27:05 +00:00
John Scheible
d451b4eee2 ANDROID: Update the ABI representation
Add iommu_dma_enable_best_fit_algo symbol.

1 symbol(s) added
  'int iommu_dma_enable_best_fit_algo(struct device *)'

Bug: 245799843
Signed-off-by: John Scheible <johnscheible@google.com>
Change-Id: I5cc4d870556b62e43a3a5f717d23a512a138cb17
2022-09-09 01:15:21 +00:00
Bart Van Assche
3d35c6b91d UPSTREAM: scsi: ufs: core: Reduce the power mode change timeout
The current power mode change timeout (180 s) is so large that it can cause
a watchdog timer to fire. Reduce the power mode change timeout to 10
seconds.

Link: https://lore.kernel.org/r/20220811234401.1957911-1-bvanassche@acm.org
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 8f2c96420c)
Change-Id: I89a7f925812b6e1c4ca158bd7b22a41323557ec5
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-09-08 09:45:50 -07:00
Konstantin Vyshetsky
5c6d73ac2c BACKPORT: scsi: ufs: core: Increase fDeviceInit poll frequency
UFS devices are expected to clear fDeviceInit flag in single digit
milliseconds. Current values of 5 to 10 millisecond sleep add to increased
latency during the initialization and resume path. This CL lowers the sleep
range to 500 to 1000 microseconds.

Bug: 236993021
Link: https://lore.kernel.org/r/20220421002429.3136933-1-bvanassche@acm.org
Acked-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Konstantin Vyshetsky <vkon@google.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit a4e6496fca)
Change-Id: I3a9a01853e89ea73ff5e355007db4730fa853ea0
2022-09-07 04:53:09 +00:00
Jaegeuk Kim
2208908824 FROMGIT: f2fs: increase the limit for reserve_root
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.

Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.

Bug: 243493735
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: Ia76ae8f9dd1c7a5f123a561f081bf5a4a29ac186
(cherry picked from commit cf42f1d7ab33ea2637f3c6b786a76302f719726b
     https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
2022-09-07 04:53:09 +00:00
Jaegeuk Kim
7af4b3ca30 FROMGIT: f2fs: complete checkpoints during remount
Otherwise, pending checkpoints can contribute a race condition to give a
quota warning.

- Thread                      - checkpoint thread
                              add checkpoints to the list
do_remount()
 down_write(&sb->s_umount);
 f2fs_remount()
                              block_operations()
                               down_read_trylock(&sb->s_umount) = 0
 up_write(&sb->s_umount);
                               f2fs_quota_sync()
                                dquot_writeback_dquots()
                                 WARN_ON_ONCE(!rwsem_is_locked(&sb->s_umount));

Or,

do_remount()
 down_write(&sb->s_umount);
 f2fs_remount()
                              create a ckpt thread
                              f2fs_enable_checkpoint() adds checkpoints
			      wait for f2fs_sync_fs()
                              trigger another pending checkpoint
                               block_operations()
                                down_read_trylock(&sb->s_umount) = 0
 up_write(&sb->s_umount);
                                f2fs_quota_sync()
                                 dquot_writeback_dquots()
                                  WARN_ON_ONCE(!rwsem_is_locked(&sb->s_umount));

Bug: 242127451
Bug: 215554521
Cc: stable@vger.kernel.org
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: I85926fe14245058e48bac5699a7b760d7700c653
(cherry picked from commit d14393c5bff2f0c163e6bb384618300e30d19754
     https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
2022-09-07 04:53:09 +00:00
Jaegeuk Kim
7a04671177 FROMGIT: f2fs: flush pending checkpoints when freezing super
This avoids -EINVAL when trying to freeze f2fs.

Bug: 242127451
Cc: stable@vger.kernel.org
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: Id2939642e3b93b42cf1ca03831d6c5e4e54d57fd
(cherry picked from commit a36fe7301268524ffa56ff8a9ad0edec6bd5b85a
     https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
2022-09-07 04:53:09 +00:00
Chao Yu
f18d40369c FROMGIT: f2fs: remove gc_urgent_high_limited for cleanup
Remove redundant sbi->gc_urgent_high_limited.

Signed-off-by: Chao Yu <chao.yu@oppo.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 265576181b
     https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
Change-Id: Id92efe0343922c0b0fc279332ec102f1d8de8ecc
2022-09-07 04:53:09 +00:00
Jaegeuk Kim
68f703b19f FROMGIT: f2fs: fix wrong continue condition in GC
We should decrease the frozen counter.

Cc: stable@vger.kernel.org
Fixes: 325163e989 ("f2fs: add gc_urgent_high_remaining sysfs node")
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 605b0a778a
     https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
Change-Id: I892f215e778f7d89b9bbf3dfb292ed820944cf6b
2022-09-07 04:53:09 +00:00
Daeho Jeong
8ecc3b8d53 BACKPORT: f2fs: handle decompress only post processing in softirq
Now decompression is being handled in workqueue and it makes read I/O
latency non-deterministic, because of the non-deterministic scheduling
nature of workqueues. So, I made it handled in softirq context only if
possible, not in low memory devices, since this modification will
maintain decompresion related memory a little longer.

Bug: 232003054
Signed-off-by: Daeho Jeong <daehojeong@google.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: I1a7c642e05c2f8544d475039b733403181de641e
(cherry picked from commit 9ef8cd45d7)
2022-09-07 04:53:09 +00:00
Daeho Jeong
23d664773f BACKPORT: f2fs: introduce memory mode
Introduce memory mode to supports "normal" and "low" memory modes.
"low" mode is to support low memory devices. Because of the nature of
low memory devices, in this mode, f2fs will try to save memory sometimes
by sacrificing performance. "normal" mode is the default mode and same
as before.

Bug: 232003054
Signed-off-by: Daeho Jeong <daehojeong@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 60f60d1fd8)
Change-Id: I7cb719b18f0002d7af47f7a18e8ec2f4c534bdd9
2022-09-07 04:53:09 +00:00
Hsiu-Chang Chen
1dd8074b61 ANDROID: Update the ABI representation
1 symbol(s) added
  'int __xa_insert(struct xarray *, unsigned long int, void *, gfp_t)'

Bug: 245009352
Signed-off-by: Hsiu-Chang Chen <hsiuchangchen@google.com>
Change-Id: I80dcbc7d4ef9c1429eace307845c67dc0604f8a0
2022-09-06 15:25:17 +08:00
Greg Kroah-Hartman
9bc5a118ef Revert "ANDROID: usb: host: export additional xhci symbols for ring management"
This reverts commit 6c997d153d.

The symbols exported by it were never used by any external modules, so
remove the unneeded exports.

Bug: 203756332
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I338313c0c2ad1ec83f452db910a6ef9b5ee32b7d
2022-09-04 09:49:48 +02:00
Greg Kroah-Hartman
3743e36578 Revert "ANDROID: GKI: signal: Export for __lock_task_sighand"
This reverts commit a719abf031.

The symbol exported was never used by any external modules, so remove
the unneeded export.

Bug: 158067689
Bug: 203756332
Cc: Abhilasha Rao <abhilasha.hv@samsung.corp-partner.google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I13b65fd0620faf08784dabc7130f199dfa5cf053
2022-09-01 19:24:39 +00:00
Greg Kroah-Hartman
7219ca326a Revert "ANDROID: Sched: Add restricted vendor hooks for scheduler"
This reverts most of commit 292f430816.

Only a small number of the original hooks in this commit were ever used,
so remove all of the unused ones.  The hooks removed are:
	android_rvh_try_to_wake_up
	android_rvh_try_to_wake_up_success
	android_rvh_wake_up_new_task
	android_rvh_new_task_stats
	android_rvh_flush_task
	android_rvh_tick_entry
	android_rvh_schedule
	android_rvh_sched_cpu_starting
	android_rvh_sched_cpu_dying
	android_rvh_account_irq
	android_rvh_place_entity
	android_rvh_update_cpu_capacity
	android_rvh_update_misfit_status

If these are needed by any real user, it can easily be reverted to add it
back and then the symbols must be added to the abi list at the same time
to prevent it from being removed again later.

Bug: 203756332
Bug: 173725277
Cc: Shaleen Agrawal <shalagra@codeaurora.org>
Cc: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Icc24ed128fe1034ad663b749caa3bc2e2d0efac0
2022-09-01 19:24:39 +00:00
Todd Kjos
4e709a85e5 ANDROID: fix kernelci issue for allnoconfig builds
'allnoconfig' builds failed with:

kernel/sched/sched.h:1203:50: error: ‘struct rq’ has no member named ‘cpu’

rq->cpu needs to be replaced with cpu_of(rq) for !CONFIG_SMP builds

Fixes: 4442801a43 ("ANDROID: sched: Introducing PELT multiplier")
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Iceb439dc3bba27516b5ecd2c18c9835c23e5a39a
2022-09-01 16:21:53 +00:00
JianMin Liu
909d582d3a ANDROID: sched: Introducing PELT multiplier
The new sysctl sched_pelt_multiplier allows a user to set a clock
multiplier x2 or x4 (x1 being the default). This clock multiplier
artificially speed-up PELT ramp up/down similarly to a faster half-life.
Indeed, if we write PELT as a first order filter:

  y(t) = G * (1 - exp(t/tau))

Then we can see that multiplying the time by a constant X, is the same
as
dividing the time constant tau by X.

  y(t) = G * (1 - exp((t*X)/tau))
  y(t) = G * (1 - exp(t/(tau/X)))

Tau being half-life*ln(2), multiplying the PELT time is the same as
dividing the half-life:

  - x1: 32ms half-life
  - x2: 16ms half-life
  - x4: 8ms  half-life

Internally, a new clock is created: rq->clock_task_mult. It sits in the
clock hierarchy between rq->clock_task and rq->clock_pelt.

Bug: 177593580
Bug: 237219700
Change-Id: I67e6ca7994bebea22bf75732ee11d2b10e0d6b7e
Suggested-by: Morten Rasmussen <morten.rasmussen@arm.com>
Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
Signed-off-by: JianMin Liu <jian-min.liu@mediatek.com>
(cherry picked from commit 4442801a43)
2022-08-31 16:45:35 +00:00
Greg Kroah-Hartman
9cfe2646f7 Revert "ANDROID: vendor_hooks: FPSIMD save/restore by using vendor_hooks"
This reverts commit 74555f3992.

The hook android_vh_is_fpsimd_save is not used by any vendor, so remove
it to help with merge issues with future LTS releases.

If this is needed by any real user, it can easily be reverted to add it
back and then the symbol should be added to the abi list at the same
time to prevent it from being removed again later.

Bug: 203756332
Bug: 149632552
Cc: Wooyeon Kim <wooy88.kim@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Idecd20a8791c5e4497f8d2222cc54cc42b2ebdff
2022-08-31 13:48:21 +02:00
Greg Kroah-Hartman
c7afbeb17e Revert "ANDROID: mm: export zone_watermark_ok"
This reverts commit e909fe79d2.

The symbols exported in it were never used by any external modules, so
remove the exports as they are not needed.

Bug: 203756332
Bug: 140294230
Cc: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ib3315ba129773256398a71ffe4c3acb55075b012
2022-08-31 11:46:54 +02:00
Ziyi Cui
e09aff6074 ANDROID: softirq: Add EXPORT_SYMBOL_GPL for softirq and tasklet
The purpose of these symbols are used for getting counter and metrics of long running irq. Currently we only have symbols for irq_handler_entry and irq_handler_exit.

Bug: 227809911
Signed-off-by: Ziyi Cui <ziyic@google.com>
Change-Id: Idf4ccdede5232689b2752283539aee54a5f67866
2022-08-30 23:21:49 +00:00
Woody Lin
dd04e189df ANDROID: Update the ABI representation
1 symbol(s) added
  'int kobject_rename(struct kobject *, const char *)'

Bug: 239090823
Signed-off-by: Woody Lin <woodylin@google.com>
Change-Id: Ifdc8ac7b67a33a94cb3b85f570ddb1a9d1401aaa
2022-08-30 17:36:37 +08:00
xiaofeng
e3b7e41f06 ANDROID: vendor_hooks:vendor hook for __alloc_pages_slowpath.
add vendor hook in __alloc_pages_slowpath ahead of
__alloc_pages_direct_reclaim and warn_alloc.

Bug: 243629905
Change-Id: Ieacc6cf79823c0bfacfdeec9afb55ed66f40d0b0
Signed-off-by: xiaofeng <xiaofeng5@xiaomi.com>
(cherry picked from commit 0312e9cd22b100a088ff64ab36b2db2eb9f28b7c)
2022-08-26 21:59:34 +00:00
Benedict Wong
b5bf2997c3 FROMLIST: xfrm: Ensure policy checked for nested ESP tunnels
This change ensures that all nested XFRM packets have their policy
checked before decryption of the next layer, so that policies are
verified at each intermediate step of the decryption process.

Notably, raw ESP/AH packets do not perform policy checks inherently,
whereas all other encapsulated packets (UDP, TCP encapsulated) do policy
checks after calling xfrm_input handling in the respective encapsulation
layer.

This is necessary especially for nested tunnels, as the IP addresses,
protocol and ports may all change, thus not matching the previous
policies. In order to ensure that packets match the relevant inbound
templates, the xfrm_policy_check should be done before handing off to
the inner XFRM protocol to decrypt and decapsulate.

In order to prevent double-checking packets both here and in the
encapsulation layers, this check is currently limited to nested
tunnel-mode transforms and checked prior to decapsulation of inner
tunnel layers (prior to hitting a nested tunnel's xfrm_input, there
is no great way to detect a nested tunnel). This is primarily a
performance consideration, as a general blanket check at the end of
xfrm_input would suffice, but may result in multiple policy checks.

Bug: 236423446
Test: Tested against Android Kernel Unit Tests
Link: https://lore.kernel.org/netdev/20220824221252.4130836-3-benedictwong@google.com/
Signed-off-by: Benedict Wong <benedictwong@google.com>
Change-Id: I20c5abf39512d7f6cf438c0921a78a84e281b4e9
2022-08-26 17:58:11 +00:00
Benedict Wong
970e02667c FROMLIST: xfrm: Skip checking of already-verified secpath entries
This change fixes a bug where inbound packets to nested IPsec tunnels
fails to pass policy checks due to the inner tunnel's policy checks
not having a reference to the outer policy/template. This causes the
policy check to fail, since the first entries in the secpath correlate
to the outer tunnel, while the templates being verified are for the
inner tunnel.

In order to ensure that the appropriate policy and template context is
searchable, the policy checks must be done incrementally between each
decryption step. As such, this marks secpath entries as having been
successfully matched, skipping them (treating as optional) on subsequent
policy checks

By skipping the immediate error return in the case where the secpath
entry had previously been validated, this change allows secpath entries
that matched a policy/template previously, while still requiring that
each searched template find a match in the secpath.

For security:
- All templates must have matching secpath entries
  - Unchanged by current patch; templates that do not match any secpath
    entry still return -1. This patch simply allows skipping earlier
    blocks of verified secpath entries
- All entries (except trailing transport mode entries) must have a
  matching template
  - Unvalidated entries, including transport-mode entries still return
    the errored index if it does not match the correct template.

Bug: 236423446
Test: Tested against Android Kernel Unit Tests
Link: https://lore.kernel.org/netdev/20220824221252.4130836-2-benedictwong@google.com/
[benedictwong: fixed minor style issues]
Signed-off-by: Benedict Wong <benedictwong@google.com>
Change-Id: Ic32831cb00151d0de2e465f18ec37d5f7b680e54
2022-08-26 17:58:11 +00:00
Greg Kroah-Hartman
039f38f9aa Revert "ANDROID: mm: add vendor hook for vmpressure"
This reverts commit 444a0b7752.

The hook android_vh_vmpressure is not used by any vendor, so remove it
to help with merge issues with future LTS releases.

If this is needed by any real user, it can easily be reverted to add it
back and then the symbol should be added to the abi list at the same
time to prevent it from being removed again later.

Bug: 203756332
Bug: 191534577
Cc: Liangliang Li <liliangliang@vivo.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I63d2a210dc6a6ded20ea8779af719d70f368ce0f
2022-08-24 18:44:55 +02:00
Greg Kroah-Hartman
fc6f47b6fc Revert "ANDROID: module: Add vendor hook"
This reverts commit 4d63efb9ae.

The hooks android_vh_set_module_permit_before_init and
android_vh_set_module_permit_after_init is not used by any vendor, so
remove it to help with merge issues with future LTS releases.

If this is needed by any real user, it can easily be reverted to add it
back and then the symbol should be added to the abi list at the same
time to prevent it from being removed again later.

Bug: 203756332
Bug: 181639260
Cc: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I3bbc5d4190d9fbf34469d2c5c1386dcbf998fb4b
2022-08-24 17:26:23 +02:00
Leo Chen
f509b285d7 ANDROID: Update the ABI representation
3 symbol(s) added
  'struct gpio_desc * devm_fwnode_gpiod_get_index(struct device *, struct fwnode_handle *, const char *, int, enum gpiod_flags, const char *)'
  'struct gpio_descs * devm_gpiod_get_array_optional(struct device *, const char *, enum gpiod_flags)'
  'int regulator_set_active_discharge_regmap(struct regulator_dev *, bool)'

Bug: 240242346
Signed-off-by: Leo Chen <yinchiuan@google.com>
Change-Id: I070f3539a23e4c140b00f78eca3a23428af4cb27
2022-08-19 03:00:54 +00:00
Minchan Kim
b8762fa265 BACKPORT: mm: don't be stuck to rmap lock on reclaim path
The rmap locks(i_mmap_rwsem and anon_vma->root->rwsem) could be contended
under memory pressure if processes keep working on their vmas(e.g., fork,
mmap, munmap).  It makes reclaim path stuck.  In our real workload traces,
we see kswapd is waiting the lock for 300ms+(worst case, a sec) and it
makes other processes entering direct reclaim, which were also stuck on
the lock.

This patch makes lru aging path try_lock mode like shink_page_list so the
reclaim context will keep working with next lru pages without being stuck.
if it found the rmap lock contended, it rotates the page back to head of
lru in both active/inactive lrus to make them consistent behavior, which
is basic starting point rather than adding more heristic.

Since this patch introduces a new "contended" field as out-param along
with try_lock in-param in rmap_walk_control, it's not immutable any longer
if the try_lock is set so remove const keywords on rmap related functions.
Since rmap walking is already expensive operation, I doubt the const
would help sizable benefit( And we didn't have it until 5.17).

In a heavy app workload in Android, trace shows following statistics.  It
almost removes rmap lock contention from reclaim path.

Martin Liu reported:

Before:

   max_dur(ms)  min_dur(ms)  max-min(dur)ms  avg_dur(ms)  sum_dur(ms)  count blocked_function
         1632            0            1631   151.542173        31672    209  page_lock_anon_vma_read
          601            0             601   145.544681        28817    198  rmap_walk_file

After:

   max_dur(ms)  min_dur(ms)  max-min(dur)ms  avg_dur(ms)  sum_dur(ms)  count blocked_function
          NaN          NaN              NaN          NaN          NaN    0.0             NaN
            0            0                0     0.127645            1     12  rmap_walk_file

[minchan@kernel.org: add comment, per Matthew]
  Link: https://lkml.kernel.org/r/YnNqeB5tUf6LZ57b@google.com
Link: https://lkml.kernel.org/r/20220510215423.164547-1-minchan@kernel.org
Signed-off-by: Minchan Kim <minchan@kernel.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: John Dias <joaodias@google.com>
Cc: Tim Murray <timmurray@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Martin Liu <liumartin@google.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Conflicts:
	folio->page

(cherry picked from commit 6d4675e601)
Bug: 239681156
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I0c63e0291120c8a1b5f2d83b8a7b210cb56c27a2
2022-08-18 21:03:12 +00:00
Ziyi Cui
737a5314c9 ANDROID: power: Add vendor hook for suspend
The purpose of this vendor hook is to trace early resume latency.

Bug: 241946090
Signed-off-by: Ziyi Cui <ziyic@google.com>
Change-Id: I508f5a34fd3210178af0cb142461baf814196b9f
2022-08-16 20:57:48 +00:00
xiaofeng
19b9be6d35 ANDROID: vendor_hooks:vendor hook for mmput
add vendor hook in mmput while mm_users decreased to 0.

Bug: 238821038
Change-Id: I42a717cbeeb3176bac14b4b2391fdb2366c972d3
Signed-off-by: xiaofeng <xiaofeng5@xiaomi.com>
2022-08-16 02:42:13 +00:00
xiaofeng
4a84a59cb8 ANDROID: vendor_hooks:vendor hook for pidfd_open
Add vendor hook when detecting process status through
pidfd_open.

Bug: 238725692
Change-Id: I565988cb8bf6dd44ab4dc15c410c2dcf50703def
Signed-off-by: xiaofeng <xiaofeng5@xiaomi.com>
2022-08-16 02:42:13 +00:00
Darren Hsu
571f9fff87 ANDROID: Update the ABI representation
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added
function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added
variable

1 Added function:

  [A] 'function int __traceiter_android_vh_try_to_freeze_todo_logging(
void*, bool*)'

1 Added variable:

  [A] 'tracepoint __tracepoint_android_vh_try_to_freeze_todo_logging'

Bug: 240091483
Signed-off-by: Darren Hsu <darrenhsu@google.com>
Change-Id: I2ba595d12385ba86f2d90e6f1014fcf411269591
2022-08-15 15:50:47 +08:00
Jaegeuk Kim
a48ad117ec BACKPORT: f2fs: do not set compression bit if kernel doesn't support
If kernel doesn't have CONFIG_F2FS_FS_COMPRESSION, a file having FS_COMPR_FL via
ioctl(FS_IOC_SETFLAGS) is unaccessible due to f2fs_is_compress_backend_ready().
Let's avoid it.

Bug: 240921972
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 376523b97c005fa57bb2f8e70f61ab965f16e160)
Change-Id: Ieb0f8945175ea5ccb0060690e882f054360fb8f0
2022-08-11 06:12:24 +00:00
Jaegeuk Kim
406e9b3d0b BACKPORT: f2fs: do not count ENOENT for error case
Otherwise, we can get a wrong cp_error mark.

Bug: 239451498
Cc: <stable@vger.kernel.org>
Fixes: a7b8618aa2 ("f2fs: avoid infinite loop to flush node pages")
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 1a81f1ba6f9e0e7ab72b32bbd8184892319f1583)
Change-Id: Ic28a139341e96cb6fb0eca9f614895ae14e96946
2022-08-11 03:29:20 +00:00
Jaegeuk Kim
0d59b2578a BACKPORT: f2fs: avoid infinite loop to flush node pages
xfstests/generic/475 can give EIO all the time which give an infinite loop
to flush node page like below. Let's avoid it.

[16418.518551] Call Trace:
[16418.518553]  ? dm_submit_bio+0x48/0x400
[16418.518574]  ? submit_bio_checks+0x1ac/0x5a0
[16418.525207]  __submit_bio+0x1a9/0x230
[16418.525210]  ? kmem_cache_alloc+0x29e/0x3c0
[16418.525223]  submit_bio_noacct+0xa8/0x2b0
[16418.525226]  submit_bio+0x4d/0x130
[16418.525238]  __submit_bio+0x49/0x310 [f2fs]
[16418.525339]  ? bio_add_page+0x6a/0x90
[16418.525344]  f2fs_submit_page_bio+0x134/0x1f0 [f2fs]
[16418.525365]  read_node_page+0x125/0x1b0 [f2fs]
[16418.525388]  __get_node_page.part.0+0x58/0x3f0 [f2fs]
[16418.525409]  __get_node_page+0x2f/0x60 [f2fs]
[16418.525431]  f2fs_get_dnode_of_data+0x423/0x860 [f2fs]
[16418.525452]  ? asm_sysvec_apic_timer_interrupt+0x12/0x20
[16418.525458]  ? __mod_memcg_state.part.0+0x2a/0x30
[16418.525465]  ? __mod_memcg_lruvec_state+0x27/0x40
[16418.525467]  ? __xa_set_mark+0x57/0x70
[16418.525472]  f2fs_do_write_data_page+0x10e/0x7b0 [f2fs]
[16418.525493]  f2fs_write_single_data_page+0x555/0x830 [f2fs]
[16418.525514]  ? sysvec_apic_timer_interrupt+0x4e/0x90
[16418.525518]  ? asm_sysvec_apic_timer_interrupt+0x12/0x20
[16418.525523]  f2fs_write_cache_pages+0x303/0x880 [f2fs]
[16418.525545]  ? blk_flush_plug_list+0x47/0x100
[16418.525548]  f2fs_write_data_pages+0xfd/0x320 [f2fs]
[16418.525569]  do_writepages+0xd5/0x210
[16418.525648]  filemap_fdatawrite_wbc+0x7d/0xc0
[16418.525655]  filemap_fdatawrite+0x50/0x70
[16418.525658]  f2fs_sync_dirty_inodes+0xa4/0x230 [f2fs]
[16418.525679]  f2fs_write_checkpoint+0x16d/0x1720 [f2fs]
[16418.525699]  ? ttwu_do_wakeup+0x1c/0x160
[16418.525709]  ? ttwu_do_activate+0x6d/0xd0
[16418.525711]  ? __wait_for_common+0x11d/0x150
[16418.525715]  kill_f2fs_super+0xca/0x100 [f2fs]
[16418.525733]  deactivate_locked_super+0x3b/0xb0
[16418.525739]  deactivate_super+0x40/0x50
[16418.525741]  cleanup_mnt+0x139/0x190
[16418.525747]  __cleanup_mnt+0x12/0x20
[16418.525749]  task_work_run+0x6d/0xa0
[16418.525765]  exit_to_user_mode_prepare+0x1ad/0x1b0
[16418.525771]  syscall_exit_to_user_mode+0x27/0x50
[16418.525774]  do_syscall_64+0x48/0xc0
[16418.525776]  entry_SYSCALL_64_after_hwframe+0x44/0xae

Bug: 239451498
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 059bfa5616af9343da13063ac7d5079c2f4baeea)
Change-Id: I8e1e03208e28b3e9d21e6348cfb57a1adbcbd527
2022-08-11 03:29:20 +00:00
NeilBrown
6d2d344c5f BACKPORT: f2fs: replace congestion_wait() calls with io_schedule_timeout()
As congestion is no longer tracked, congestion_wait() is effectively
equivalent to io_schedule_timeout().

So introduce f2fs_io_schedule_timeout() which sets TASK_UNINTERRUPTIBLE
and call that instead.

Bug: 239451498
Link: https://lkml.kernel.org/r/164549983744.9187.6425865370954230902.stgit@noble.brown
Signed-off-by: NeilBrown <neilb@suse.de>
Cc: Anna Schumaker <Anna.Schumaker@Netapp.com>
Cc: Chao Yu <chao@kernel.org>
Cc: Darrick J. Wong <djwong@kernel.org>
Cc: Ilya Dryomov <idryomov@gmail.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Cc: Jan Kara <jack@suse.cz>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Lars Ellenberg <lars.ellenberg@linbit.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Paolo Valente <paolo.valente@linaro.org>
Cc: Philipp Reisner <philipp.reisner@linbit.com>
Cc: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 7634669ca55379537e5358bd5783b29bf15f67e4)
Change-Id: Ia09696633e0f957838771efbee8ee23c9d8c6c46
2022-08-11 03:29:20 +00:00
Jaegeuk Kim
ffe2cbbff9 BACKPORT: f2fs: fix wrong condition check when failing metapage read
This patch fixes wrong initialization.

Bug: 239451498
Fixes: 50c63009f6 ("f2fs: avoid an infinite loop in f2fs_sync_dirty_inodes")
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 6dff2f6fa8278c1f0bdd90cd07c3a1d88d687a33)
Change-Id: I27aa190a58d59558a49e8cd35c2f7a94318d7b0d
2022-08-11 03:29:20 +00:00
Robin Murphy
9f4fae40a9 UPSTREAM: arm64: perf: Support new DT compatibles
Wire up the new DT compatibles so we can present appropriate
PMU names to userspace for the latest and greatest CPUs.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/62d14ba12d847ec7f1fba7cb0b3b881b437e1cc5.1639490264.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit 893c34b60a)
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 238597093
Change-Id: I7aef375698c5192d4adbf551cae3ea9f8027f101
2022-08-10 09:37:45 +01:00
Robin Murphy
be08fd28ca UPSTREAM: arm64: perf: Simplify registration boilerplate
With the trend for per-core events moving to userspace JSON, registering
names for PMUv3 implementations is increasingly a pure boilerplate
exercise. Let's wrap things a step further so we can generate the basic
PMUv3 init function with a macro invocation, and reduce further new
addition to just 2 lines each.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/b79477ea3b97f685d00511d4ecd2f686184dca34.1639490264.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit 6ac9f30bd4)
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 238597093
Change-Id: I635d3978555c84b4234b6a791c8012ad4f5170c4
2022-08-10 09:37:44 +01:00
Thierry Reding
96dc76e1b1 UPSTREAM: arm64: perf: Support Denver and Carmel PMUs
Add support for the NVIDIA Denver and Carmel PMUs using the generic
PMUv3 event map for now.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
[ rm: reorder entries alphabetically ]
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/5f0f69d47acca78a9e479501aa4d8b429e23cf11.1639490264.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit d4c4844a9b)
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 238597093
Change-Id: I078644d2bb973fb7bd6777ad0bb702c430c05967
2022-08-10 09:37:44 +01:00