mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
5048089773 |
Merge remote-tracking branch 'sm8350/lineage-20' into lineage-23.2
* sm8350/lineage-20: UPSTREAM: tty: allow TIOCSLCKTRMIOS with CAP_CHECKPOINT_RESTORE UPSTREAM: selftests: add clone3() CAP_CHECKPOINT_RESTORE test UPSTREAM: prctl: exe link permission error changed from -EINVAL to -EPERM UPSTREAM: prctl: Allow local CAP_CHECKPOINT_RESTORE to change /proc/self/exe UPSTREAM: proc: allow access in init userns for map_files with CAP_CHECKPOINT_RESTORE UPSTREAM: pid_namespace: use checkpoint_restore_ns_capable() for ns_last_pid UPSTREAM: pid: use checkpoint_restore_ns_capable() for set_tid UPSTREAM: capabilities: Introduce CAP_CHECKPOINT_RESTORE UPSTREAM: selftests: add tests for clone3() with *set_tid UPSTREAM: fork: extend clone3() to support setting a PID UPSTREAM: selftests: add tests for clone3() UPSTREAM: tests: test CLONE_CLEAR_SIGHAND UPSTREAM: clone3: add CLONE_CLEAR_SIGHAND Change-Id: I7890fb550e85b9fd4c0c3a27144d5bfd8963d496 |
||
|
|
ef8a66d0ee |
UPSTREAM: capabilities: Introduce CAP_CHECKPOINT_RESTORE
This patch introduces CAP_CHECKPOINT_RESTORE, a new capability facilitating checkpoint/restore for non-root users. Over the last years, The CRIU (Checkpoint/Restore In Userspace) team has been asked numerous times if it is possible to checkpoint/restore a process as non-root. The answer usually was: 'almost'. The main blocker to restore a process as non-root was to control the PID of the restored process. This feature available via the clone3 system call, or via /proc/sys/kernel/ns_last_pid is unfortunately guarded by CAP_SYS_ADMIN. In the past two years, requests for non-root checkpoint/restore have increased due to the following use cases: * Checkpoint/Restore in an HPC environment in combination with a resource manager distributing jobs where users are always running as non-root. There is a desire to provide a way to checkpoint and restore long running jobs. * Container migration as non-root * We have been in contact with JVM developers who are integrating CRIU into a Java VM to decrease the startup time. These checkpoint/restore applications are not meant to be running with CAP_SYS_ADMIN. We have seen the following workarounds: * Use a setuid wrapper around CRIU: See https://github.com/FredHutch/slurm-examples/blob/master/checkpointer/lib/checkpointer/checkpointer-suid.c * Use a setuid helper that writes to ns_last_pid. Unfortunately, this helper delegation technique is impossible to use with clone3, and is thus prone to races. See https://github.com/twosigma/set_ns_last_pid * Cycle through PIDs with fork() until the desired PID is reached: This has been demonstrated to work with cycling rates of 100,000 PIDs/s See https://github.com/twosigma/set_ns_last_pid * Patch out the CAP_SYS_ADMIN check from the kernel * Run the desired application in a new user and PID namespace to provide a local CAP_SYS_ADMIN for controlling PIDs. This technique has limited use in typical container environments (e.g., Kubernetes) as /proc is typically protected with read-only layers (e.g., /proc/sys) for hardening purposes. Read-only layers prevent additional /proc mounts (due to proc's SB_I_USERNS_VISIBLE property), making the use of new PID namespaces limited as certain applications need access to /proc matching their PID namespace. The introduced capability allows to: * Control PIDs when the current user is CAP_CHECKPOINT_RESTORE capable for the corresponding PID namespace via ns_last_pid/clone3. * Open files in /proc/pid/map_files when the current user is CAP_CHECKPOINT_RESTORE capable in the root namespace, useful for recovering files that are unreachable via the file system such as deleted files, or memfd files. See corresponding selftest for an example with clone3(). Change-Id: Ia9ae3fc9a698e37774be945bac5a7d2a0d640cbc Signed-off-by: Adrian Reber <areber@redhat.com> Signed-off-by: Nicolas Viennot <Nicolas.Viennot@twosigma.com> Reviewed-by: Serge Hallyn <serge@hallyn.com> Acked-by: Christian Brauner <christian.brauner@ubuntu.com> Link: https://lore.kernel.org/r/20200719100418.2112740-2-areber@redhat.com Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> Signed-off-by: ralph950412 <ralph950412@gmail.com> |
||
|
|
62ec29d7ad |
UPSTREAM: fork: extend clone3() to support setting a PID
The main motivation to add set_tid to clone3() is CRIU.
To restore a process with the same PID/TID CRIU currently uses
/proc/sys/kernel/ns_last_pid. It writes the desired (PID - 1) to
ns_last_pid and then (quickly) does a clone(). This works most of the
time, but it is racy. It is also slow as it requires multiple syscalls.
Extending clone3() to support *set_tid makes it possible restore a
process using CRIU without accessing /proc/sys/kernel/ns_last_pid and
race free (as long as the desired PID/TID is available).
This clone3() extension places the same restrictions (CAP_SYS_ADMIN)
on clone3() with *set_tid as they are currently in place for ns_last_pid.
The original version of this change was using a single value for
set_tid. At the 2019 LPC, after presenting set_tid, it was, however,
decided to change set_tid to an array to enable setting the PID of a
process in multiple PID namespaces at the same time. If a process is
created in a PID namespace it is possible to influence the PID inside
and outside of the PID namespace. Details also in the corresponding
selftest.
To create a process with the following PIDs:
PID NS level Requested PID
0 (host) 31496
1 42
2 1
For that example the two newly introduced parameters to struct
clone_args (set_tid and set_tid_size) would need to be:
set_tid[0] = 1;
set_tid[1] = 42;
set_tid[2] = 31496;
set_tid_size = 3;
If only the PIDs of the two innermost nested PID namespaces should be
defined it would look like this:
set_tid[0] = 1;
set_tid[1] = 42;
set_tid_size = 2;
The PID of the newly created process would then be the next available
free PID in the PID namespace level 0 (host) and 42 in the PID namespace
at level 1 and the PID of the process in the innermost PID namespace
would be 1.
The set_tid array is used to specify the PID of a process starting
from the innermost nested PID namespaces up to set_tid_size PID namespaces.
set_tid_size cannot be larger then the current PID namespace level.
Change-Id: I21a8a13c5a794b2a788f3e647fd639b5ae313ebf
Signed-off-by: Adrian Reber <areber@redhat.com>
Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Acked-by: Andrei Vagin <avagin@gmail.com>
Link: https://lore.kernel.org/r/20191115123621.142252-1-areber@redhat.com
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: ralph950412 <ralph950412@gmail.com>
|
||
|
|
67da5e102b |
UPSTREAM: clone3: add CLONE_CLEAR_SIGHAND
Reset all signal handlers of the child not set to SIG_IGN to SIG_DFL. Mutually exclusive with CLONE_SIGHAND to not disturb other thread's signal handler. In the spirit of closer cooperation between glibc developers and kernel developers (cf. [2]) this patchset came out of a discussion on the glibc mailing list for improving posix_spawn() (cf. [1], [3], [4]). Kernel support for this feature has been explicitly requested by glibc and I see no reason not to help them with this. The child helper process on Linux posix_spawn must ensure that no signal handlers are enabled, so the signal disposition must be either SIG_DFL or SIG_IGN. However, it requires a sigprocmask to obtain the current signal mask and at least _NSIG sigaction calls to reset the signal handlers for each posix_spawn call or complex state tracking that might lead to data corruption in glibc. Adding this flags lets glibc avoid these problems. [1]: https://www.sourceware.org/ml/libc-alpha/2019-10/msg00149.html [3]: https://www.sourceware.org/ml/libc-alpha/2019-10/msg00158.html [4]: https://www.sourceware.org/ml/libc-alpha/2019-10/msg00160.html [2]: https://lwn.net/Articles/799331/ '[...] by asking for better cooperation with the C-library projects in general. They should be copied on patches containing ABI changes, for example. I noted that there are often times where C-library developers wish the kernel community had done things differently; how could those be avoided in the future? Members of the audience suggested that more glibc developers should perhaps join the linux-api list. The other suggestion was to "copy Florian on everything".' Cc: Florian Weimer <fweimer@redhat.com> Cc: libc-alpha@sourceware.org Cc: linux-api@vger.kernel.org Change-Id: Iced02ef93ed4dcda5ca5d3bd475cbfcae928fb19 Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Link: https://lore.kernel.org/r/20191014104538.3096-1-christian.brauner@ubuntu.com Signed-off-by: ralph950412 <ralph950412@gmail.com> |
||
|
|
e14e0696e2 |
Merge remote-tracking branch 'sm8350/lineage-20' into lineage-23.2
* sm8350/lineage-20: (148 commits)
ANDROID: Add FUSE_BPF to gki_defconfig
Reapply "UPSTREAM: seccomp: Remove bogus __user annotations"
ANDROID: fuse: Open-code vma_set_file() logic in fuse_backing_mmap()
BACKPORT: fuse: fix livelock in synchronous file put from fuseblk workers
BACKPORT: compat_ioctl: move more drivers to compat_ptr_ioctl
UPSTREAM: fuse: make sure reclaim doesn't write the inode
UPSTREAM: ANDROID: fuse-bpf: Correct fuse bpf feature flag
UPSTREAM: fuse: verify {g,u}id mount options correctly
fixup! BACKPORT: fuse: name fs_context consistently
BACKPORT: fuse: name fs_context consistently
UPSTREAM: fuse: fix root lookup with nonzero generation
UPSTREAM: ANDROID: fuse-bpf: Fix the issue of abnormal lseek system calls
UPSTREAM: ANDROID: fuse-bpf: Follow mounts in lookups
UPSTREAM: fuse: dax: set fc->dax to NULL in fuse_dax_conn_free()
BACKPORT: ANDROID: fuse-bpf: Ignore readaheads unless they go to the daemon
UPSTREAM: ANDROID: fuse-bpf: Add NULL pointer check in fuse_release_in
UPSTREAM: ANDROID: fs/passthrough: Fix compatibility with R/O file system
UPSTREAM: ANDROID: fuse-bpf: Add NULL pointer check in fuse_entry_revalidate
UPSTREAM: ANDROID: fuse-bpf: Get correct inode in mkdir
UPSTREAM: ANDROID: fuse-bpf: Use stored bpf for create_open
...
Change-Id: Ice6b8c09d19db311c827d0a9f48d46795be998ee
|
||
|
|
29efcdd0db |
BACKPORT: ANDROID: fuse-bpf: Use fuse_bpf_args in uapi
fuse_args is not suitable for use in the uapi - it is not stable, and contains internal pointers. Replace with stable equivalent. The end_offset values are currently unused and unset, but will be used in a follow up patch by the verifier. Test: fuse_test, atest ScopedStorageDeviceTest pass Bug: 202785178 Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: Ic1c12f9706aeae233cc30a0d68ed2533030e485b |
||
|
|
66d1fc6d06 |
UPSTREAM: ANDROID: fuse-bpf: Avoid reusing uint64_t for file
This moves the backing/fd files to their own space, instead of reusing the userspace provided fds. Bug: 222619123 Test: fuse_test passes, on cuttlefish CtsCameraTestCases passes Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I5d3b1ea8299f249ef5adc1ce2b7f45404a041208 |
||
|
|
b3fbcd3ca5 |
BACKPORT: ANDROID: fuse-bpf v1
Bug: 202785178 Test: test_fuse passes on linux, feature works on cuttlefish Signed-off-by: Paul Lawrence <paullawrence@google.com> Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: I987684b799b07391ccde350e98fde7976f5601aa |
||
|
|
2e6dc19099 |
BACKPORT: ANDROID: fuse: Move functions in preparation for fuse-bpf
Contains squash of this commit:
Author: Nathan Chancellor <nathan@kernel.org>
Date: Fri Jan 20 09:40:12 2023 -0700
ANDROID: fuse: Restore upstream type of bitfields in fuse_args
Commit 88b7179fcdb59 ("ANDROID: fuse: Move functions in preparation for
fuse-bpf") changed the type of these bitfields from the upstream type of
'bool' to 'int', which causes several warnings with recent versions of
clang:
/builds/linux/fs/fuse/dir.c:168:19: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bi
t-bitfield-constant-conversion]
args->out_argvar = true;
^ ~~~~
/builds/linux/fs/fuse/dir.c:492:18: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bi
t-bitfield-constant-conversion]
args.out_argvar = 1;
^ ~
/builds/linux/fs/fuse/dir.c:1649:20: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-b
it-bitfield-constant-conversion]
ap.args.out_pages = true;
^ ~~~~
/builds/linux/fs/fuse/dir.c:1650:21: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-b
it-bitfield-constant-conversion]
ap.args.out_argvar = true;
^ ~~~~
/builds/linux/fs/fuse/dir.c:1651:23: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-b
it-bitfield-constant-conversion]
ap.args.page_zeroing = true;
^ ~~~~
5 errors generated.
When fuse_args was moved back to the internal implementation in commit
9a5023967b4d2 ("ANDROID: fuse-bpf: Use fuse_bpf_args in uapi"), the type
was not restored. Do so now to fix the warnings and reduce the delta
with upstream.
Bug: 265200230
Change-Id: I4d51f331d842a1faff9a937140f0275130e70d73
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Bug: 202785178
Test: test_fuse passes on linux, feature works on cuttlefish
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Change-Id: Ie738893a821d1f5f252c4c6e86274d55a6f09965
|
||
|
|
d67035009c |
UPSTREAM: fuse: add submount support to <uapi/linux/fuse.h>
- Add fuse_attr.flags - Add FUSE_ATTR_SUBMOUNT This is a flag for fuse_attr.flags that indicates that the given entry resides on a different filesystem than the parent, and as such should have a different st_dev. - Add FUSE_SUBMOUNTS The client sets this flag if it supports automounting directories. Change-Id: Ibea2d75d0a93dc3c269555fdb7d0ee58af7860b4 Signed-off-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
|
|
9fe4e93da2 |
UPSTREAM: virtiofs: implement dax read/write operations
This patch implements basic DAX support. mmap() is not implemented yet and will come in later patches. This patch looks into implemeting read/write. We make use of interval tree to keep track of per inode dax mappings. Do not use dax for file extending writes, instead just send WRITE message to daemon (like we do for direct I/O path). This will keep write and i_size change atomic w.r.t crash. Change-Id: Ia135d8554026720dc87e4ef5858b230e91533de8 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com> Signed-off-by: Peng Tao <tao.peng@linux.alibaba.com> Cc: Dave Chinner <david@fromorbit.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
|
|
6672c1f145 |
UPSTREAM: virtiofs: introduce setupmapping/removemapping commands
Introduce two new fuse commands to setup/remove memory mappings. This will be used to setup/tear down file mapping in dax window. Change-Id: I9a5686146f83a72bdef0147bd1a96ec4dd1a278d Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Peng Tao <tao.peng@linux.alibaba.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
|
|
12d56dffdc |
UPSTREAM: virtiofs: implement FUSE_INIT map_alignment field
The device communicates FUSE_SETUPMAPPING/FUSE_REMOVMAPPING alignment constraints via the FUST_INIT map_alignment field. Parse this field and ensure our DAX mappings meet the alignment constraints. We don't actually align anything differently since our mappings are already 2MB aligned. Just check the value when the connection is established. If it becomes necessary to honor arbitrary alignments in the future we'll have to adjust how mappings are sized. The upshot of this commit is that we can be confident that mappings will work even when emulating x86 on Power and similar combinations where the host page sizes are different. Change-Id: I8c7b002aa413dbdae43dc159d82cba672e671351 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
|
|
30fe78a969 |
UPSTREAM: virtiofs: set up virtio_fs dax_device
Setup a dax device. Use the shm capability to find the cache entry and map it. The DAX window is accessed by the fs/dax.c infrastructure and must have struct pages (at least on x86). Use devm_memremap_pages() to map the DAX window PCI BAR and allocate struct page. Change-Id: I46c5a56c7add5d3afb9799db8ab0f64d3ea3ee0f Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com> Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
||
|
|
376925d57f |
Merge remote-tracking branch 'sm8350/lineage-20' into lineage-23.2
* sm8350/lineage-20: (306 commits) ANDROID: gki_defconfig: reduce KFENCE pool size ANDROID: GKI: enable KFENCE by setting the sample interval to 500ms ANDROID: GKI: Enable KFENCE UPSTREAM: random: split initialization into early step and later step UPSTREAM: kfence: avoid passing -g for test UPSTREAM: net: add and use skb_unclone_keeptruesize() helper UPSTREAM: kfence: fix memory leak when cat kfence objects UPSTREAM: kfence: unconditionally use unbound work queue UPSTREAM: kfence: use TASK_IDLE when awaiting allocation UPSTREAM: kfence: fix is_kfence_address() for addresses below KFENCE_POOL_SIZE FROMLIST: kfence: skip all GFP_ZONEMASK allocations FROMLIST: kfence: move the size check to the beginning of __kfence_alloc() ANDROID: kasan: fix interoperability with KFENCE UPSTREAM: arm64: mm: don't use CON and BLK mapping if KFENCE is enabled ANDROID: kfence: clean up unused variables FROMGIT: kfence: use power-efficient work queue to run delayed work FROMGIT: kfence: maximize allocation wait timeout duration FROMGIT: kfence: await for allocation using wait_event FROMGIT: kfence: zero guard page after out-of-bounds access UPSTREAM: kfence: make compatible with kmemleak ... Change-Id: Id1436b77692839dc2394f500bba42487fac1b2b4 |
||
|
|
ae6919a83c |
UPSTREAM: net: retrieve netns cookie via getsocketopt
It's getting more common to run nested container environments for
testing cloud software. One of such examples is Kind [1] which runs a
Kubernetes cluster in Docker containers on a single host. Each container
acts as a Kubernetes node, and thus can run any Pod (aka container)
inside the former. This approach simplifies testing a lot, as it
eliminates complicated VM setups.
Unfortunately, such a setup breaks some functionality when cgroupv2 BPF
programs are used for load-balancing. The load-balancer BPF program
needs to detect whether a request originates from the host netns or a
container netns in order to allow some access, e.g. to a service via a
loopback IP address. Typically, the programs detect this by comparing
netns cookies with the one of the init ns via a call to
bpf_get_netns_cookie(NULL). However, in nested environments the latter
cannot be used given the Kubernetes node's netns is outside the init ns.
To fix this, we need to pass the Kubernetes node netns cookie to the
program in a different way: by extending getsockopt() with a
SO_NETNS_COOKIE option, the orchestrator which runs in the Kubernetes
node netns can retrieve the cookie and pass it to the program instead.
Thus, this is following up on Eric's commit 3d368ab87cf6 ("net:
initialize net->net_cookie at netns setup") to allow retrieval via
SO_NETNS_COOKIE. This is also in line in how we retrieve socket cookie
via SO_COOKIE.
[1] https://kind.sigs.k8s.io/
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Martynas Pumputis <m@lambda.lt>
Cc: Eric Dumazet <edumazet@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit e8b9eab99232c4e62ada9d7976c80fd5e8118289)
Bug: 274789652
Tested: builds, net_test passes
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If784a592450af38d70f16da61e36cbbaff80ebca
|
||
|
|
bcce8defc3 |
UPSTREAM: seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE
This allows the seccomp notifier to continue a syscall. A positive
discussion about this feature was triggered by a post to the
ksummit-discuss mailing list (cf. [3]) and took place during KSummit
(cf. [1]) and again at the containers/checkpoint-restore
micro-conference at Linux Plumbers.
Recently we landed seccomp support for SECCOMP_RET_USER_NOTIF (cf. [4])
which enables a process (watchee) to retrieve an fd for its seccomp
filter. This fd can then be handed to another (usually more privileged)
process (watcher). The watcher will then be able to receive seccomp
messages about the syscalls having been performed by the watchee.
This feature is heavily used in some userspace workloads. For example,
it is currently used to intercept mknod() syscalls in user namespaces
aka in containers.
The mknod() syscall can be easily filtered based on dev_t. This allows
us to only intercept a very specific subset of mknod() syscalls.
Furthermore, mknod() is not possible in user namespaces toto coelo and
so intercepting and denying syscalls that are not in the whitelist on
accident is not a big deal. The watchee won't notice a difference.
In contrast to mknod(), a lot of other syscall we intercept (e.g.
setxattr()) cannot be easily filtered like mknod() because they have
pointer arguments. Additionally, some of them might actually succeed in
user namespaces (e.g. setxattr() for all "user.*" xattrs). Since we
currently cannot tell seccomp to continue from a user notifier we are
stuck with performing all of the syscalls in lieu of the container. This
is a huge security liability since it is extremely difficult to
correctly assume all of the necessary privileges of the calling task
such that the syscall can be successfully emulated without escaping
other additional security restrictions (think missing CAP_MKNOD for
mknod(), or MS_NODEV on a filesystem etc.). This can be solved by
telling seccomp to resume the syscall.
One thing that came up in the discussion was the problem that another
thread could change the memory after userspace has decided to let the
syscall continue which is a well known TOCTOU with seccomp which is
present in other ways already.
The discussion showed that this feature is already very useful for any
syscall without pointer arguments. For any accidentally intercepted
non-pointer syscall it is safe to continue.
For syscalls with pointer arguments there is a race but for any cautious
userspace and the main usec cases the race doesn't matter. The notifier
is intended to be used in a scenario where a more privileged watcher
supervises the syscalls of lesser privileged watchee to allow it to get
around kernel-enforced limitations by performing the syscall for it
whenever deemed save by the watcher. Hence, if a user tricks the watcher
into allowing a syscall they will either get a deny based on
kernel-enforced restrictions later or they will have changed the
arguments in such a way that they manage to perform a syscall with
arguments that they would've been allowed to do anyway.
In general, it is good to point out again, that the notifier fd was not
intended to allow userspace to implement a security policy but rather to
work around kernel security mechanisms in cases where the watcher knows
that a given action is safe to perform.
/* References */
[1]: https://linuxplumbersconf.org/event/4/contributions/560
[2]: https://linuxplumbersconf.org/event/4/contributions/477
[3]: https://lore.kernel.org/r/20190719093538.dhyopljyr5ns33qx@brauner.io
[4]: commit
|
||
|
|
2d6c1375ba |
BACKPORT: net: change accept_ra_min_rtr_lft to affect all RA lifetimes
commit 5027d54a9c30bc7ec808360378e2b4753f053f25 upstream.
accept_ra_min_rtr_lft only considered the lifetime of the default route
and discarded entire RAs accordingly.
This change renames accept_ra_min_rtr_lft to accept_ra_min_lft, and
applies the value to individual RA sections; in particular, router
lifetime, PIO preferred lifetime, and RIO lifetime. If any of those
lifetimes are lower than the configured value, the specific RA section
is ignored.
In order for the sysctl to be useful to Android, it should really apply
to all lifetimes in the RA, since that is what determines the minimum
frequency at which RAs must be processed by the kernel. Android uses
hardware offloads to drop RAs for a fraction of the minimum of all
lifetimes present in the RA (some networks have very frequent RAs (5s)
with high lifetimes (2h)). Despite this, we have encountered networks
that set the router lifetime to 30s which results in very frequent CPU
wakeups. Instead of disabling IPv6 (and dropping IPv6 ethertype in the
WiFi firmware) entirely on such networks, it seems better to ignore the
misconfigured routers while still processing RAs from other IPv6 routers
on the same network (i.e. to support IoT applications).
The previous implementation dropped the entire RA based on router
lifetime. This turned out to be hard to expand to the other lifetimes
present in the RA in a consistent manner; dropping the entire RA based
on RIO/PIO lifetimes would essentially require parsing the whole thing
twice.
Change-Id: I2168608875629ae07bbd30a02a061284110693e7
Fixes: 1671bcfd76fd ("net: add sysctl accept_ra_min_rtr_lft")
Cc: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: Patrick Rohr <prohr@google.com>
Reviewed-by: Maciej Żenczykowski <maze@google.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20230726230701.919212-1-prohr@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||
|
|
a8c70a62b8 |
BACKPORT: net: add sysctl accept_ra_min_rtr_lft
commit 1671bcfd76fdc0b9e65153cf759153083755fe4c upstream. This change adds a new sysctl accept_ra_min_rtr_lft to specify the minimum acceptable router lifetime in an RA. If the received RA router lifetime is less than the configured value (and not 0), the RA is ignored. This is useful for mobile devices, whose battery life can be impacted by networks that configure RAs with a short lifetime. On such networks, the device should never gain IPv6 provisioning and should attempt to drop RAs via hardware offload, if available. Change-Id: I5e575f2e2d303c6736fc5e983b65003c7e7a075a Signed-off-by: Patrick Rohr <prohr@google.com> Cc: Maciej Żenczykowski <maze@google.com> Cc: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
||
|
|
1df27edaaf |
Revert "wifi: cfg80211: Increase akm_suites array size in"
This reverts commit
|
||
|
|
9f0d3e60bc |
Merge tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4 into android13-5.4-lahaina
LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0 * tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4: msm:kgsl: Prevent sign extension on alignments reverting all USB patches msm: eva: OOB write issue in fence processing kgsl: gmu: Use num_vma for safe GMU VMAs array access net: Add netdevice notification for bridge activity bridge: port structure members from 5.4 kernel net: bridge: Fix for co-located mode UPSTREAM: usb: gadget: configfs: Add frame-based frame format support kgsl: Add buffer overflow check for perfcounter dynamic list usb: gadget: uvc: Add grey and I420 YUV UVC format support mtd: msm_qpic_nand: Use flash device ECC capability for erase page mtd: msm_qpic_nand: check for page_erased bit along with op_err UPSTREAM: usb: dwc3: Wait for EndXfer command completion netfilter: fix NATTYPE refresh timeout issue usb: gadget: uvc: Modify UVC_NUM_REQUESTS reverting enum-conversion, Handle CPU state and all USB patches msm: cvp: Fix for kernel address exposure vulnerability to user cnss: Init reserved memory device cnss: Dump stack by stack_trace_print cnss: Add support for building CNSS as a loadable module FROMLIST: media: venus: Add a check for packet size Add configures to enable CNSS platform driver FROMLIST: media: venus: Fix OOB read due to missing payload bound check dma-mapping-fast: Fix PMD offset calculation for non-2M aligned start aperture crypto: qcedev - fix UAF in crypto-qti driver msm: adsprpc: Prevent refcount increment for duplicate dmahandles dmaengine: msm_gpi: fix to avoid null pointer access mdm: ipa3: support IPoGRE new IOCTL and proc params msm: mhi_dev: Workqueue to handle host wakeup in M3+D0 iommu: Fix invalid access in av8l_fast_unmap_public msm: mhi_dev: Handle host wakeup in M3/D0 msm: ep_pcie: Wake host in D3cold handling if wake is pending FROMGIT: media: venus: hfi: add a check to handle OOB in sfr region FROMGIT: media: venus: hfi: add check to handle incorrect queue size FROMGIT: media: venus: hfi_parser: add check to avoid out of bound access Revert "msm_ipa: Install exception rule for PPPoE-MPLS" firmware: qcom_scm: do not clear dump mode from shutdown msm: adsprpc: Avoid taking reference for group_info adsprpc: Handle UAF scenario in put_args msm: eva: Adding kref count for cvp_get_inst_from_id wifi: cfg80211: Increase akm_suites array size in cfg80211_crypto_settings thermal: qcom: Add support to update tsens trip based on nvmem data Conflicts: Makefile arch/arm64/include/asm/cputype.h drivers/char/adsprpc.c drivers/hid/hid-ids.h drivers/net/usb/rtl8150.c drivers/platform/Kconfig drivers/platform/Makefile drivers/soc/qcom/mdt_loader.c drivers/soc/qcom/rpmh-rsc.c drivers/usb/core/quirks.c drivers/usb/dwc3/dwc3-qcom.c drivers/usb/dwc3/gadget.c drivers/usb/gadget/function/f_fs.c drivers/usb/gadget/function/f_ncm.c mm/slub.c mm/zsmalloc.c net/ipv4/tcp_output.c scripts/Makefile.extrawarn Change-Id: Ia4f3356ed4a105a2f3b0feda3e78725a01a970b2 |
||
|
|
ee679763c2 |
Merge remote-tracking branch 'sm8350/lineage-20' into lineage-23.2
* sm8350/lineage-20: (60 commits) dsp-kernel: Avoid overflow in ALIGN macro usage fixup! BACKPORT: treewide: Use fallthrough pseudo-keyword Revert "net, sctp, filter: remap copy_from_user failure error" UPSTREAM: bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE UPSTREAM: net: Fix checksum update for ILA adj-transport UPSTREAM: lwt_bpf: Replace preempt_disable() with migrate_disable() ANDROID: add kabi padding for bpf_verifier structure UPSTREAM: net/bpfilter: Initialize pos in __bpfilter_process_sockopt UPSTREAM: bpfilter: switch bpfilter_ip_set_sockopt to sockptr_t UPSTREAM: bpfilter: reject kernel addresses UPSTREAM: net/bpfilter: split __bpfilter_process_sockopt UPSTREAM: bpfilter: fix up a sparse annotation UPSTREAM: bpfilter: Allow to build bpfilter_umh as a module without static library UPSTREAM: bpfilter: Initialize pos variable UPSTREAM: bpfilter: switch to kernel_write UPSTREAM: bpfilter: Take advantage of the facilities of struct pid UPSTREAM: bpfilter: Move bpfilter_umh back into init data UPSTREAM: bpfilter: document build requirements for bpfilter_umh UPSTREAM: bpfilter: use 'userprogs' syntax to build bpfilter_umh UPSTREAM: exit: Factor thread_group_exited out of pidfd_poll ... Change-Id: Ia34a9cf685cbded88f9b0463ca77d3cca36a2053 |
||
|
|
2aeceac738 |
Merge f1b974d142 on remote branch
Change-Id: If973c515e7540989893d8e8f17039174b47453f0 |
||
|
|
2f7e583d02 |
UPSTREAM: bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE
commit ead7f9b8de65632ef8060b84b0c55049a33cfea1 upstream.
In Cilium, we use bpf_csum_diff + bpf_l4_csum_replace to, among other
things, update the L4 checksum after reverse SNATing IPv6 packets. That
use case is however not currently supported and leads to invalid
skb->csum values in some cases. This patch adds support for IPv6 address
changes in bpf_l4_csum_update via a new flag.
When calling bpf_l4_csum_replace in Cilium, it ends up calling
inet_proto_csum_replace_by_diff:
1: void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb,
2: __wsum diff, bool pseudohdr)
3: {
4: if (skb->ip_summed != CHECKSUM_PARTIAL) {
5: csum_replace_by_diff(sum, diff);
6: if (skb->ip_summed == CHECKSUM_COMPLETE && pseudohdr)
7: skb->csum = ~csum_sub(diff, skb->csum);
8: } else if (pseudohdr) {
9: *sum = ~csum_fold(csum_add(diff, csum_unfold(*sum)));
10: }
11: }
The bug happens when we're in the CHECKSUM_COMPLETE state. We've just
updated one of the IPv6 addresses. The helper now updates the L4 header
checksum on line 5. Next, it updates skb->csum on line 7. It shouldn't.
For an IPv6 packet, the updates of the IPv6 address and of the L4
checksum will cancel each other. The checksums are set such that
computing a checksum over the packet including its checksum will result
in a sum of 0. So the same is true here when we update the L4 checksum
on line 5. We'll update it as to cancel the previous IPv6 address
update. Hence skb->csum should remain untouched in this case.
The same bug doesn't affect IPv4 packets because, in that case, three
fields are updated: the IPv4 address, the IP checksum, and the L4
checksum. The change to the IPv4 address and one of the checksums still
cancel each other in skb->csum, but we're left with one checksum update
and should therefore update skb->csum accordingly. That's exactly what
inet_proto_csum_replace_by_diff does.
This special case for IPv6 L4 checksums is also described atop
inet_proto_csum_replace16, the function we should be using in this case.
This patch introduces a new bpf_l4_csum_replace flag, BPF_F_IPV6,
to indicate that we're updating the L4 checksum of an IPv6 packet. When
the flag is set, inet_proto_csum_replace_by_diff will skip the
skb->csum update.
Fixes:
|
||
|
|
d4844f38c0 |
Merge android11-5.4.302(91d385eb) into msm-5.4
reverting all USB patches
Linux 5.4.302
Input: pegasus-notetaker - fix potential out-of-bounds access
Input: remove third argument of usb_maxpacket()
usb: deprecate the third argument of usb_maxpacket()
ata: libata-scsi: Fix system suspend for a security locked drive
fs/proc: fix uaf in proc_readdir_de()
pmdomain: imx: Fix reference count leak in imx_gpc_remove
pmdomain: arm: scmi: Fix genpd leak on provider registration failure
net: netpoll: fix incorrect refcount handling causing incorrect cleanup
net: qede: Initialize qede_ll_ops with designated initializer
uio_hv_generic: Set event for all channels on the device
net: ethernet: ti: netcp: Standardize knav_dma_open_channel to return NULL on error
ALSA: usb-audio: fix uac2 clock source at terminal parser
mm/page_alloc: fix hash table order logging in alloc_large_system_hash()
kconfig/nconf: Initialize the default locale at startup
kconfig/mconf: Initialize the default locale at startup
vsock: Ignore signal/timeout on connect() if already established
s390/ctcm: Fix double-kfree
net: openvswitch: remove never-working support for setting nsh fields
mlxsw: spectrum: Fix memory leak in mlxsw_sp_flower_stats()
MIPS: Malta: Fix !EVA SOC-it PCI MMIO
scsi: target: tcm_loop: Fix segfault in tcm_loop_tpg_address_show()
scsi: sg: Do not sleep in atomic context
Input: cros_ec_keyb - fix an invalid memory access
be2net: pass wrb_params in case of OS2BMC
HID: quirks: work around VID/PID conflict for 0x4c4a/0x4155
isdn: mISDN: hfcsusb: fix memory leak in hfcsusb_probe()
EDAC/altera: Use INTTEST register for Ethernet and USB SBE injection
EDAC/altera: Handle OCRAM ECC enable after warm reset
spi: Try to get ACPI GPIO IRQ earlier
ipv4: route: Prevent rt_bind_exception() from rebinding stale fnhe
strparser: Fix signed/unsigned mismatch bug
gcov: add support for GCC 15
mm/ksm: fix flag-dropping behavior in ksm_madvise
ALSA: usb-audio: Fix NULL pointer dereference in snd_usb_mixer_controls_badd
drm/vmwgfx: Validate command header size against SVGA_CMD_MAX_DATASIZE
ASoC: cs4271: Fix regulator leak on probe failure
regulator: fixed: fix GPIO descriptor leak on register failure
regulator: fixed: use dev_err_probe for register
Bluetooth: L2CAP: export l2cap_chan_hold for modules
net_sched: limit try_bulk_dequeue_skb() batches
net_sched: remove need_resched() from qdisc_run()
net/mlx5e: Fix wraparound in rate limiting for values above 255 Gbps
net/mlx5e: Fix maxrate wraparound in threshold between units
net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
wifi: mac80211: skip rate verification for not captured PSDUs
net: mdio: fix resource leak in mdiobus_register_device()
tipc: Fix use-after-free in tipc_mon_reinit_self().
tipc: simplify the finalize work queue
sctp: prevent possible shift-out-of-bounds in sctp_transport_update_rto
sctp: get netns from asoc and ep base
Bluetooth: 6lowpan: Don't hold spin lock over sleeping functions
Bluetooth: 6lowpan: fix BDADDR_LE vs ADDR_LE_DEV address type confusion
Bluetooth: 6lowpan: reset link-local header on ipv6 recv path
Bluetooth: btusb: reorder cleanup in btusb_disconnect to avoid UAF
net: fec: correct rx_bytes statistic for the case SHIFT16 is set
ASoC: max98090/91: fixed max98091 ALSA widget powering up/down
HID: quirks: avoid Cooler Master MM712 dongle wakeup bug
NFS4: Fix state renewals missing after boot
compiler_types: Move unused static inline functions warning to W=2
extcon: adc-jack: Cleanup wakeup source only if it was enabled
tracing: Fix memory leaks in create_field_var()
net: usb: qmi_wwan: initialize MAC header offset in qmimux_rx_fixup
sctp: Prevent TOCTOU out-of-bounds write
sctp: Hold RCU read lock while iterating over address list
net: dsa: b53: stop reading ARL entries if search is done
net: dsa: b53: fix enabling ip multicast
net: dsa: b53: fix resetting speed and pause on forced link
net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
net: dsa/b53: change b53_force_port_config() pause argument
net: vlan: sync VLAN features with lower device
ceph: add checking of wait_for_completion_killable() return value
fbdev: Add bounds checking in bit_putcs to fix vmalloc-out-of-bounds
ACPI: property: Return present device nodes only on fwnode interface
9p: sysfs_init: don't hardcode error to ENOMEM
9p: fix /sys/fs/9p/caches overwriting itself
fs/hpfs: Fix error code for new_inode() failure in mkdir/create/mknod/symlink
ACPICA: Update dsmethod.c to get rid of unused variable warning
orangefs: fix xattr related buffer overflow...
page_pool: Clamp pool size to max 16K pages
Bluetooth: bcsp: receive data only if registered
Bluetooth: SCO: Fix UAF on sco_conn_free
net: macb: avoid dealing with endianness in macb_set_hwaddr()
nfs4_setup_readdir(): insufficient locking for ->d_parent->d_inode dereferencing
NFSv4.1: fix mount hang after CREATE_SESSION failure
NFSv4: handle ERR_GRACE on delegation recalls
remoteproc: qcom: q6v5: Avoid handling handover twice
sparc/module: Add R_SPARC_UA64 relocation handling
net: intel: fm10k: Fix parameter idx set but not used
jfs: fix uninitialized waitqueue in transaction manager
jfs: Verify inode mode when loading from disk
ipv6: np->rxpmtu race annotation
usb: xhci: plat: Facilitate using autosuspend for xhci plat devices
usb: mon: Increase BUFF_MAX to 64 MiB to support multi-MB URBs
allow finish_no_open(file, ERR_PTR(-E...))
scsi: lpfc: Define size of debugfs entry for xri rebalancing
scsi: lpfc: Check return status of lpfc_reset_flush_io_context during TGT_RESET
selftests/Makefile: include $(INSTALL_DEP_TARGETS) in clean target to clean net/lib dependency
net/cls_cgroup: Fix task_get_classid() during qdisc run
selftests: Replace sleep with slowwait
selftests: Disable dad for ipv6 in fcnal-test.sh
media: redrat3: use int type to store negative error codes
net: sh_eth: Disable WoL if system can not suspend
phy: cadence: cdns-dphy: Enable lower resolutions in dphy
usb: gadget: f_hid: Fix zero length packet transfer
net: call cond_resched() less often in __release_sock()
ALSA: usb-audio: apply quirk for MOONDROP Quark2
net: nfc: nci: Increase NCI_DATA_TIMEOUT to 3000 ms
dmaengine: dw-edma: Set status for callback_result
dmaengine: mv_xor: match alloc_wc and free_wc
dmaengine: sh: setup_xref error handling
scsi: pm8001: Use int instead of u32 to store error codes
mips: lantiq: xway: sysctrl: rename stp clock
mips: lantiq: danube: add missing device_type in pci node
mips: lantiq: danube: add missing properties to cpu node
media: fix uninitialized symbol warnings
drm/amdkfd: Tie UNMAP_LATENCY to queue_preemption
extcon: adc-jack: Fix wakeup source leaks on device unbind
rds: Fix endianness annotation for RDS_MPATH_HASH
PCI/P2PDMA: Fix incorrect pointer usage in devm_kfree() call
net: Call trace_sock_exceed_buf_limit() for memcg failure with SK_MEM_RECV.
net: When removing nexthops, don't call synchronize_net if it is not necessary
char: misc: Does not request module for miscdevice with dynamic minor
usb: gadget: f_ncm: Fix MAC assignment NCM ethernet
iio: adc: spear_adc: mask SPEAR_ADC_STATUS channel and avg sample before setting register
media: imon: make send_packet() more robust
net: ipv6: fix field-spanning memcpy warning in AH output
bridge: Redirect to backup port when port is administratively down
powerpc/eeh: Use result of error_detected() in uevent
x86/vsyscall: Do not require X86_PF_INSTR to emulate vsyscall
media: pci: ivtv: Don't create fake v4l2_fh
drm/amdkfd: return -ENOTTY for unsupported IOCTLs
selftests/net: Ensure assert() triggers in psock_tpacket.c
selftests/net: Replace non-standard __WORDSIZE with sizeof(long) * 8
PCI: Disable MSI on RDC PCI to PCIe bridges
drm/nouveau: replace snprintf() with scnprintf() in nvkm_snprintbf()
mfd: madera: Work around false-positive -Wininitialized warning
mfd: stmpe-i2c: Add missing MODULE_LICENSE
mfd: stmpe: Remove IRQ domain upon removal
tools/power x86_energy_perf_policy: Prefer driver HWP limits
tools/power x86_energy_perf_policy: Enhance HWP enable
tools/cpupower: Fix incorrect size in cpuidle_state_disable()
hwmon: (dell-smm) Add support for Dell OptiPlex 7040
uprobe: Do not emulate/sstep original instruction when ip is changed
clocksource/drivers/vf-pit: Replace raw_readl/writel to readl/writel
video: backlight: lp855x_bl: Set correct EPROM start for LP8556
tee: allow a driver to allocate a tee_device without a pool
ACPICA: dispatcher: Use acpi_ds_clear_operands() in acpi_ds_call_control_method()
mmc: sdhci-msm: Enable tuning for SDR50 mode for SD card
irqchip/gic-v2m: Handle Multiple MSI base IRQ Alignment
arc: Fix __fls() const-foldability via __builtin_clzl()
cpufreq/longhaul: handle NULL policy in longhaul_exit
selftests/bpf: Fix bpf_prog_detach2 usage in test_lirc_mode2
ACPI: video: force native for Lenovo 82K8
memstick: Add timeout to prevent indefinite waiting
mmc: host: renesas_sdhi: Fix the actual clock
bpf: Don't use %pK through printk
spi: loopback-test: Don't use %pK through printk
soc: qcom: smem: Fix endian-unaware access of num_entries
usb: gadget: f_fs: Fix epfile null pointer access after ep enable.
serial: 8250_dw: handle reset control deassert error
serial: 8250_dw: Use devm_add_action_or_reset()
serial: 8250_dw: Use devm_clk_get_optional() to get the input clock
can: gs_usb: increase max interface to U8_MAX
devcoredump: Fix circular locking dependency with devcd->mutex.
net: ravb: Enforce descriptor type ordering
x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID
wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode
net: phy: dp83867: Disable EEE support as not implemented
regmap: slimbus: fix bus_context pointer in regmap init calls
drm/etnaviv: fix flush sequence logic
usbnet: Prevents free active kevent
wifi: ath10k: Fix memory leak on unsupported WMI command
ASoC: qdsp6: q6asm: do not sleep while atomic
fbdev: valkyriefb: Fix reference count leak in valkyriefb_init
fbdev: pvr2fb: Fix leftover reference to ONCHIP_NR_DMA_CHANNELS
fbdev: bitblit: bound-check glyph index in bit_putcs*
ACPI: video: Fix use-after-free in acpi_video_switch_brightness()
fbdev: atyfb: Check if pll_ops->init_pll failed
net: usb: asix_devices: Check return value of usbnet_get_endpoints
btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot()
x86/bugs: Fix reporting of LFENCE retpoline
net/sched: sch_qfq: Fix null-deref in agg_dequeue
UPSTREAM: crypto: essiv - Check ssize for decryption and in-place encryption
ANDROID: GKI: fix up build break where timer_delete_sync() was used
Revert "net: rtnetlink: remove redundant assignment to variable err"
Revert "net: rtnetlink: add msg kind names"
Revert "net: rtnetlink: add helper to extract msg type's kind"
Revert "net: rtnetlink: use BIT for flag values"
Revert "net: netlink: add NLM_F_BULK delete request modifier"
Revert "net: rtnetlink: add bulk delete support flag"
Revert "net: rtnetlink: fix module reference count leak issue in rtnetlink_rcv_msg"
Revert "net: add ndo_fdb_del_bulk"
Revert "net: rtnetlink: add NLM_F_BULK support to rtnl_fdb_del"
Revert "rtnetlink: Allow deleting FDB entries in user namespace"
Linux 5.4.301
net: rtnetlink: fix module reference count leak issue in rtnetlink_rcv_msg
media: s5p-mfc: remove an unused/uninitialized variable
NFSD: Fix last write offset handling in layoutcommit
NFSD: Minor cleanup in layoutcommit processing
padata: Reset next CPU when reorder sequence wraps around
KEYS: trusted_tpm1: Compare HMAC values in constant time
NFSD: Define a proc_layoutcommit for the FlexFiles layout type
vfs: Don't leak disconnected dentries on umount
jbd2: ensure that all ongoing I/O complete before freeing blocks
ext4: detect invalid INLINE_DATA + EXTENTS flag combination
drm/amdgpu: use atomic functions with memory barriers for vm fault info
ext4: avoid potential buffer over-read in parse_apply_sb_mount_options()
spi: cadence-quadspi: Flush posted register writes before DAC access
spi: cadence-quadspi: Flush posted register writes before INDAC access
memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe
memory: samsung: exynos-srom: Correct alignment
arm64: errata: Apply workarounds for Neoverse-V3AE
arm64: cputype: Add Neoverse-V3AE definitions
comedi: fix divide-by-zero in comedi_buf_munge()
binder: remove "invalid inc weak" check
xhci: dbc: enable back DbC in resume if it was enabled before suspend
usb/core/quirks: Add Huawei ME906S to wakeup quirk
USB: serial: option: add Telit FN920C04 ECM compositions
USB: serial: option: add Quectel RG255C
USB: serial: option: add UNISOC UIS7720
net: ravb: Ensure memory write completes before ringing TX doorbell
net: usb: rtl8150: Fix frame padding
ocfs2: clear extent cache after moving/defragmenting extents
MIPS: Malta: Fix keyboard resource preventing i8042 driver from registering
Revert "cpuidle: menu: Avoid discarding useful information"
net: bonding: fix possible peer notify event loss or dup issue
sctp: avoid NULL dereference when chunk data buffer is missing
arm64, mm: avoid always making PTE dirty in pte_mkwrite()
net: enetc: correct the value of ENETC_RXB_TRUESIZE
rtnetlink: Allow deleting FDB entries in user namespace
net: rtnetlink: add NLM_F_BULK support to rtnl_fdb_del
net: add ndo_fdb_del_bulk
net: rtnetlink: add bulk delete support flag
net: netlink: add NLM_F_BULK delete request modifier
net: rtnetlink: use BIT for flag values
net: rtnetlink: add helper to extract msg type's kind
net: rtnetlink: add msg kind names
net: rtnetlink: remove redundant assignment to variable err
m68k: bitops: Fix find_*_bit() signatures
hfsplus: return EIO when type of hidden directory mismatch in hfsplus_fill_super()
hfs: fix KMSAN uninit-value issue in hfs_find_set_zero_bits()
dlm: check for defined force value in dlm_lockspace_release
hfsplus: fix KMSAN uninit-value issue in hfsplus_delete_cat()
hfs: validate record offset in hfsplus_bmap_alloc
hfsplus: fix KMSAN uninit-value issue in __hfsplus_ext_cache_extent()
hfs: make proper initalization of struct hfs_find_data
hfs: clear offset and space out of valid records in b-tree node
exec: Fix incorrect type for ret
hfsplus: fix slab-out-of-bounds read in hfsplus_strcasecmp()
ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings
sched/fair: Fix pelt lost idle time detection
sched/balancing: Rename newidle_balance() => sched_balance_newidle()
sched/fair: Trivial correction of the newidle_balance() comment
sched: Make newidle_balance() static again
tls: don't rely on tx_work during send()
tls: always set record_type in tls_process_cmsg
tg3: prevent use of uninitialized remote_adv and local_adv variables
tcp: fix tcp_tso_should_defer() vs large RTT
amd-xgbe: Avoid spurious link down messages during interface toggle
net/ip6_tunnel: Prevent perpetual tunnel growth
net: dlink: handle dma_map_single() failure properly
net: dl2k: switch from 'pci_' to 'dma_' API
media: pci: ivtv: Add missing check after DMA map
media: pci/ivtv: switch from 'pci_' to 'dma_' API
xen/events: Update virq_to_irq on migration
media: lirc: Fix error handling in lirc_register()
media: rc: Directly use ida_free()
drm/exynos: exynos7_drm_decon: remove ctx->suspended
btrfs: avoid potential out-of-bounds in btrfs_encode_fh()
pwm: berlin: Fix wrong register in suspend/resume
media: cx18: Add missing check after DMA map
xen/events: Cleanup find_virq() return codes
cramfs: Verify inode mode when loading from disk
fs: Add 'initramfs_options' to set initramfs mount options
pid: Add a judgment for ns null in pid_nr_ns
minixfs: Verify inode mode when loading from disk
tracing: Fix race condition in kprobe initialization causing NULL pointer dereference
dm: fix NULL pointer dereference in __dm_suspend()
mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag
mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type
mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value
Squashfs: reject negative file sizes in squashfs_read_inode()
Squashfs: add additional inode sanity checking
media: mc: Clear minor number before put device
mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data()
fs: udf: fix OOB read in lengthAllocDescs handling
KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
net/9p: fix double req put in p9_fd_cancelled
ext4: guard against EA inode refcount underflow in xattr update
ext4: correctly handle queries for metadata mappings
ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch()
nfsd: nfserr_jukebox in nlm_fopen should lead to a retry
x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases)
x86/umip: Check that the instruction opcode is at least two bytes
PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit
PCI/AER: Fix missing uevent on recovery when a reset is requested
PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV
rseq/selftests: Use weak symbol reference, not definition, to link with glibc
rtc: interface: Fix long-standing race when setting alarm
rtc: interface: Ensure alarm irq is enabled when UIE is enabled
mmc: core: SPI mode remove cmd7
mtd: rawnand: fsmc: Default to autodetect buswidth
sparc: fix error handling in scan_one_device()
sparc64: fix hugetlb for sun4u
sctp: Fix MAC comparison to be constant-time
scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl()
parisc: don't reference obsolete termio struct for TC* constants
lib/genalloc: fix device leak in of_gen_pool_get()
iio: frequency: adf4350: Fix prescaler usage.
iio: dac: ad5421: use int type to store negative error codes
iio: dac: ad5360: use int type to store negative error codes
crypto: atmel - Fix dma_unmap_sg() direction
cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request()
drm/nouveau: fix bad ret code in nouveau_bo_move_prep
media: i2c: mt9v111: fix incorrect type for ret
firmware: meson_sm: fix device leak at probe
xen/manage: Fix suspend error path
arm64: dts: qcom: msm8916: Add missing MDSS reset
ACPI: debug: fix signedness issues in read/write helpers
ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT
tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
tpm, tpm_tis: Claim locality before writing interrupt registers
crypto: essiv - Check ssize for decryption and in-place encryption
mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes
mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call
tools build: Align warning options with perf
net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe
tcp: Don't call reqsk_fastopen_remove() in tcp_conn_request().
net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce()
drm/vmwgfx: Fix Use-after-free in validation
net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter()
scsi: mvsas: Fix use-after-free bugs in mvs_work_queue
scsi: mvsas: Use sas_task_find_rq() for tagging
scsi: mvsas: Delete mvs_tag_init()
scsi: libsas: Add sas_task_find_rq()
clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate()
perf session: Fix handling when buffer exceeds 2 GiB
rtc: x1205: Fix Xicor X1205 vendor prefix
perf util: Fix compression checks returning -1 as bool
iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE
clocksource/drivers/clps711x: Fix resource leaks in error paths
pinctrl: check the return value of pinmux_ops::get_function_name()
Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak
mm: hugetlb: avoid soft lockup when mprotect to large memory area
uio_hv_generic: Let userspace take care of interrupt mask
Squashfs: fix uninit-value in squashfs_get_parent
Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set"
net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable
nfp: fix RSS hash key size when RSS is not supported
drivers/base/node: fix double free in register_one_node()
ocfs2: fix double free in user_cluster_connect()
net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast
RDMA/siw: Always report immediate post SQ errors
usb: vhci-hcd: Prevent suspending virtually attached devices
scsi: mpt3sas: Fix crash in transport port remove by using ioc_info()
ipvs: Defer ip_vs_ftp unregister during netns cleanup
NFSv4.1: fix backchannel max_resp_sz verification check
remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice
sparc: fix accurate exception reporting in copy_{from,to}_user for M7
sparc: fix accurate exception reporting in copy_to_user for Niagara 4
sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara
sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III
sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC
IB/sa: Fix sa_local_svc_timeout_ms read race
RDMA/core: Resolve MAC of next-hop device without ARP support
wifi: mt76: fix potential memory leak in mt76_wmac_probe()
drivers/base/node: handle error properly in register_one_node()
watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog
netfilter: ipset: Remove unused htable_bits in macro ahash_region
iio: consumers: Fix offset handling in iio_convert_raw_to_processed()
ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping
ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping
ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping
pps: fix warning in pps_register_cdev when register device fail
misc: genwqe: Fix incorrect cmd field being reported in error
usb: gadget: configfs: Correctly set use_os_string at bind
usb: phy: twl6030: Fix incorrect type for ret
tcp: fix __tcp_close() to only send RST when required
PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation
wifi: mwifiex: send world regulatory domain to driver
ALSA: lx_core: use int type to store negative error codes
media: rj54n1cb0c: Fix memleak in rj54n1_probe()
scsi: myrs: Fix dma_alloc_coherent() error check
scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod
serial: max310x: Add error checking in probe()
usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup
drm/radeon/r600_cs: clean up of dead code in r600_cs
i2c: designware: Add disabling clocks when probe fails
i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD
bpf: Explicitly check accesses to bpf_sock_addr
selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported
pwm: tiehrpwm: Fix corner case in clock divisor calculation
block: use int to store blk_stack_limits() return value
blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx
pinctrl: meson-gxl: add missing i2c_d pinmux
soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS
ACPI: processor: idle: Fix memory leak when register cpuidle device failed
regmap: Remove superfluous check for !config in __regmap_init()
x86/vdso: Fix output operand size of RDPID
perf: arm_spe: Prevent overflow in PERF_IDX2OFF()
driver core/PM: Set power.no_callbacks along with power.no_pm
staging: axis-fifo: flush RX FIFO on read errors
staging: axis-fifo: fix maximum TX packet length check
perf subcmd: avoid crash in exclude_cmds when excludes is empty
dm-integrity: limit MAX_TAG_SIZE to 255
wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
USB: serial: option: add SIMCom 8230C compositions
media: rc: fix races with imon_disconnect()
media: imon: grab lock earlier in imon_ir_change_protocol()
media: imon: reorganize serialization
media: rc: Add support for another iMON 0xffdc device
media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe
media: tuner: xc5000: Fix use-after-free in xc5000_release
media: tunner: xc5000: Refactor firmware load
udp: Fix memory accounting leak.
media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove
scsi: target: target_core_configfs: Add length check to avoid buffer overflow
UPSTREAM: soc: qcom: mdt_loader: Deal with zero e_shentsize
Revert "genirq: Provide new interfaces for affinity hints"
Revert "i40e: Use irq_update_affinity_hint()"
Revert "i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path"
Linux 5.4.300
mm/hugetlb: fix folio is still mapped when deleted
i40e: add mask to apply valid bits for itr_idx
i40e: fix validation of VF state in get resources
i40e: fix idx validation in config queues msg
i40e: add validation for ring_len param
i40e: increase max descriptors for XL710
mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()
fbcon: Fix OOB access in font allocation
fbcon: fix integer overflow in fbcon_do_set_font
i40e: add max boundary check for VF filters
i40e: fix input validation logic for action_meta
i40e: fix idx validation in i40e_validate_queue_map
drm/gma500: Fix null dereference in hdmi teardown
can: peak_usb: fix shift-out-of-bounds issue
can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow
can: sun4i_can: populate ndo_change_mtu() to prevent buffer overflow
can: hi311x: populate ndo_change_mtu() to prevent buffer overflow
can: rcar_can: rcar_can_resume(): fix s2ram with PSCI
IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions
usb: core: Add 0x prefix to quirks debug output
ALSA: usb-audio: Fix build with CONFIG_INPUT=n
ALSA: usb-audio: Convert comma to semicolon
ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5
ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks
ALSA: usb-audio: Simplify NULL comparison in mixer_quirks
ALSA: usb-audio: Avoid multiple assignments in mixer_quirks
ALSA: usb-audio: Fix block comments in mixer_quirks
KVM: SVM: Sync TPR from LAPIC into VMCB::V_TPR even if AVIC is active
net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer
net: rfkill: gpio: add DT support
serial: sc16is7xx: fix bug in flow control levels init
USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels
usb: gadget: dummy_hcd: remove usage of list iterator past the loop body
ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message
ASoC: wm8974: Correct PLL rate rounding
ASoC: wm8940: Correct typo in control name
rds: ib: Increment i_fastreg_wrs before bailing out
mmc: mvsdio: Fix dma_unmap_sg() nents value
power: supply: bq27xxx: restrict no-battery detection to bq27000
power: supply: bq27xxx: fix error return in case of no bq27000 hdq battery
nilfs2: fix CFI failure when accessing /sys/fs/nilfs2/features/*
cnic: Fix use-after-free bugs in cnic_delete_task
net: liquidio: fix overflow in octeon_init_instr_queue()
Revert "net/mlx5e: Update and set Xon/Xoff upon port speed set"
tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect().
i40e: remove redundant memory barrier when cleaning Tx descs
net: natsemi: fix `rx_dropped` double accounting on `netif_rx()` failure
cgroup: split cgroup_destroy_wq into 3 workqueues
pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch
wifi: mac80211: fix incorrect type for ret
ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported
mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory
soc: qcom: mdt_loader: Deal with zero e_shentsize
phy: ti-pipe3: fix device leak at unbind
dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees
dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails
can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed
i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path
i40e: Use irq_update_affinity_hint()
genirq: Provide new interfaces for affinity hints
genirq: Export affinity setter for modules
genirq/affinity: Add irq_update_affinity_desc()
igb: fix link test skipping when interface is admin down
net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable()
USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions
USB: serial: option: add Telit Cinterion FN990A w/audio compositions
tty: hvc_console: Call hvc_kick in hvc_write unconditionally
mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing
mtd: nand: raw: atmel: Fix comment in timings preparation
mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer
mm/khugepaged: fix the address passed to notifier on testing young
fuse: prevent overflow in copy_file_range return value
fuse: check if copy_file_range() returns larger than requested size
mtd: rawnand: stm32_fmc2: fix ECC overwrite
ocfs2: fix recursive semaphore deadlock in fiemap call
EDAC/altera: Delete an inappropriate dma_free_coherent() call
tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork.
NFSv4: Don't clear capabilities that won't be reset
net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod.
usb: hub: Fix flushing of delayed work used for post resume purposes
UPSTREAM: vsock: Do not allow binding to VMADDR_PORT_ANY
Linux 5.4.299
dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status()
cifs: fix integer overflow in match_server()
spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
spi: spi-fsl-lpspi: Set correct chip-select polarity bit
spi: spi-fsl-lpspi: Fix transmissions when using CONT
pcmcia: Add error handling for add_interval() in do_validate_mem()
ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model
randstruct: gcc-plugin: Fix attribute addition
randstruct: gcc-plugin: Remove bogus void member
vmxnet3: update MTU after device quiesce
net: dsa: microchip: linearize skb for tail-tagging switches
net: dsa: microchip: update tag_ksz masks for KSZ9477 family
dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()
ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup
gpio: pca953x: fix IRQ storm on system wake up
iio: light: opt3001: fix deadlock due to concurrent flag access
iio: chemical: pms7003: use aligned_s64 for timestamp
KVM: x86: Take irqfds.lock when adding/deleting IRQ bypass producer
cpufreq/sched: Explicitly synchronize limits_changed flag handling
mm/slub: avoid accessing metadata when pointer is invalid in object_err()
scsi: lpfc: Fix buffer free/clear order in deferred receive path
mm/khugepaged: fix ->anon_vma race
e1000e: fix heap overflow in e1000_set_eeprom
batman-adv: fix OOB read/write in network-coding decode
drm/amdgpu: drop hw access in non-DC audio fini
wifi: mwifiex: Initialize the chan_stats array to zero
pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region()
ALSA: usb-audio: Add mute TLV for playback volumes on some devices
ppp: fix memory leak in pad_compress_skb
net: atm: fix memory leak in atm_register_sysfs when device_register fail
ax25: properly unshare skbs in ax25_kiss_rcv()
ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init()
net: thunder_bgx: decrement cleanup index before use
net: thunder_bgx: add a missing of_node_put
wifi: libertas: cap SSID len in lbs_associate()
wifi: cw1200: cap SSID length in cw1200_do_join()
net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets
i40e: Fix potential invalid access when MAC list is empty
icmp: fix icmp_ndo_send address translation for reply direction
mISDN: Fix memory leak in dsp_hwec_enable()
xirc2ps_cs: fix register access when enabling FullDuplex
Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen()
netfilter: conntrack: helper: Replace -EEXIST by -EBUSY
wifi: cfg80211: fix use-after-free in cmp_bss()
powerpc: boot: Remove leading zero in label in udelay()
Linux 5.4.298
Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS"
net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions
Revert "drm/amdgpu: fix incorrect vm flags to map bo"
HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version()
HID: wacom: Add a new Art Pen 2
HID: asus: fix UAF via HID_CLAIMED_INPUT validation
KVM: x86: use array_index_nospec with indices that come from guest
efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare
sctp: initialize more fields in sctp_v6_from_sk()
net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts
net/mlx5e: Set local Xoff after FW update
net/mlx5e: Update and set Xon/Xoff upon port speed set
net/mlx5e: Update and set Xon/Xoff upon MTU set
net: dlink: fix multicast stats being counted incorrectly
atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
net/atm: remove the atmdev_ops {get, set}sockopt methods
Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced
powerpc/kvm: Fix ifdef to remove build warning
net: ipv4: fix regression in local-broadcast routes
vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put()
scsi: core: sysfs: Correct sysfs attributes access rights
ftrace: Fix potential warning in trace_printk_seq during ftrace_dump
pinctrl: STMFX: add missing HAS_IOMEM dependency
Revert "PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports"
Revert "PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()"
UPSTREAM: perf/core: Fix potential NULL deref
UPSTREAM: net/packet: fix a race in packet_set_ring() and packet_notifier()
Linux 5.4.297
alloc_fdtable(): change calling conventions.
s390/hypfs: Enable limited access during lockdown
s390/hypfs: Avoid unnecessary ioctl registration in debugfs
ALSA: usb-audio: Use correct sub-type for UAC3 feature unit validation
net/sched: Remove unnecessary WARNING condition for empty child qdisc in htb_activate
net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit
ixgbe: xsk: resolve the negative overflow of budget in ixgbe_xmit_zc
ipv6: sr: validate HMAC algorithm ID in seg6_hmac_info_add
ALSA: usb-audio: Fix size validation in convert_chmap_v3()
scsi: qla4xxx: Prevent a potential error pointer dereference
usb: xhci: Fix slot_id resource race conflict
nfs: fix UAF in direct writes
NFS: Fix up commit deadlocks
cifs: Fix UAF in cifs_demultiplex_thread()
Bluetooth: fix use-after-free in device_for_each_child()
act_mirred: use the backlog for nested calls to mirred ingress
net/sched: act_mirred: better wording on protection against excessive stack growth
net/sched: act_mirred: refactor the handle of xmit
selftests: forwarding: tc_actions.sh: add matchall mirror test
net: sched: don't expose action qstats to skb_tc_reinsert()
net: sched: extract qstats update code into functions
net: sched: extract bstats update code into function
net: sched: extract common action counters update code into function
mm: perform the mapping_map_writable() check after call_mmap()
mm: update memfd seal write check to include F_SEAL_WRITE
mm: drop the assumption that VM_SHARED always implies writable
codel: remove sch->q.qlen check before qdisc_tree_reduce_backlog()
sch_qfq: make qfq_qlen_notify() idempotent
sch_hfsc: make hfsc_qlen_notify() idempotent
sch_drr: make drr_qlen_notify() idempotent
btrfs: populate otime when logging an inode item
media: venus: hfi: explicitly release IRQ during teardown
f2fs: fix to avoid out-of-boundary access in dnode page
media: venus: protect against spurious interrupts during probe
media: qcom: camss: cleanup media device allocated resource on error path
media: venus: vdec: Clamp param smaller than 1fps and bigger than 240.
drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS
pwm: mediatek: Fix duty and period setting
pwm: mediatek: Handle hardware enable and clock enable separately
pwm: mediatek: Implement .apply() callback
media: rainshadow-cec: fix TOCTOU race condition in rain_interrupt()
media: v4l2-ctrls: Don't reset handler's error in v4l2_ctrl_handler_free()
media: v4l2-ctrls: always copy the controls on completion
ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig
soc: qcom: mdt_loader: Ensure we don't read past the ELF header
rtc: ds1307: handle oscillator stop flag (OSF) for ds1341
usb: musb: omap2430: fix device leak at unbind
NFS: Fix the setting of capabilities when automounting a new filesystem
NFS: Fix up handling of outstanding layoutcommit in nfs_update_inode()
NFSv4: Fix nfs4_bitmap_copy_adjust()
usb: typec: fusb302: cache PD RX state
cdc-acm: fix race between initial clearing halt and open
USB: cdc-acm: do not log successful probe on later errors
mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
mm/kmemleak: turn kmemleak_lock and object->lock to raw_spinlock_t
ALSA: scarlett2: Add retry on -EPROTO from scarlett2_usb_tx()
x86/fpu: Delay instruction pointer fixup until after warning
mm/hmm: move pmd_to_hmm_pfn_flags() to the respective #ifdeffery
nfsd: handle get_client_locked() failure in nfsd4_setclientid_confirm()
pmdomain: governor: Consider CPU latency tolerance from pm_domain_cpu_gov
tracing: Add down_write(trace_event_sem) when adding trace event
usb: hub: Don't try to recover devices lost during warm reset.
usb: hub: avoid warm port reset during USB3 disconnect
x86/mce/amd: Add default names for MCA banks and blocks
iio: hid-sensor-prox: Fix incorrect OFFSET calculation
f2fs: fix to do sanity check on ino and xnid
mm/zsmalloc: do not pass __GFP_MOVABLE if CONFIG_COMPACTION=n
mm/zsmalloc.c: convert to use kmem_cache_zalloc in cache_alloc_zspage()
drm/sched: Remove optimization that causes hang when killing dependent jobs
ice: Fix a null pointer dereference in ice_copy_and_init_pkg()
net: usbnet: Fix the wrong netif_carrier_on() call
net: usbnet: Avoid potential RCU stall on LINK_CHANGE event
PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports
ACPI: processor: idle: Check acpi_fetch_acpi_dev() return value
comedi: Fail COMEDI_INSNLIST ioctl if n_insns is too large
comedi: Fix initialization of data for instructions that write to subdevice
kbuild: Add KBUILD_CPPFLAGS to as-option invocation
kbuild: add $(CLANG_FLAGS) to KBUILD_CPPFLAGS
kbuild: Add CLANG_FLAGS to as-instr
mips: Include KBUILD_CPPFLAGS in CHECKFLAGS invocation
kbuild: Update assembler calls to use proper flags and language target
ARM: 9448/1: Use an absolute path to unified.h in KBUILD_AFLAGS
usb: dwc3: Ignore late xferNotReady event to prevent halt timeout
USB: storage: Ignore driver CD mode for Realtek multi-mode Wi-Fi dongles
usb: storage: realtek_cr: Use correct byte order for bcs->Residue
USB: storage: Add unusual-devs entry for Novatek NTK96550-based camera
usb: quirks: Add DELAY_INIT quick for another SanDisk 3.2Gen1 Flash Drive
iio: proximity: isl29501: fix buffered read on big-endian systems
ftrace: Also allocate and copy hash for reading of filter files
fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable()
use uniform permission checks for all mount propagation changes
move_mount: allow to add a mount into an existing group
fs/buffer: fix use-after-free when call bh_read() helper
drm/amd/display: Find first CRTC and its line time in dce110_fill_display_configs
drm/amd/display: Fix fractional fb divider in set_pixel_clock_v3
squashfs: fix memory leak in squashfs_fill_super
memstick: Fix deadlock by moving removing flag earlier
media: venus: Add a check for packet size after reading from shared memory
media: ov2659: Fix memory leaks in ov2659_probe()
media: usbtv: Lock resolution while streaming
media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init()
media: gspca: Add bounds checking to firmware parser
soc/tegra: pmc: Ensure power-domains are in a known state
jbd2: prevent softlockup in jbd2_log_do_checkpoint()
PCI: endpoint: Fix configfs group removal on driver teardown
PCI: endpoint: Fix configfs group list head handling
mtd: rawnand: fsmc: Add missing check after DMA map
pwm: imx-tpm: Reset counter if CMOD is 0
wifi: brcmsmac: Remove const from tbl_ptr parameter in wlc_lcnphy_common_read_table()
zynq_fpga: use sgtable-based scatterlist wrappers
ata: libata-scsi: Fix ata_to_sense_error() status handling
ext4: fix reserved gdt blocks handling in fsmap
ext4: fix fsmap end of range reporting with bigalloc
ext4: check fast symlink for ea_inode correctly
Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()"
vt: defkeymap: Map keycodes above 127 to K_HOLE
vt: keyboard: Don't process Unicode characters in K_OFF mode
usb: dwc3: meson-g12a: fix device leaks at unbind
usb: gadget: udc: renesas_usb3: fix device leak at unbind
usb: atm: cxacru: Merge cxacru_upload_firmware() into cxacru_heavy_init()
m68k: Fix lost column on framebuffer debug console
cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table()
serial: 8250: fix panic due to PSLVERR
media: uvcvideo: Do not mark valid metadata as invalid
media: uvcvideo: Fix 1-byte out-of-bounds read in uvc_parse_format()
mm/kmemleak: avoid soft lockup in __kmemleak_do_cleanup()
parisc: Makefile: fix a typo in palo.conf
btrfs: fix log tree replay failure due to file with 0 links and extents
thunderbolt: Fix copy+paste error in match_service_id()
comedi: fix race between polling and detaching
misc: rtsx: usb: Ensure mmc child device is active when card is present
drm/amdgpu: fix incorrect vm flags to map bo
scsi: lpfc: Remove redundant assignment to avoid memory leak
rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe
pNFS: Fix uninited ptr deref in block/scsi layout
pNFS: Handle RPC size limit for layoutcommits
pNFS: Fix disk addr range check in block/scsi layout
pNFS: Fix stripe mapping in block/scsi layout
net: phy: smsc: add proper reset flags for LAN8710A
ipmi: Fix strcpy source and destination the same
kconfig: lxdialog: fix 'space' to (de)select options
kconfig: gconf: fix potential memory leak in renderer_edited()
kconfig: gconf: avoid hardcoding model2 in on_treeview2_cursor_changed()
ipmi: Use dev_warn_ratelimited() for incorrect message warnings
scsi: aacraid: Stop using PCI_IRQ_AFFINITY
scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans
kconfig: nconf: Ensure null termination where strncpy is used
kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c
i3c: don't fail if GETHDRCAP is unsupported
PCI: pnv_php: Work around switches with broken presence detection
i3c: add missing include to internal header
media: uvcvideo: Fix bandwidth issue for Alcor camera
media: dvb-frontends: w7090p: fix null-ptr-deref in w7090p_tuner_write_serpar and w7090p_tuner_read_serpar
media: dvb-frontends: dib7090p: fix null-ptr-deref in dib7090p_rw_on_apb()
media: usb: hdpvr: disable zero-length read messages
media: tc358743: Increase FIFO trigger level to 374
media: tc358743: Return an appropriate colorspace from tc358743_set_fmt
media: tc358743: Check I2C succeeded during probe
pinctrl: stm32: Manage irq affinity settings
scsi: mpt3sas: Correctly handle ATA device errors
scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure
RDMA: hfi1: fix possible divide-by-zero in find_hw_thread_mask()
MIPS: Don't crash in stack_top() for tasks without ABI or vDSO
jfs: upper bound check of tree index in dbAllocAG
jfs: Regular file corruption check
jfs: truncate good inode pages when hard link is 0
scsi: bfa: Double-free fix
MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free}
watchdog: dw_wdt: Fix default timeout
fs/orangefs: use snprintf() instead of sprintf()
scsi: libiscsi: Initialize iscsi_conn->dd_data only if memory is allocated
ext4: do not BUG when INLINE_DATA_FL lacks system.data xattr
cifs: Fix calling CIFSFindFirst() for root path without msearch
vhost: fail early when __vhost_add_used() fails
net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
uapi: in6: restore visibility of most IPv6 socket options
net: ncsi: Fix buffer overflow in fetching version id
net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs
wifi: iwlegacy: Check rate_idx range after addition
netmem: fix skb_frag_address_safe with unreadable skbs
wifi: rtlwifi: fix possible skb memory leak in `_rtl_pci_rx_interrupt()`.
wifi: iwlwifi: fw: Fix possible memory leak in iwl_fw_dbg_collect
wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd()
net: fec: allow disable coalescing
(powerpc/512) Fix possible `dma_unmap_single()` on uninitialized pointer
s390/stp: Remove udelay from stp_sync_clock()
wifi: iwlwifi: mvm: fix scan request validation
net: thunderx: Fix format-truncation warning in bgx_acpi_match_id()
net: ipv4: fix incorrect MTU in broadcast routes
wifi: cfg80211: Fix interface type validation
rcu: Protect ->defer_qs_iw_pending from data race
net: ag71xx: Add missing check after DMA map
et131x: Add missing check after DMA map
be2net: Use correct byte order and format string for TCP seq and ack_seq
s390/time: Use monotonic clock in get_cycles()
wifi: cfg80211: reject HTC bit for management frames
ktest.pl: Prevent recursion of default variable options
ASoC: codecs: rt5640: Retry DEVICE_ID verification
ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros
ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control
platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches
pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()
usb: core: usb_submit_urb: downgrade type check
ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4
ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode()
ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path
ACPI: processor: fix acpi_object initialization
PM: sleep: console: Fix the black screen issue
thermal: sysfs: Return ENODATA instead of EAGAIN for reads
PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()
selftests: tracing: Use mutex_unlock for testing glob filter
ARM: tegra: Use I/O memcpy to write to IRAM
gpio: tps65912: check the return value of regmap_update_bits()
ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed
ARM: rockchip: fix kernel hang during smp initialization
cpufreq: Exit governor when failed to start old governor
usb: xhci: Avoid showing errors during surprise removal
usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command
usb: xhci: Avoid showing warnings for dying controller
selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t
usb: xhci: print xhci->xhc_state when queue_command failed
securityfs: don't pin dentries twice, once is enough...
hfs: fix not erasing deleted b-tree node issue
drbd: add missing kref_get in handle_write_conflicts
udf: Verify partition map count
arm64: Handle KCOV __init vs inline mismatches
hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file()
hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()
hfsplus: fix slab-out-of-bounds in hfsplus_bnode_read()
hfs: fix slab-out-of-bounds in hfs_bnode_read()
sctp: linearize cloned gso packets in sctp_rcv
netfilter: ctnetlink: fix refcount leak on table dump
udp: also consider secpath when evaluating ipsec use for checksumming
ACPI: processor: perflib: Move problematic pr->performance check
ACPI: processor: perflib: Fix initial _PPC limit application
Documentation: ACPI: Fix parent device references
fs: Prevent file descriptor table allocations exceeding INT_MAX
sunvdc: Balance device refcount in vdc_port_mpgroup_check
NFSD: detect mismatch of file handle and delegation stateid in OPEN op
net: dpaa: fix device leak when querying time stamp info
net: gianfar: fix device leak when querying time stamp info
netlink: avoid infinite retry looping in netlink_unicast()
ALSA: usb-audio: Validate UAC3 cluster segment descriptors
ALSA: usb-audio: Validate UAC3 power domain descriptors, too
io_uring: don't use int for ABI
usb: gadget : fix use-after-free in composite_dev_cleanup()
MIPS: mm: tlb-r4k: Uniquify TLB entries on init
USB: serial: option: add Foxconn T99W709
vsock: Do not allow binding to VMADDR_PORT_ANY
net/packet: fix a race in packet_set_ring() and packet_notifier()
perf/core: Prevent VMA split of buffer mappings
perf/core: Exit early on perf_mmap() fail
perf/core: Don't leak AUX buffer refcount on allocation failure
pptp: fix pptp_xmit() error path
smb: client: let recv_done() cleanup before notifying the callers.
benet: fix BUG when creating VFs
net: drop UFO packets in udp_rcv_segment()
ipv6: reject malicious packets in ipv6_gso_segment()
pptp: ensure minimal skb length in pptp_xmit()
netpoll: prevent hanging NAPI when netcons gets enabled
NFS: Fix filehandle bounds checking in nfs_fh_to_dentry()
pci/hotplug/pnv-php: Wrap warnings in macro
pci/hotplug/pnv-php: Improve error msg on power state change failure
usb: chipidea: udc: fix sleeping function called from invalid context
f2fs: fix to avoid out-of-boundary access in devs.path
f2fs: fix to avoid panic in f2fs_evict_inode
f2fs: fix to avoid UAF in f2fs_sync_inode_meta()
rtc: pcf8563: fix incorrect maximum clock rate handling
rtc: hym8563: fix incorrect maximum clock rate handling
rtc: ds1307: fix incorrect maximum clock rate handling
module: Restore the moduleparam prefix length check
bpf: Check flow_dissector ctx accesses are aligned
mtd: rawnand: atmel: set pmecc data setup time
mtd: rawnand: atmel: Fix dma_mapping_error() address
jfs: fix metapage reference count leak in dbAllocCtl
fbdev: imxfb: Check fb_add_videomode to prevent null-ptr-deref
crypto: qat - fix seq_file position update in adf_ring_next()
dmaengine: nbpfaxi: Add missing check after DMA map
dmaengine: mv_xor: Fix missing check after DMA map and missing unmap
fs/orangefs: Allow 2 more characters in do_c_string()
soundwire: stream: restore params when prepare ports fail
crypto: img-hash - Fix dma_unmap_sg() nents value
hwrng: mtk - handle devm_pm_runtime_enable errors
watchdog: ziirave_wdt: check record length in ziirave_firm_verify()
scsi: isci: Fix dma_unmap_sg() nents value
scsi: mvsas: Fix dma_unmap_sg() nents value
scsi: ibmvscsi_tgt: Fix dma_unmap_sg() nents value
clk: sunxi-ng: v3s: Fix de clock definition
perf tests bp_account: Fix leaked file descriptor
crypto: ccp - Fix crash when rebind ccp device for ccp.ko
pinctrl: sunxi: Fix memory leak on krealloc failure
power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set
clk: davinci: Add NULL check in davinci_lpsc_clk_register()
mtd: fix possible integer overflow in erase_xfer()
crypto: marvell/cesa - Fix engine load inaccuracy
PCI: rockchip-host: Fix "Unexpected Completion" log message
vrf: Drop existing dst reference in vrf_ip6_input_dst
selftests: rtnetlink.sh: remove esp4_offload after test
netfilter: xt_nfacct: don't assume acct name is null-terminated
can: kvaser_usb: Assign netdev.dev_port based on device channel index
can: kvaser_pciefd: Store device channel index
wifi: brcmfmac: fix P2P discovery failure in P2P peer due to missing P2P IE
Reapply "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()"
mwl8k: Add missing check after DMA map
wifi: rtl8xxxu: Fix RX skb size for aggregation disabled
net/sched: Restrict conditions for adding duplicating netems to qdisc tree
arch: powerpc: defconfig: Drop obsolete CONFIG_NET_CLS_TCINDEX
netfilter: nf_tables: adjust lockdep assertions handling
drm/amd/pm/powerplay/hwmgr/smu_helper: fix order of mask and value
m68k: Don't unregister boot console needlessly
tcp: fix tcp_ofo_queue() to avoid including too much DUP SACK range
iwlwifi: Add missing check for alloc_ordered_workqueue
wifi: iwlwifi: Fix memory leak in iwl_mvm_init()
wifi: rtl818x: Kill URBs before clearing tx status queue
caif: reduce stack size, again
bpftool: Fix memory leak in dump_xx_nlmsg on realloc failure
bpf, ktls: Fix data corruption when using bpf_msg_pop_data() in ktls
staging: nvec: Fix incorrect null termination of battery manufacturer
samples: mei: Fix building on musl libc
cpufreq: Init policy->rwsem before it may be possibly used
ARM: dts: imx6ul-kontron-bl-common: Fix RTS polarity for RS485 interface
usb: early: xhci-dbc: Fix early_ioremap leak
Revert "vmci: Prevent the dispatching of uninitialized payloads"
pps: fix poll support
vmci: Prevent the dispatching of uninitialized payloads
staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()
ARM: dts: vfxxx: Correctly use two tuples for timer address
ASoC: ops: dynamically allocate struct snd_ctl_elem_value
hfsplus: remove mutex_lock check in hfsplus_free_extents
ASoC: Intel: fix SND_SOC_SOF dependencies
ethernet: intel: fix building with large NR_CPUS
usb: phy: mxs: disconnect line when USB charger is attached
usb: chipidea: add USB PHY event
usb: chipidea: introduce CI_HDRC_CONTROLLER_VBUS_EVENT glue layer use
usb: chipidea: udc: protect usb interrupt enable
usb: chipidea: udc: add new API ci_hdrc_gadget_connect
ALSA: hda: Add missing NVIDIA HDA codec IDs
comedi: comedi_test: Fix possible deletion of uninitialized timers
nilfs2: reject invalid file types when reading inodes
i2c: qup: jump out of the loop in case of timeout
net/sched: sch_qfq: Avoid triggering might_sleep in atomic context in qfq_delete_class
net: appletalk: Fix use-after-free in AARP proxy probe
net: appletalk: fix kerneldoc warnings
RDMA/core: Rate limit GID cache warning messages
regulator: core: fix NULL dereference on unbind due to stale coupling data
usb: hub: Fix flushing and scheduling of delayed work that tunes runtime pm
usb: hub: fix detection of high tier USB3 devices behind suspended hubs
net_sched: sch_sfq: reject invalid perturb period
net_sched: sch_sfq: move the limit validation
net_sched: sch_sfq: use a temporary work area for validating configuration
net_sched: sch_sfq: don't allow 1 packet limit
net_sched: sch_sfq: handle bigger packets
net_sched: sch_sfq: annotate data-races around q->perturb_period
power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition
power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
power: supply: bq24190_charger: Fix runtime PM imbalance on error
xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
virtio-net: ensure the received length does not exceed allocated size
ASoC: fsl_sai: Force a software reset when starting in consumer mode
usb: dwc3: qcom: Don't leave BCR asserted
usb: musb: fix gadget state on disconnect
net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree
net: vlan: fix VLAN 0 refcount imbalance of toggling filtering during runtime
Bluetooth: L2CAP: Fix attempting to adjust outgoing MTU
Bluetooth: SMP: Fix using HCI_ERROR_REMOTE_USER_TERM on timeout
Bluetooth: SMP: If an unallowed command is received consider it a failure
Bluetooth: Fix null-ptr-deref in l2cap_sock_resume_cb()
usb: net: sierra: check for no status endpoint
net/sched: sch_qfq: Fix race condition on qfq_aggregate
net: emaclite: Fix missing pointer increment in aligned_read()
comedi: Fix use of uninitialized data in insn_rw_emulate_bits()
comedi: Fix some signed shift left operations
comedi: das6402: Fix bit shift out of bounds
comedi: das16m1: Fix bit shift out of bounds
comedi: aio_iiro_16: Fix bit shift out of bounds
comedi: pcl812: Fix bit shift out of bounds
iio: adc: stm32-adc: Fix race in installing chained IRQ handler
iio: adc: max1363: Reorder mode_list[] entries
iio: adc: max1363: Fix MAX1363_4X_CHANS/MAX1363_8X_CHANS[]
soc: aspeed: lpc-snoop: Don't disable channels that aren't enabled
soc: aspeed: lpc-snoop: Cleanup resources in stack-order
mmc: sdhci_am654: Workaround for Errata i2312
mmc: sdhci-pci: Quirk for broken command queuing on Intel GLK-based Positivo models
mmc: bcm2835: Fix dma_unmap_sg() nents value
memstick: core: Zero initialize id_reg in h_memstick_read_dev_id()
isofs: Verify inode mode when loading from disk
dmaengine: nbpfaxi: Fix memory corruption in probe()
af_packet: fix soft lockup issue caused by tpacket_snd()
af_packet: fix the SO_SNDTIMEO constraint not effective on tpacked_snd()
phonet/pep: Move call to pn_skb_get_dst_sockaddr() earlier in pep_sock_accept()
HID: core: do not bypass hid_hw_raw_request
HID: core: ensure __hid_request reserves the report ID as the first byte
HID: core: ensure the allocated report buffer can contain the reserved report ID
pch_uart: Fix dma_sync_sg_for_device() nents value
Input: xpad - set correct controller type for Acer NGR200
i2c: stm32: fix the device used for the DMA map
usb: gadget: configfs: Fix OOB read on empty string write
USB: serial: ftdi_sio: add support for NDI EMGUIDE GEMINI
USB: serial: option: add Foxconn T99W640
USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
ANDROID: 16K: Allocate pad vma on the stack
ANDROID: 16K: Don't copy data vma for maps/smaps output
ANDROID: GKI: update Trimble symbol list
UPSTREAM: net/sched: Always pass notifications when child class becomes empty
Revert "drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling"
Linux 5.4.296
net: ipv6: Discard next-hop MTU less than minimum link MTU
x86/mm: Disable hugetlb page table sharing on 32-bit
Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
vt: add missing notification when switching back to text mode
net: usb: qmi_wwan: add SIMCom 8230C composition
atm: idt77252: Add missing `dma_map_error()`
bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT
bnxt_en: Fix DCB ETS validation
can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level
net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
net: appletalk: Fix device refcount leak in atrtr_create()
md/raid1: Fix stack memory use after return in raid1_reshape
wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()
dma-buf: fix timeout handling in dma_resv_wait_timeout v2
Input: xpad - support Acer NGR 200 Controller
Input: xpad - add VID for Turtle Beach controllers
Input: xpad - add support for Amazon Game Controller
NFSv4/flexfiles: Fix handling of NFS level errors in I/O
flexfiles/pNFS: update stats on NFS4ERR_DELAY for v4.1 DSes
RDMA/mlx5: Fix vport loopback for MPV device
netlink: Fix rmem check in netlink_broadcast_deliver().
netlink: make sure we allow at least one dump skb
pwm: mediatek: Ensure to disable clocks in error path
Revert "ACPI: battery: negate current when discharging"
usb: gadget: u_serial: Fix race condition in TTY wakeup
drm/sched: Increment job count before swapping tail spsc queue
pinctrl: qcom: msm: mark certain pins as invalid for interrupts
x86/mce: Make sure CMCI banks are cleared during shutdown on Intel
x86/mce: Don't remove sysfs if thresholding sysfs init fails
x86/mce/amd: Fix threshold limit reset
rxrpc: Fix oops due to non-existence of prealloc backlog struct
net/sched: Abort __tc_modify_qdisc if parent class does not exist
atm: clip: Fix NULL pointer dereference in vcc_sendmsg()
atm: clip: Fix infinite recursive call of clip_push().
atm: clip: Fix memory leak of struct clip_vcc.
atm: clip: Fix potential null-ptr-deref in to_atmarpd().
tipc: Fix use-after-free in tipc_conn_close().
netlink: Fix wraparounds of sk->sk_rmem_alloc.
fix proc_sys_compare() handling of in-lookup dentries
proc: Clear the pieces of proc_inode that proc_evict_inode cares about
drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling
staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher()
media: uvcvideo: Rollback non processed entities on error
media: uvcvideo: Send control events for partial succeeds
media: uvcvideo: Return the number of processed controls
ACPI: PAD: fix crash in exit_round_robin()
usb: typec: displayport: Fix potential deadlock
Logitech C-270 even more broken
rose: fix dangling neighbour pointers in rose_rt_device_down()
net: rose: Fix fall-through warnings for Clang
drm/i915/gt: Fix timeline left held on VMA alloc error
drm/i915/selftests: Change mock_request() to return error pointers
spi: spi-fsl-dspi: Clear completion counter before initiating transfer
spi: spi-fsl-dspi: Fix interrupt-less DMA mode taking an XSPI code path
spi: spi-fsl-dspi: Rename fifo_{read,write} and {tx,cmd}_fifo_write
dpaa2-eth: fix xdp_rxq_info leak
ethernet: atl1: Add missing DMA mapping error checks and count errors
btrfs: use btrfs_record_snapshot_destroy() during rmdir
btrfs: propagate last_unlink_trans earlier when doing a rmdir
RDMA/mlx5: Fix CC counters query for MPV
RDMA/core: Create and destroy counters in the ib_core
scsi: ufs: core: Fix spelling of a sysfs attribute name
drm/v3d: Disable interrupts before resetting the GPU
mtk-sd: reset host->mrq on prepare_data() error
mtk-sd: Prevent memory corruption from DMA map failure
mmc: mediatek: use data instead of mrq parameter from msdc_{un}prepare_data()
regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods
regulator: gpio: Add input_supply support in gpio_regulator_config
ACPICA: Refuse to evaluate a method if arguments are missing
wifi: ath6kl: remove WARN on bad firmware input
wifi: mac80211: drop invalid source address OCB frames
powerpc: Fix struct termio related ioctl macros
ata: pata_cs5536: fix build on 32-bit UML
ALSA: sb: Force to disable DMAs once when DMA mode is changed
net/sched: Always pass notifications when child class becomes empty
nui: Fix dma_mapping_error() check
enic: fix incorrect MTU comparison in enic_change_mtu()
amd-xgbe: align CL37 AN sequence as per databook
lib: test_objagg: Set error message in check_expect_hints_stats()
drm/exynos: fimd: Guard display clock control with runtime PM calls
btrfs: fix missing error handling when searching for inode refs during log replay
scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu()
nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails.
RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert
platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment
mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data
usb: typec: altmodes/displayport: do not index invalid pin_assignments
Revert "mmc: sdhci: Disable SD card clock before changing parameters"
mmc: sdhci: Add a helper function for dump register in dynamic debug mode
vsock/vmci: Clear the vmci transport packet properly when initializing it
btrfs: don't abort filesystem when attempting to snapshot deleted subvolume
arm64: Restrict pagetable teardown to avoid false warning
s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
drm/bridge: cdns-dsi: Check return value when getting default PHY config
drm/bridge: cdns-dsi: Fix connecting to next bridge
drm/bridge: cdns-dsi: Fix the clock variable for mode_valid()
drm/tegra: Assign plane type before registration
HID: wacom: fix kobject reference count leak
HID: wacom: fix memory leak on sysfs attribute creation failure
HID: wacom: fix memory leak on kobject creation failure
dm-raid: fix variable in journal device check
Bluetooth: L2CAP: Fix L2CAP MTU negotiation
atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister().
net: enetc: Correct endianness handling in _enetc_rd_reg64
um: ubd: Add missing error check in start_io_thread()
vsock/uapi: fix linux/vm_sockets.h userspace compilation errors
wifi: mac80211: fix beacon interval calculation overflow
attach_recursive_mnt(): do not lock the covering tree when sliding something under it
ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()
i2c: robotfuzz-osif: disable zero-length read messages
i2c: tiny-usb: disable zero-length read messages
RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction
RDMA/core: Use refcount_t instead of atomic_t on refcount of iwcm_id_private
media: vivid: Change the siize of the composing
media: omap3isp: use sgtable-based scatterlist wrappers
media: cxusb: no longer judge rbuf when the write fails
media: cxusb: use dev_dbg() rather than hand-rolled debug
jfs: validate AG parameters in dbMount() to prevent crashes
fs/jfs: consolidate sanity checking in dbMount
ASoC: meson: meson-card-utils: use of_property_present() for DT parsing
of: Add of_property_present() helper
of: property: define of_property_read_u{8,16,32,64}_array() unconditionally
kbuild: hdrcheck: fix cross build with clang
kbuild: add --target to correctly cross-compile UAPI headers with Clang
bpfilter: match bit size of bpfilter_umh to that of the kernel
kbuild: use -MMD instead of -MD to exclude system headers from dependency
VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify
VMCI: check context->notify_page after call to get_user_pages_fast() to avoid GPF
ovl: Check for NULL d_inode() in ovl_dentry_upper()
ceph: fix possible integer overflow in ceph_zero_objects()
ALSA: hda: Ignore unsol events for cards being shut down
usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode
usb: cdc-wdm: avoid setting WDM_READ for ZLP-s
usb: Add checks for snprintf() calls in usb_alloc_dev()
tty: serial: uartlite: register uart driver in init
usb: potential integer overflow in usbg_make_tpg()
iio: pressure: zpa2326: Use aligned_s64 for the timestamp
md/md-bitmap: fix dm-raid max_write_behind setting
dmaengine: xilinx_dma: Set dma_device directions
mfd: max14577: Fix wakeup source leaks on device unbind
mailbox: Not protect module_put with spin_lock_irqsave
cifs: Fix cifs_query_path_info() for Windows NT servers
Change-Id: Iab323692f4cd5b0f16e981f8f4c1fbcdc4458aa5
Signed-off-by: kamasali Satyanarayan <kamasali@qti.qualcomm.com>
|
||
|
|
2eb0f824a1 |
Merge remote-tracking branch 'sm8350/lineage-20' into lineage-23.0
* sm8350/lineage-20: (841 commits)
UPSTREAM: fs: prevent out-of-bounds array speculation when closing a file descriptor
UPSTREAM: file: let pick_file() tell caller it's done
BACKPORT: rcu-tasks: Add a grace-period start time for throttling and debug
BACKPORT: maccess: rename probe_user_{read,write} to copy_{from,to}_user_nofault
BACKPORT: powerpc: use probe_user_read() and probe_user_write()
BACKPORT: maccess: rename probe_kernel_address to get_kernel_nofault
BACKPORT: tracing/kprobes: handle mixed kernel/userspace probes better
BACKPORT: maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault
UPSTREAM: maccess: unexport probe_kernel_write()
UPSTREAM: maccess: return -ERANGE when probe_kernel_read() fails
UPSTREAM: maccess: allow architectures to provide kernel probing directly
BACKPORT: maccess: remove strncpy_from_unsafe
UPSTREAM: bpf:bpf_seq_printf(): handle potentially unsafe format string better
UPSTREAM: bpf: Use strncpy_from_unsafe_strict() in bpf_seq_printf() helper
UPSTREAM: bpf: handle the compat string in bpf_trace_copy_string better
UPSTREAM: bpf: factor out a bpf_trace_copy_string helper
BACKPORT: maccess: always use strict semantics for probe_kernel_read
UPSTREAM: maccess: unify the probe kernel arch hooks
UPSTREAM: maccess: remove probe_read_common and probe_write_common
UPSTREAM: maccess: remove duplicate kerneldoc comments
...
Change-Id: I22cf7d6fb34826727904effb4f012b0ef459149d
|
||
|
|
c4ad7ea865 |
UPSTREAM: bpf: Add crosstask check to __bpf_get_stack
[ Upstream commit b8e3a87a627b575896e448021e5c2f8a3bc19931 ]
Currently get_perf_callchain only supports user stack walking for
the current task. Passing the correct *crosstask* param will return
0 frames if the task passed to __bpf_get_stack isn't the current
one instead of a single incorrect frame/address. This change
passes the correct *crosstask* param but also does a preemptive
check in __bpf_get_stack if the task is current and returns
-EOPNOTSUPP if it is not.
This issue was found using bpf_get_task_stack inside a BPF
iterator ("iter/task"), which iterates over all tasks.
bpf_get_task_stack works fine for fetching kernel stacks
but because get_perf_callchain relies on the caller to know
if the requested *task* is the current one (via *crosstask*)
it was failing in a confusing way.
It might be possible to get user stacks for all tasks utilizing
something like access_process_vm but that requires the bpf
program calling bpf_get_task_stack to be sleepable and would
therefore be a breaking change.
Fixes: fa28dcb82a38 ("bpf: Introduce helper bpf_get_task_stack()")
Change-Id: Iaa6f27e00ab50185bccc53971bb07671f8b9ba5c
Signed-off-by: Jordan Rome <jordalgo@meta.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20231108112334.3433136-1-jordalgo@meta.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||
|
|
20126c8878 |
UPSTREAM: bpf: Adjust BPF stack helper functions to accommodate skip > 0
commit ee2a098851bfbe8bcdd964c0121f4246f00ff41e upstream.
Let's say that the caller has storage for num_elem stack frames. Then,
the BPF stack helper functions walk the stack for only num_elem frames.
This means that if skip > 0, one keeps only 'num_elem - skip' frames.
This is because it sets init_nr in the perf_callchain_entry to the end
of the buffer to save num_elem entries only. I believe it was because
the perf callchain code unwound the stack frames until it reached the
global max size (sysctl_perf_event_max_stack).
However it now has perf_callchain_entry_ctx.max_stack to limit the
iteration locally. This simplifies the code to handle init_nr in the
BPF callstack entries and removes the confusion with the perf_event's
__PERF_SAMPLE_CALLCHAIN_EARLY which sets init_nr to 0.
Also change the comment on bpf_get_stack() in the header file to be
more explicit what the return value means.
Fixes:
|
||
|
|
a9571b7d83 |
UPSTREAM: bpf: Fix enum names for bpf_this_cpu_ptr() and bpf_per_cpu_ptr() helpers
Remove bpf_ prefix, which causes these helpers to be reported in verifier
dump as bpf_bpf_this_cpu_ptr() and bpf_bpf_per_cpu_ptr(), respectively. Lets
fix it as long as it is still possible before UAPI freezes on these helpers.
Fixes: eaa6bcb71ef6 ("bpf: Introduce bpf_per_cpu_ptr()")
Change-Id: Ida63849312eec819f6303bacd0e36328a4c37a6e
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||
|
|
39a4763712 |
UPSTREAM: bpf: Fix bpf_redirect_neigh helper api to support supplying nexthop
Based on the discussion in [0], update the bpf_redirect_neigh() helper to accept an optional parameter specifying the nexthop information. This makes it possible to combine bpf_fib_lookup() and bpf_redirect_neigh() without incurring a duplicate FIB lookup - since the FIB lookup helper will return the nexthop information even if no neighbour is present, this can simply be passed on to bpf_redirect_neigh() if bpf_fib_lookup() returns BPF_FIB_LKUP_RET_NO_NEIGH. Thus fix & extend it before helper API is frozen. [0] https://lore.kernel.org/bpf/393e17fc-d187-3a8d-2f0d-a627c7c63fca@iogearbox.net/ Change-Id: I9125e1738abc703d49ebe59ed9f976c9343334aa Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/bpf/160322915615.32199.1187570224032024535.stgit@toke.dk |
||
|
|
770a93776c |
UPSTREAM: bpf: Allow for map-in-map with dynamic inner array map entries
Recent work in f4d05259213f ("bpf: Add map_meta_equal map ops") and 134fede4eecf
("bpf: Relax max_entries check for most of the inner map types") added support
for dynamic inner max elements for most map-in-map types. Exceptions were maps
like array or prog array where the map_gen_lookup() callback uses the maps'
max_entries field as a constant when emitting instructions.
We recently implemented Maglev consistent hashing into Cilium's load balancer
which uses map-in-map with an outer map being hash and inner being array holding
the Maglev backend table for each service. This has been designed this way in
order to reduce overall memory consumption given the outer hash map allows to
avoid preallocating a large, flat memory area for all services. Also, the
number of service mappings is not always known a-priori.
The use case for dynamic inner array map entries is to further reduce memory
overhead, for example, some services might just have a small number of back
ends while others could have a large number. Right now the Maglev backend table
for small and large number of backends would need to have the same inner array
map entries which adds a lot of unneeded overhead.
Dynamic inner array map entries can be realized by avoiding the inlined code
generation for their lookup. The lookup will still be efficient since it will
be calling into array_map_lookup_elem() directly and thus avoiding retpoline.
The patch adds a BPF_F_INNER_MAP flag to map creation which therefore skips
inline code generation and relaxes array_map_meta_equal() check to ignore both
maps' max_entries. This also still allows to have faster lookups for map-in-map
when BPF_F_INNER_MAP is not specified and hence dynamic max_entries not needed.
Example code generation where inner map is dynamic sized array:
# bpftool p d x i 125
int handle__sys_enter(void * ctx):
; int handle__sys_enter(void *ctx)
0: (b4) w1 = 0
; int key = 0;
1: (63) *(u32 *)(r10 -4) = r1
2: (bf) r2 = r10
;
3: (07) r2 += -4
; inner_map = bpf_map_lookup_elem(&outer_arr_dyn, &key);
4: (18) r1 = map[id:468]
6: (07) r1 += 272
7: (61) r0 = *(u32 *)(r2 +0)
8: (35) if r0 >= 0x3 goto pc+5
9: (67) r0 <<= 3
10: (0f) r0 += r1
11: (79) r0 = *(u64 *)(r0 +0)
12: (15) if r0 == 0x0 goto pc+1
13: (05) goto pc+1
14: (b7) r0 = 0
15: (b4) w6 = -1
; if (!inner_map)
16: (15) if r0 == 0x0 goto pc+6
17: (bf) r2 = r10
;
18: (07) r2 += -4
; val = bpf_map_lookup_elem(inner_map, &key);
19: (bf) r1 = r0 | No inlining but instead
20: (85) call array_map_lookup_elem#149280 | call to array_map_lookup_elem()
; return val ? *val : -1; | for inner array lookup.
21: (15) if r0 == 0x0 goto pc+1
; return val ? *val : -1;
22: (61) r6 = *(u32 *)(r0 +0)
; }
23: (bc) w0 = w6
24: (95) exit
Change-Id: I808f50ea72c452cee8fa74473101e2a900b9c836
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20201010234006.7075-4-daniel@iogearbox.net
|
||
|
|
258db876c3 |
BACKPORT: bpf: Add redirect_peer helper
Add an efficient ingress to ingress netns switch that can be used out of tc BPF
programs in order to redirect traffic from host ns ingress into a container
veth device ingress without having to go via CPU backlog queue [0]. For local
containers this can also be utilized and path via CPU backlog queue only needs
to be taken once, not twice. On a high level this borrows from ipvlan which does
similar switch in __netif_receive_skb_core() and then iterates via another_round.
This helps to reduce latency for mentioned use cases.
Pod to remote pod with redirect(), TCP_RR [1]:
# percpu_netperf 10.217.1.33
RT_LATENCY: 122.450 (per CPU: 122.666 122.401 122.333 122.401 )
MEAN_LATENCY: 121.210 (per CPU: 121.100 121.260 121.320 121.160 )
STDDEV_LATENCY: 120.040 (per CPU: 119.420 119.910 125.460 115.370 )
MIN_LATENCY: 46.500 (per CPU: 47.000 47.000 47.000 45.000 )
P50_LATENCY: 118.500 (per CPU: 118.000 119.000 118.000 119.000 )
P90_LATENCY: 127.500 (per CPU: 127.000 128.000 127.000 128.000 )
P99_LATENCY: 130.750 (per CPU: 131.000 131.000 129.000 132.000 )
TRANSACTION_RATE: 32666.400 (per CPU: 8152.200 8169.842 8174.439 8169.897 )
Pod to remote pod with redirect_peer(), TCP_RR:
# percpu_netperf 10.217.1.33
RT_LATENCY: 44.449 (per CPU: 43.767 43.127 45.279 45.622 )
MEAN_LATENCY: 45.065 (per CPU: 44.030 45.530 45.190 45.510 )
STDDEV_LATENCY: 84.823 (per CPU: 66.770 97.290 84.380 90.850 )
MIN_LATENCY: 33.500 (per CPU: 33.000 33.000 34.000 34.000 )
P50_LATENCY: 43.250 (per CPU: 43.000 43.000 43.000 44.000 )
P90_LATENCY: 46.750 (per CPU: 46.000 47.000 47.000 47.000 )
P99_LATENCY: 52.750 (per CPU: 51.000 54.000 53.000 53.000 )
TRANSACTION_RATE: 90039.500 (per CPU: 22848.186 23187.089 22085.077 21919.130 )
[0] https://linuxplumbersconf.org/event/7/contributions/674/attachments/568/1002/plumbers_2020_cilium_load_balancer.pdf
[1] https://github.com/borkmann/netperf_scripts/blob/master/percpu_netperf
Change-Id: I3dab8ed0c484fb100e1c52782c3192be835d5c98
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20201010234006.7075-3-daniel@iogearbox.net
|
||
|
|
8f18c4064c |
UPSTREAM: bpf: Improve bpf_redirect_neigh helper description
Follow-up to address David's feedback that we should better describe internals of the bpf_redirect_neigh() helper. Suggested-by: David Ahern <dsahern@gmail.com> Change-Id: I2d53fb1cdc44fdd744da748726721c2f8519cdb3 Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Reviewed-by: David Ahern <dsahern@gmail.com> Link: https://lore.kernel.org/bpf/20201010234006.7075-2-daniel@iogearbox.net |
||
|
|
f82f8a66a5 |
BACKPORT: bpf: Add tcp_notsent_lowat bpf setsockopt
Adding support for TCP_NOTSENT_LOWAT sockoption (https://lwn.net/Articles/560082/) in tcp bpf programs. Change-Id: Ib5d40f3a5c3b1ba7e0c6f40ca74754a89ba2966e Signed-off-by: Nikita V. Shirokov <tehnerd@tehnerd.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20201009070325.226855-1-tehnerd@tehnerd.com |
||
|
|
c7890557e6 |
UPSTREAM: bpf: Fix typo in uapi/linux/bpf.h
Reported-by: Samanta Navarro <ferivoz@riseup.net> Change-Id: Id258cd74240ca542b4929c2d0c4ea0649237d249 Signed-off-by: Jakub Wilk <jwilk@jwilk.net> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20201007055717.7319-1-jwilk@jwilk.net |
||
|
|
ca55a79f0d |
UPSTREAM: bpf: Introducte bpf_this_cpu_ptr()
Add bpf_this_cpu_ptr() to help access percpu var on this cpu. This helper always returns a valid pointer, therefore no need to check returned value for NULL. Also note that all programs run with preemption disabled, which means that the returned pointer is stable during all the execution of the program. Change-Id: I5a21c27796380af29fecd9f5650946e7477a1c30 Signed-off-by: Hao Luo <haoluo@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200929235049.2533242-6-haoluo@google.com |
||
|
|
29362dca65 |
UPSTREAM: bpf: Introduce bpf_per_cpu_ptr()
Add bpf_per_cpu_ptr() to help bpf programs access percpu vars. bpf_per_cpu_ptr() has the same semantic as per_cpu_ptr() in the kernel except that it may return NULL. This happens when the cpu parameter is out of range. So the caller must check the returned value. Change-Id: I8d552a56b8e6eb80a12fb89e384deb21686cb976 Signed-off-by: Hao Luo <haoluo@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200929235049.2533242-5-haoluo@google.com |
||
|
|
ee7fd4a104 |
UPSTREAM: bpf: Introduce pseudo_btf_id
Pseudo_btf_id is a type of ld_imm insn that associates a btf_id to a ksym so that further dereferences on the ksym can use the BTF info to validate accesses. Internally, when seeing a pseudo_btf_id ld insn, the verifier reads the btf_id stored in the insn[0]'s imm field and marks the dst_reg as PTR_TO_BTF_ID. The btf_id points to a VAR_KIND, which is encoded in btf_vminux by pahole. If the VAR is not of a struct type, the dst reg will be marked as PTR_TO_MEM instead of PTR_TO_BTF_ID and the mem_size is resolved to the size of the VAR's type. >From the VAR btf_id, the verifier can also read the address of the ksym's corresponding kernel var from kallsyms and use that to fill dst_reg. Therefore, the proper functionality of pseudo_btf_id depends on (1) kallsyms and (2) the encoding of kernel global VARs in pahole, which should be available since pahole v1.18. Change-Id: I26d351c1c02f1f090178c1c5f7532152883edc05 Signed-off-by: Hao Luo <haoluo@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200929235049.2533242-2-haoluo@google.com |
||
|
|
de2ea87c6b |
UPSTREAM: bpf: Introduce BPF_F_PRESERVE_ELEMS for perf event array
Currently, perf event in perf event array is removed from the array when the map fd used to add the event is closed. This behavior makes it difficult to the share perf events with perf event array. Introduce perf event map that keeps the perf event open with a new flag BPF_F_PRESERVE_ELEMS. With this flag set, perf events in the array are not removed when the original map fd is closed. Instead, the perf event will stay in the map until 1) it is explicitly removed from the array; or 2) the array is freed. Change-Id: I56f89d58a60a0d7a2d377916f0e80c99abc0a73c Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200930224927.1936644-2-songliubraving@fb.com |
||
|
|
7a4773fba0 |
UPSTREAM: bpf: Add redirect_neigh helper as redirect drop-in
Add a redirect_neigh() helper as redirect() drop-in replacement
for the xmit side. Main idea for the helper is to be very similar
in semantics to the latter just that the skb gets injected into
the neighboring subsystem in order to let the stack do the work
it knows best anyway to populate the L2 addresses of the packet
and then hand over to dev_queue_xmit() as redirect() does.
This solves two bigger items: i) skbs don't need to go up to the
stack on the host facing veth ingress side for traffic egressing
the container to achieve the same for populating L2 which also
has the huge advantage that ii) the skb->sk won't get orphaned in
ip_rcv_core() when entering the IP routing layer on the host stack.
Given that skb->sk neither gets orphaned when crossing the netns
as per
|
||
|
|
b9b87cb0e6 |
UPSTREAM: bpf: Add classid helper only based on skb->sk
Similarly to 5a52ae4e32a6 ("bpf: Allow to retrieve cgroup v1 classid
from v2 hooks"), add a helper to retrieve cgroup v1 classid solely
based on the skb->sk, so it can be used as key as part of BPF map
lookups out of tc from host ns, in particular given the skb->sk is
retained these days when crossing net ns thanks to
|
||
|
|
d8d055a51a |
BACKPORT: bpf: Support attaching freplace programs to multiple attach points
This enables support for attaching freplace programs to multiple attach points. It does this by amending the UAPI for bpf_link_Create with a target btf ID that can be used to supply the new attachment point along with the target program fd. The target must be compatible with the target that was supplied at program load time. The implementation reuses the checks that were factored out of check_attach_btf_id() to ensure compatibility between the BTF types of the old and new attachment. If these match, a new bpf_tracing_link will be created for the new attach target, allowing multiple attachments to co-exist simultaneously. The code could theoretically support multiple-attach of other types of tracing programs as well, but since I don't have a use case for any of those, there is no API support for doing so. Change-Id: Iff14fdd8bed1a617eac6cacd9d245d39b541b431 Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/160138355169.48470.17165680973640685368.stgit@toke.dk |
||
|
|
55aa877662 |
UPSTREAM: bpf: Add bpf_seq_printf_btf helper
A helper is added to allow seq file writing of kernel data
structures using vmlinux BTF. Its signature is
long bpf_seq_printf_btf(struct seq_file *m, struct btf_ptr *ptr,
u32 btf_ptr_size, u64 flags);
Flags and struct btf_ptr definitions/use are identical to the
bpf_snprintf_btf helper, and the helper returns 0 on success
or a negative error value.
Suggested-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Change-Id: I26813fa7f57d10098528369f89dd5b99087ce53e
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/1601292670-1616-8-git-send-email-alan.maguire@oracle.com
|
||
|
|
c78911e5b1 |
UPSTREAM: bpf: Add bpf_snprintf_btf helper
A helper is added to support tracing kernel type information in BPF
using the BPF Type Format (BTF). Its signature is
long bpf_snprintf_btf(char *str, u32 str_size, struct btf_ptr *ptr,
u32 btf_ptr_size, u64 flags);
struct btf_ptr * specifies
- a pointer to the data to be traced
- the BTF id of the type of data pointed to
- a flags field is provided for future use; these flags
are not to be confused with the BTF_F_* flags
below that control how the btf_ptr is displayed; the
flags member of the struct btf_ptr may be used to
disambiguate types in kernel versus module BTF, etc;
the main distinction is the flags relate to the type
and information needed in identifying it; not how it
is displayed.
For example a BPF program with a struct sk_buff *skb
could do the following:
static struct btf_ptr b = { };
b.ptr = skb;
b.type_id = __builtin_btf_type_id(struct sk_buff, 1);
bpf_snprintf_btf(str, sizeof(str), &b, sizeof(b), 0, 0);
Default output looks like this:
(struct sk_buff){
.transport_header = (__u16)65535,
.mac_header = (__u16)65535,
.end = (sk_buff_data_t)192,
.head = (unsigned char *)0x000000007524fd8b,
.data = (unsigned char *)0x000000007524fd8b,
.truesize = (unsigned int)768,
.users = (refcount_t){
.refs = (atomic_t){
.counter = (int)1,
},
},
}
Flags modifying display are as follows:
- BTF_F_COMPACT: no formatting around type information
- BTF_F_NONAME: no struct/union member names/types
- BTF_F_PTR_RAW: show raw (unobfuscated) pointer values;
equivalent to %px.
- BTF_F_ZERO: show zero-valued struct/union members;
they are not displayed by default
Change-Id: Ic45d195264ae573cc1b2e1e49304edd4c91a1c65
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/1601292670-1616-4-git-send-email-alan.maguire@oracle.com
|
||
|
|
4f714eff33 |
UPSTREAM: bpf: Enable BPF_PROG_TEST_RUN for raw_tracepoint
Add .test_run for raw_tracepoint. Also, introduce a new feature that runs the target program on a specific CPU. This is achieved by a new flag in bpf_attr.test, BPF_F_TEST_RUN_ON_CPU. When this flag is set, the program is triggered on cpu with id bpf_attr.test.cpu. This feature is needed for BPF programs that handle perf_event and other percpu resources, as the program can access these resource locally. Change-Id: I81266d3ad6b48e198f30faae2346041efcf7998e Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: John Fastabend <john.fastabend@gmail.com> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200925205432.1777-2-songliubraving@fb.com |
||
|
|
b712bf2029 |
UPSTREAM: bpf: Change bpf_sk_assign to accept ARG_PTR_TO_BTF_ID_SOCK_COMMON
This patch changes the bpf_sk_assign() to take ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will work with the pointer returned by the bpf_skc_to_*() helpers also. The bpf_sk_lookup_assign() is taking ARG_PTR_TO_SOCKET_"OR_NULL". Meaning it specifically takes a literal NULL. ARG_PTR_TO_BTF_ID_SOCK_COMMON does not allow a literal NULL, so another ARG type is required for this purpose and another follow-up patch can be used if there is such need. Change-Id: Ib210803ccc92294cdc531553c405408b4b355782 Signed-off-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200925000415.3857374-1-kafai@fb.com |
||
|
|
2f08dee56f |
UPSTREAM: bpf: Change bpf_tcp_*_syncookie to accept ARG_PTR_TO_BTF_ID_SOCK_COMMON
This patch changes the bpf_tcp_*_syncookie() to take ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will work with the pointer returned by the bpf_skc_to_*() helpers also. Change-Id: Iee77b0d9ec459df59cf22b63dbc1507347aa0f12 Signed-off-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Lorenz Bauer <lmb@cloudflare.com> Link: https://lore.kernel.org/bpf/20200925000409.3856725-1-kafai@fb.com |
||
|
|
43e31c273d |
UPSTREAM: bpf: Change bpf_sk_storage_*() to accept ARG_PTR_TO_BTF_ID_SOCK_COMMON
This patch changes the bpf_sk_storage_*() to take ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will work with the pointer returned by the bpf_skc_to_*() helpers also. A micro benchmark has been done on a "cgroup_skb/egress" bpf program which does a bpf_sk_storage_get(). It was driven by netperf doing a 4096 connected UDP_STREAM test with 64bytes packet. The stats from "kernel.bpf_stats_enabled" shows no meaningful difference. The sk_storage_get_btf_proto, sk_storage_delete_btf_proto, btf_sk_storage_get_proto, and btf_sk_storage_delete_proto are no longer needed, so they are removed. Change-Id: I4547813f0fe3b60b277c508d02acc6d783a309ed Signed-off-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Lorenz Bauer <lmb@cloudflare.com> Link: https://lore.kernel.org/bpf/20200925000402.3856307-1-kafai@fb.com |
||
|
|
b9eda2e7ea |
UPSTREAM: bpf: Change bpf_sk_release and bpf_sk_*cgroup_id to accept ARG_PTR_TO_BTF_ID_SOCK_COMMON
The previous patch allows the networking bpf prog to use the
bpf_skc_to_*() helpers to get a PTR_TO_BTF_ID socket pointer,
e.g. "struct tcp_sock *". It allows the bpf prog to read all the
fields of the tcp_sock.
This patch changes the bpf_sk_release() and bpf_sk_*cgroup_id()
to take ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will
work with the pointer returned by the bpf_skc_to_*() helpers
also. For example, the following will work:
sk = bpf_skc_lookup_tcp(skb, tuple, tuplen, BPF_F_CURRENT_NETNS, 0);
if (!sk)
return;
tp = bpf_skc_to_tcp_sock(sk);
if (!tp) {
bpf_sk_release(sk);
return;
}
lsndtime = tp->lsndtime;
/* Pass tp to bpf_sk_release() will also work */
bpf_sk_release(tp);
Since PTR_TO_BTF_ID could be NULL, the helper taking
ARG_PTR_TO_BTF_ID_SOCK_COMMON has to check for NULL at runtime.
A btf_id of "struct sock" may not always mean a fullsock. Regardless
the helper's running context may get a non-fullsock or not,
considering fullsock check/handling is pretty cheap, it is better to
keep the same verifier expectation on helper that takes ARG_PTR_TO_BTF_ID*
will be able to handle the minisock situation. In the bpf_sk_*cgroup_id()
case, it will try to get a fullsock by using sk_to_full_sk() as its
skb variant bpf_sk"b"_*cgroup_id() has already been doing.
bpf_sk_release can already handle minisock, so nothing special has to
be done.
Change-Id: Ic4fbfaebc6a52861cbb87885e51dd899e26a6598
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200925000356.3856047-1-kafai@fb.com
|
||
|
|
8c8df6e389 |
BACKPORT: bpf: Add BPF_PROG_BIND_MAP syscall
This syscall binds a map to a program. Returns success if the map is already bound to the program. Change-Id: If37584b14f92e207ff79ceda4e751524b7252b9e Signed-off-by: YiFei Zhu <zhuyifei@google.com> Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Cc: YiFei Zhu <zhuyifei1999@gmail.com> Link: https://lore.kernel.org/bpf/20200915234543.3220146-3-sdf@google.com |