Kernel
Threads by month
- ----- 2025 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 24 participants
- 19639 discussions

[PATCH openEuler-5.10 01/14] block: fix the problem of io_ticks becoming smaller
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Chunguang Xu <brookxu(a)tencent.com>
mainline inclusion
from mainline-v5.14-rc1
commit d80c228d44640f0b47b57a2ca4afa26ef87e16b0
category: bugfix
bugzilla: 187475, https://gitee.com/openeuler/kernel/issues/I5ME0J
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
On the IO submission path, blk_account_io_start() may interrupt
the system interruption. When the interruption returns, the value
of part->stamp may have been updated by other cores, so the time
value collected before the interruption may be less than part->
stamp. So when this happens, we should do nothing to make io_ticks
more accurate? For kernels less than 5.0, this may cause io_ticks
to become smaller, which in turn may cause abnormal ioutil values.
Signed-off-by: Chunguang Xu <brookxu(a)tencent.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Link: https://lore.kernel.org/r/1625521646-1069-1-git-send-email-brookxu.cn@gmail…
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
conflict:
block/blk-core.c
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/blk-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 109fb2750453..0b496dabc5ac 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1258,7 +1258,7 @@ void update_io_ticks(struct hd_struct *part, unsigned long now, bool end)
unsigned long stamp;
again:
stamp = READ_ONCE(part->stamp);
- if (unlikely(stamp != now)) {
+ if (unlikely(time_after(now, stamp))) {
if (likely(cmpxchg(&part->stamp, stamp, now) == stamp))
__part_stat_add(part, io_ticks, end ? now - stamp : 1);
}
--
2.20.1
1
13
From: Yu Kuai <yukuai3(a)huawei.com>
Changes in v2:
- fix the problem that if 'nr_pending' is decreased to 0 in
wait_barrier_nolock() in patch 1, 'conf->barrier' is not waked, and
raise_barrier() can hang while waiting 'nr_pending' to be 0.
- only modify hot path in patch 2.
- use node 1 as default in patch 6.
In some architecture, for example KUNPENG 920, memory access latency is
very bad across nodes compare to local node. For consequence, io
performance is rather bad while users issue io from multiple nodes if
lock contention exist in the driver.
This patchset tries to avoid memory access across nodes in driver.
Test environment: aarch64 Huawei KUNPENG 920
Raid10 initialize:
mdadm --create /dev/md0 --level 10 --bitmap none --raid-devices 4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Test cmd:
(task set -c 0-15) fio -name=0 -ioengine=libaio -direct=1 -group_reporting=1 -randseed=2022 -rwmixread=70 -refill_buffers -filename=/dev/md0 -numjobs=16 -runtime=60s -bs=4k -iodepth=256 -rw=randread
Test result:
before this patchset: 3.2 GiB/s
bind node before this patchset: 6.9 Gib/s
after this patchset: 7.9 Gib/s
bind node after this patchset: 8.0 Gib/s
Wang ShaoBo (1):
arm64/topology: Getting preferred sibling's cpumask supported by
platform
Yu Kuai (5):
md/raid10: convert resync_lock to use seqlock
md/raid10: prevent unnecessary calls to wake_up() in fast path
block: add new fields in request_queue
block: support to dispatch bio asynchronously
md: enable dispatching bio asynchronously by default
arch/arm64/Kconfig | 8 ++
arch/arm64/include/asm/smp_plat.h | 14 ++
arch/arm64/kernel/smp.c | 9 ++
arch/arm64/kernel/topology.c | 51 +++++++
block/blk-core.c | 212 +++++++++++++++++++++++++++++-
block/blk-sysfs.c | 40 ++++++
drivers/md/md.c | 5 +
drivers/md/raid10.c | 98 +++++++++-----
drivers/md/raid10.h | 2 +-
include/linux/arch_topology.h | 7 +
include/linux/blkdev.h | 6 +
11 files changed, 420 insertions(+), 32 deletions(-)
--
2.31.1
2
11
From: Pavel Skripkin <paskripkin(a)gmail.com>
mainline inclusion
from mainline-6.0-rc4
commit 9d574f985fe33efd6911f4d752de6f485a1ea732
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5RX0N?from=project-issue
CVE: CVE-2022-3202
--------------------------------
Avoid passing inode with
JFS_SBI(inode->i_sb)->ipimap == NULL to
diFree()[1]. GFP will appear:
struct inode *ipimap = JFS_SBI(ip->i_sb)->ipimap;
struct inomap *imap = JFS_IP(ipimap)->i_imap;
JFS_IP() will return invalid pointer when ipimap == NULL
Call Trace:
diFree+0x13d/0x2dc0 fs/jfs/jfs_imap.c:853 [1]
jfs_evict_inode+0x2c9/0x370 fs/jfs/inode.c:154
evict+0x2ed/0x750 fs/inode.c:578
iput_final fs/inode.c:1654 [inline]
iput.part.0+0x3fe/0x820 fs/inode.c:1680
iput+0x58/0x70 fs/inode.c:1670
Reported-and-tested-by: syzbot+0a89a7b56db04c21a656(a)syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin(a)gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp(a)oracle.com>
Signed-off-by: ZhaoLong Wang <wangzhaolong1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
fs/jfs/inode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
index 054cc761b426..87b41edc800d 100644
--- a/fs/jfs/inode.c
+++ b/fs/jfs/inode.c
@@ -161,7 +161,8 @@ void jfs_evict_inode(struct inode *inode)
if (test_cflag(COMMIT_Freewmap, inode))
jfs_free_zero_link(inode);
- diFree(inode);
+ if (JFS_SBI(inode->i_sb)->ipimap)
+ diFree(inode);
/*
* Free the inode from the quota allocation.
--
2.25.1
1
1

[PATCH openEuler-22.09] arm64/__mc_ex_table: fix __mc_ex_table do_sort() issue
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GB28
CVE: NA
-------------------------------
If ARCH_HAS_MC_EXTABLE is not set then the _mc_ex_table is empty.
There is a logic error in do_sort(). _mc_ex_table is different from
_ex_table. _ex_table is always not empty, while _mc_ex_table may be empty.
If _mc_ex_table is empty, there is a issue with setting the initial value
of mc_extable_index to 0.
Fixes: 7c3d926bb083 ("[Huawei] arm64: extable: add new extable type "__mc_ex_table"")
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
scripts/sorttable.h | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/scripts/sorttable.h b/scripts/sorttable.h
index 874cbd7046b0..d67242f8c75f 100644
--- a/scripts/sorttable.h
+++ b/scripts/sorttable.h
@@ -227,7 +227,6 @@ static int do_sort(Elf_Ehdr *ehdr,
Elf_Rel *mc_relocs = NULL;
int mc_relocs_size = 0;
char *mc_extab_image = NULL;
- int mc_extab_index = 0;
shstrndx = r2(&ehdr->e_shstrndx);
if (shstrndx == SHN_XINDEX)
@@ -245,11 +244,6 @@ static int do_sort(Elf_Ehdr *ehdr,
extab_index = i;
}
- if (!strcmp(secstrings + idx, "__mc_ex_table")) {
- mc_extab_sec = s;
- mc_extab_index = i;
- }
-
if (!strcmp(secstrings + idx, ".symtab"))
symtab_sec = s;
if (!strcmp(secstrings + idx, ".strtab"))
@@ -262,11 +256,15 @@ static int do_sort(Elf_Ehdr *ehdr,
relocs_size = _r(&s->sh_size);
}
- if ((r(&s->sh_type) == SHT_REL ||
- r(&s->sh_type) == SHT_RELA) &&
- r(&s->sh_info) == mc_extab_index) {
- mc_relocs = (void *)ehdr + _r(&s->sh_offset);
- mc_relocs_size = _r(&s->sh_size);
+ if (!strcmp(secstrings + idx, "__mc_ex_table")) {
+ mc_extab_sec = s;
+
+ if ((r(&s->sh_type) == SHT_REL ||
+ r(&s->sh_type) == SHT_RELA) &&
+ r(&s->sh_info) == i) {
+ mc_relocs = (void *)ehdr + _r(&s->sh_offset);
+ mc_relocs_size = _r(&s->sh_size);
+ }
}
if (r(&s->sh_type) == SHT_SYMTAB_SHNDX)
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] xfs: preserve default grace interval during quotacheck
by tangbin 19 Sep '22
by tangbin 19 Sep '22
19 Sep '22
From: "Darrick J. Wong" <darrick.wong(a)oracle.com>
stable inclusion
from stable-v5.10.143
commit f1101295c145e9710b1b37e9b0a13ef9af9af0c9
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5RTF5
CVE: NA
--------------------------------
commit 5885539f0af371024d07afd14974bfdc3fff84c5 upstream.
When quotacheck runs, it zeroes all the timer fields in every dquot.
Unfortunately, it also does this to the root dquot, which erases any
preconfigured grace intervals and warning limits that the administrator
may have set. Worse yet, the incore copies of those variables remain
set. This cache coherence problem manifests itself as the grace
interval mysteriously being reset back to the defaults at the /next/
mount.
Fix it by not resetting the root disk dquot's timer and warning fields.
Signed-off-by: Darrick J. Wong <darrick.wong(a)oracle.com>
Reviewed-by: Dave Chinner <dchinner(a)redhat.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
fs/xfs/xfs_qm.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
index 65b77ea9d5a9..0fb2b37b56f2 100644
--- a/fs/xfs/xfs_qm.c
+++ b/fs/xfs/xfs_qm.c
@@ -870,12 +870,20 @@ xfs_qm_reset_dqcounts(
ddq->d_bcount = 0;
ddq->d_icount = 0;
ddq->d_rtbcount = 0;
- ddq->d_btimer = 0;
- ddq->d_itimer = 0;
- ddq->d_rtbtimer = 0;
- ddq->d_bwarns = 0;
- ddq->d_iwarns = 0;
- ddq->d_rtbwarns = 0;
+
+ /*
+ * dquot id 0 stores the default grace period and the maximum
+ * warning limit that were set by the administrator, so we
+ * should not reset them.
+ */
+ if (ddq->d_id != 0) {
+ ddq->d_btimer = 0;
+ ddq->d_itimer = 0;
+ ddq->d_rtbtimer = 0;
+ ddq->d_bwarns = 0;
+ ddq->d_iwarns = 0;
+ ddq->d_rtbwarns = 0;
+ }
if (xfs_sb_version_hascrc(&mp->m_sb)) {
xfs_update_cksum((char *)&dqb[j],
--
2.18.4
1
0

[PATCH openEuler-22.09 1/2] bpf:programmable: Fix build error of 'stack exceeds 512 bytes'
by Zheng Zengkai 19 Sep '22
by Zheng Zengkai 19 Sep '22
19 Sep '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5RMFU
CVE: NA
--------------------------------
1.Change arg type of 'bpf_get_cpumask_info' to avoid
bpf program stack exceeds 512 bytes.
2.Fix back-edge error in sample 'sched_select_core'
3.Fix loop too complex in sample 'sached_select_core'
Fixes: 1bf0417b95a9 ("sched: programmable: Add helper function for cpu topo...")
Fixes: 2c1189e32bf9 ("samples:bpf: Add samples for cfs select core")
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
---
include/uapi/linux/bpf.h | 2 +-
kernel/sched/bpf_topology.c | 9 ++-
samples/bpf/sched_select_core_kern.c | 33 ++++++++---
tools/include/uapi/linux/bpf.h | 2 +-
tools/lib/bpf/libbpf_sched.h | 86 +++++++++++++++++++++-------
5 files changed, 97 insertions(+), 35 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index db585d960d64..7e474c6fc4a7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -3903,7 +3903,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/kernel/sched/bpf_topology.c b/kernel/sched/bpf_topology.c
index 9c2eda139e2a..843b6092a64f 100644
--- a/kernel/sched/bpf_topology.c
+++ b/kernel/sched/bpf_topology.c
@@ -70,10 +70,9 @@ const struct bpf_func_proto bpf_init_cpu_topology_proto = {
.arg2_type = ARG_ANYTHING,
};
-BPF_CALL_2(bpf_get_cpumask_info, struct bpf_cpumask_info *, cpus,
- int, len)
+BPF_CALL_2(bpf_get_cpumask_info, struct bpf_map *, map, struct bpf_cpumask_info *, cpus)
{
- if (len != sizeof(*cpus))
+ if (!cpus)
return -EINVAL;
cpumask_copy(&cpus->cpu_possible_cpumask, cpu_possible_mask);
@@ -92,6 +91,6 @@ const struct bpf_func_proto bpf_get_cpumask_info_proto = {
.func = bpf_get_cpumask_info,
.gpl_only = false,
.ret_type = RET_INTEGER,
- .arg1_type = ARG_PTR_TO_UNINIT_MEM,
- .arg2_type = ARG_CONST_SIZE,
+ .arg1_type = ARG_CONST_MAP_PTR,
+ .arg2_type = ARG_PTR_TO_MAP_VALUE_OR_NULL,
};
diff --git a/samples/bpf/sched_select_core_kern.c b/samples/bpf/sched_select_core_kern.c
index 18617e89b395..62ffb29f2725 100644
--- a/samples/bpf/sched_select_core_kern.c
+++ b/samples/bpf/sched_select_core_kern.c
@@ -62,7 +62,7 @@ struct tag_info {
struct tag_info tag_tbl[] = {
{TAG_NONE, ""},
- {TAG_ID(1), "0-3"},
+ {TAG_ID(1), "0-1"},
{TAG_ID(2), "4-7"},
{TAG_MAX, ""},
};
@@ -94,13 +94,17 @@ static struct cpumask *select_better_cpus(struct task_struct *p,
long min_util = INT_MIN;
struct task_group *tg;
long spare;
- int cpu;
+ int cpu, i;
if (!prefer_cpus_valid(prefer_cpus, (void *)getVal(p->cpus_ptr)))
return (void *)getVal(p->cpus_ptr);
tg = p->sched_task_group;
- libbpf_for_each_cpu(cpu, prefer_cpus) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
+ cpu = libbpf_cpumask_next(cpu, (void *)getVal(prefer_cpus));
+ if (cpu >= libbpf_nr_cpus_ids())
+ break;
+
if (idlest_cpu && libbpf_available_idle_cpu(cpu)) {
*idlest_cpu = cpu;
} else if (idlest_cpu) {
@@ -159,9 +163,14 @@ int BPF_PROG(cfs_select_cpu_range, struct sched_migrate_ctx *h_ctx)
SEC("sched/cfs_select_rq_exit")
int BPF_PROG(cfs_select_cpu_range_exit, struct sched_migrate_ctx *h_ctx)
{
+ struct task_struct *p = getVal(h_ctx->task);
+ long tag = getVal(p->tag);
int *idlest_cpu;
int key = 0;
+ if (tag <= TAG_NONE || tag >= TAG_MAX)
+ return SELECT_RQ_EXIT_CPU_VALID;
+
idlest_cpu = bpf_map_lookup_elem(&map_idlest_cpu, &key);
if (!idlest_cpu) {
libbpf_sched_set_task_cpus_ptr(h_ctx, (void *)getVal(h_ctx->cpus_allowed));
@@ -186,7 +195,7 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
int cpu;
int i;
- for (i = 0, cpu = -1; i < NR_CPUS; i++) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
cpu = libbpf_cpumask_next(cpu, (void *)getVal(p->cpus_ptr));
if (cpu >= libbpf_nr_cpus_ids())
break;
@@ -203,17 +212,27 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
static int select_idle_cpu(struct task_struct *p, int parent, int prev_cpu)
{
- int cpu;
+ int cpu, i;
if (libbpf_available_idle_cpu(prev_cpu))
return prev_cpu;
if (libbpf_available_idle_cpu(parent))
- return prev_cpu;
+ return parent;
+
+ for (i = 0, cpu = libbpf_cpumask_next_wrap(prev_cpu - 1,
+ (void *)getVal(p->cpus_ptr),
+ prev_cpu, false);
+ i < BPF_SCHED_LOOP_MAX; i++) {
+
+ if (cpu >= libbpf_nr_cpumask_bits())
+ break;
- libbpf_for_each_cpu_wrap(cpu, (void *)getVal(p->cpus_ptr), prev_cpu) {
if (libbpf_available_idle_cpu(cpu))
return cpu;
+
+ cpu = libbpf_cpumask_next_wrap(cpu, (void *)getVal(p->cpus_ptr),
+ prev_cpu, true);
}
return prev_cpu;
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 57b927e99092..22f7880a0bb6 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -4613,7 +4613,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/tools/lib/bpf/libbpf_sched.h b/tools/lib/bpf/libbpf_sched.h
index 6cb30e8e81f8..187e854b99b3 100644
--- a/tools/lib/bpf/libbpf_sched.h
+++ b/tools/lib/bpf/libbpf_sched.h
@@ -21,6 +21,8 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
+/* set bigger value may lead verifier failed */
+#define BPF_SCHED_LOOP_MAX 1024
#define INVALID_PTR ((void *)(0UL))
#define getVal(P) \
({ \
@@ -69,6 +71,13 @@ static __always_inline int libbpf_nr_cpumask_bits(void);
#endif
+struct {
+ __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+ __type(key, u32);
+ __type(value, struct bpf_cpumask_info);
+ __uint(max_entries, 1);
+} map_cpumask_info SEC(".maps");
+
static __always_inline long libbpf_cpumask_copy(struct cpumask *dst,
struct cpumask *src)
{
@@ -228,58 +237,93 @@ static __always_inline long libbpf_cpumask_cpulist_parse(char *src1,
static __always_inline int libbpf_num_active_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_active_cpus);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_active_cpus);
}
static __always_inline int libbpf_num_possible_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_possible_cpus);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_possible_cpus);
}
static __always_inline void libbpf_possible_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_possible_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_possible_cpumask);
}
static __always_inline void libbpf_active_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_active_cpumask);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_active_cpumask);
}
static __always_inline void libbpf_isolate_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_isolate_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_isolate_cpumask);
}
static __always_inline int libbpf_nr_cpus_ids(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nr_cpu_ids);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nr_cpu_ids);
}
static __always_inline int libbpf_nr_cpumask_bits(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.bpf_nr_cpumask_bits);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->bpf_nr_cpumask_bits);
}
static __always_inline unsigned long libbpf_cfs_load_avg_of(int cpu)
--
2.20.1
1
1

16 Sep '22
Add patches for CVE-2022-29900, CVE-2022-23816 and CVE-2022-29901.
Reference:
https://lore.kernel.org/all/CAODzB9qH9WhxQ0eB+mNvmsn64bHXUVppuSTMDGJekYOPCw…
https://www.amd.com/system/files/documents/technical-guidance-for-mitigatin…
https://www.intel.com/content/www/us/en/developer/articles/technical/softwa…
Alexandre Chartre (2):
x86/bugs: Report AMD retbleed vulnerability
x86/bugs: Add AMD retbleed= boot parameter
Andrew Cooper (1):
x86/cpu/amd: Enumerate BTC_NO
Arnaldo Carvalho de Melo (5):
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy'
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools headers cpufeatures: Sync with the kernel sources
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy' - again
tools headers: Remove broken definition of __LITTLE_ENDIAN
Ben Hutchings (3):
x86: Add insn_decode_kernel()
Makefile: Set retpoline cflags based on CONFIG_CC_IS_{CLANG,GCC}
x86/xen: Fix initialisation in hypercall_page after rethunk
Borislav Petkov (7):
x86/insn: Rename insn_decode() to insn_decode_from_regs()
x86/insn: Add a __ignore_sync_check__ marker
x86/insn: Add an insn_decode() API
x86/alternative: Use insn_decode()
x86/alternative: Optimize single-byte NOPs at an arbitrary position
kvm/emulate: Fix SETcc emulation function offsets with SLS
tools/insn: Restore the relative include paths for cross building
Greg Kroah-Hartman (1):
x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Josh Poimboeuf (24):
objtool: Refactor ORC section generation
objtool: Add 'alt_group' struct
objtool: Support stack layout changes in alternatives
objtool: Support retpoline jump detection for vmlinux.o
objtool: Assume only ELF functions do sibling calls
objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
x86/xen: Support objtool validation in xen-asm.S
x86/xen: Support objtool vmlinux.o validation in xen-head.S
objtool: Support asm jump tables
objtool: Don't make .altinstructions writable
objtool: Remove reloc symbol type checks in get_alt_entry()
x86/bugs: Do IBPB fallback check only once
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Remove x86_spec_ctrl_mask
objtool: Re-add UNWIND_HINT_{SAVE_RESTORE}
KVM: VMX: Flatten __vmx_vcpu_run()
KVM: VMX: Convert launched argument to flags
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
KVM: VMX: Fix IBRS handling after vmexit
x86/speculation: Fill RSB on vmexit for IBRS
x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
Juergen Gross (4):
x86/alternative: Merge include files
x86/alternative: Support not-feature
x86/alternative: Support ALTERNATIVE_TERNARY
x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has()
Kim Phillips (3):
x86/sev: Avoid using __x86_return_thunk
x86/bugs: Enable STIBP for JMP2RET
x86/bugs: Remove apostrophe typo
Konrad Rzeszutek Wilk (1):
x86/kexec: Disable RET on kexec
Lin Yujun (2):
x86: Fix objtool build warning
Re-add padlen to the structure alt_instr
Linus Torvalds (2):
objtool: print out the symbol type when complaining about it
kvm: fix objtool relocation warning
Nathan Chancellor (1):
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
Pawan Gupta (3):
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/speculation: Disable RRSBA behavior
Peter Zijlstra (70):
x86/alternatives: Optimize optimize_nops()
x86/retpoline: Simplify retpolines
objtool: Correctly handle retpoline thunk calls
objtool: Handle per arch retpoline naming
objtool: Rework the elf_rebuild_reloc_section() logic
objtool: Add elf_create_reloc() helper
objtool: Create reloc sections implicitly
objtool: Extract elf_strtab_concat()
objtool: Extract elf_symbol_add()
objtool: Add elf_create_undef_symbol()
objtool: Keep track of retpoline call sites
objtool: Cache instruction relocs
objtool: Skip magical retpoline .altinstr_replacement
objtool/x86: Rewrite retpoline thunk calls
objtool: Fix .symtab_shndx handling for elf_create_undef_symbol()
objtool: Only rewrite unconditional retpoline thunk calls
objtool/x86: Ignore __x86_indirect_alt_* symbols
objtool: Teach get_alt_entry() about more relocation types
objtool: Introduce CFI hash
objtool: Handle __sanitize_cov*() tail calls
objtool: Classify symbols
objtool: Explicitly avoid self modifying code in .altinstr_replacement
objtool,x86: Replace alternatives with .retpoline_sites
x86/retpoline: Remove unused replacement symbols
x86/asm: Fix register order
x86/asm: Fixup odd GEN-for-each-reg.h usage
x86/retpoline: Move the retpoline thunk declarations to
nospec-branch.h
x86/retpoline: Create a retpoline thunk array
x86/alternative: Implement .retpoline_sites support
bpf,x86: Simplify computing label offsets
bpf,x86: Respect X86_FEATURE_RETPOLINE*
x86/lib/atomic64_386_32: Rename things
x86: Prepare asm files for straight-line-speculation
x86: Prepare inline-asm for straight-line-speculation
x86/alternative: Relax text_poke_bp() constraint
objtool: Add straight-line-speculation validation
x86: Add straight-line-speculation mitigation
objtool: Default ignore INT3 for unreachable
crypto: x86/poly1305 - Fixup SLS
objtool: Fix SLS validation for kcov tail-call replacement
x86/entry: Remove skip_r11rcx
x86/kvm/vmx: Make noinstr clean
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/retpoline: Cleanup some #ifdefery
x86/retpoline: Swizzle retpoline thunk
x86/retpoline: Use -mfunction-return
x86: Undo return-thunk damage
x86,objtool: Create .return_sites
x86,static_call: Use alternative RET encoding
x86/ftrace: Use alternative RET encoding
x86/bpf: Use alternative RET encoding
x86/kvm: Fix SETcc emulation for return thunks
x86/vsyscall_emu/64: Don't use RET in vsyscall emulation
x86: Use return-thunk in asm code
objtool: Treat .text.__x86.* as noinstr
x86: Add magic AMD return-thunk
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/entry: Add kernel IBRS implementation
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/bugs: Split spectre_v2_select_mitigation() and
spectre_v2_user_select_mitigation()
x86/bugs: Report Intel retbleed vulnerability
intel_idle: Disable IBRS during long idle
objtool: Update Retpoline validation
x86/xen: Rename SYS* entry points
x86/bugs: Add retbleed=ibpb
objtool: Add entry UNRET validation
x86/cpu/amd: Add Spectral Chicken
x86/common: Stamp out the stepping madness
x86/retbleed: Add fine grained Kconfig knobs
um: Add missing apply_returns()
Thadeu Lima de Souza Cascardo (5):
x86/realmode: build with -D__DISABLE_EXPORTS
objtool: skip non-text sections when adding return-thunk sites
x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported
efi/x86: use naked RET on mixed mode call wrapper
x86/kvm: fix FASTOP_SIZE when return thunks are enabled
Thomas Gleixner (1):
x86/static_call: Serialize __static_call_fixup() properly
Uros Bizjak (2):
KVM/VMX: Use TEST %REG,%REG instead of CMP $0,%REG in vmenter.S
KVM/nVMX: Use __vmx_vcpu_run in nested_vmx_check_vmentry_hw
Vasily Gorbik (1):
objtool: Fix elf_create_undef_symbol() endianness
.../admin-guide/kernel-parameters.txt | 25 +
Makefile | 20 +-
arch/um/kernel/um_arch.c | 8 +
arch/x86/Kconfig | 91 +-
arch/x86/Makefile | 8 +-
arch/x86/boot/compressed/efi_thunk_64.S | 2 +-
arch/x86/boot/compressed/head_64.S | 4 +-
arch/x86/boot/compressed/mem_encrypt.S | 4 +-
arch/x86/crypto/aegis128-aesni-asm.S | 48 +-
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 2 +-
arch/x86/crypto/aesni-intel_asm.S | 52 +-
arch/x86/crypto/aesni-intel_avx-x86_64.S | 40 +-
arch/x86/crypto/blake2s-core.S | 4 +-
arch/x86/crypto/blowfish-x86_64-asm_64.S | 12 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 18 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 18 +-
arch/x86/crypto/camellia-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/chacha-avx2-x86_64.S | 6 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 6 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 8 +-
arch/x86/crypto/crc32-pclmul_asm.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 2 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 2 +-
arch/x86/crypto/des3_ede-asm_64.S | 4 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 6 +-
arch/x86/crypto/nh-avx2-x86_64.S | 2 +-
arch/x86/crypto/nh-sse2-x86_64.S | 2 +-
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 38 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/serpent-avx2-asm_64.S | 16 +-
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 6 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 6 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 2 +-
arch/x86/crypto/sha1_ni_asm.S | 2 +-
arch/x86/crypto/sha1_ssse3_asm.S | 2 +-
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-avx2-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
arch/x86/crypto/sha256_ni_asm.S | 2 +-
arch/x86/crypto/sha512-avx-asm.S | 2 +-
arch/x86/crypto/sha512-avx2-asm.S | 2 +-
arch/x86/crypto/sha512-ssse3-asm.S | 2 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/twofish-i586-asm_32.S | 4 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 6 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 4 +-
arch/x86/entry/Makefile | 2 +-
arch/x86/entry/calling.h | 72 +-
arch/x86/entry/entry.S | 22 +
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 62 +-
arch/x86/entry/entry_64_compat.S | 21 +-
arch/x86/entry/thunk_32.S | 2 +-
arch/x86/entry/thunk_64.S | 2 +-
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/entry/vdso/vdso32/system_call.S | 4 +-
arch/x86/entry/vsyscall/vsyscall_emu_64.S | 3 +
arch/x86/include/asm/GEN-for-each-reg.h | 14 +-
arch/x86/include/asm/alternative-asm.h | 114 --
arch/x86/include/asm/alternative.h | 133 +-
arch/x86/include/asm/asm-prototypes.h | 17 -
arch/x86/include/asm/cpufeature.h | 41 +-
arch/x86/include/asm/cpufeatures.h | 12 +-
arch/x86/include/asm/disabled-features.h | 21 +-
arch/x86/include/asm/inat.h | 2 +-
arch/x86/include/asm/insn-eval.h | 4 +-
arch/x86/include/asm/insn.h | 28 +-
arch/x86/include/asm/linkage.h | 22 +
arch/x86/include/asm/msr-index.h | 13 +
arch/x86/include/asm/nospec-branch.h | 148 ++-
arch/x86/include/asm/paravirt.h | 2 +-
arch/x86/include/asm/qspinlock_paravirt.h | 4 +-
arch/x86/include/asm/smap.h | 5 +-
arch/x86/include/asm/static_call.h | 19 +-
arch/x86/include/asm/unwind_hints.h | 23 +-
arch/x86/kernel/acpi/wakeup_32.S | 6 +-
arch/x86/kernel/alternative.c | 356 +++++-
arch/x86/kernel/cpu/amd.c | 46 +-
arch/x86/kernel/cpu/bugs.c | 475 ++++++-
arch/x86/kernel/cpu/common.c | 61 +-
arch/x86/kernel/cpu/cpu.h | 2 +
arch/x86/kernel/cpu/hygon.c | 6 +
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/ftrace.c | 7 +-
arch/x86/kernel/ftrace_32.S | 6 +-
arch/x86/kernel/ftrace_64.S | 13 +-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 5 +
arch/x86/kernel/irqflags.S | 4 +-
arch/x86/kernel/kprobes/core.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/module.c | 15 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/relocate_kernel_32.S | 15 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/sev-es.c | 2 +-
arch/x86/kernel/sev_verify_cbit.S | 2 +-
arch/x86/kernel/static_call.c | 52 +-
arch/x86/kernel/umip.c | 2 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 23 +-
arch/x86/kvm/emulate.c | 39 +-
arch/x86/kvm/svm/vmenter.S | 11 +-
arch/x86/kvm/vmx/nested.c | 32 +-
arch/x86/kvm/vmx/run_flags.h | 8 +
arch/x86/kvm/vmx/vmenter.S | 170 +--
arch/x86/kvm/vmx/vmx.c | 78 +-
arch/x86/kvm/vmx/vmx.h | 5 +
arch/x86/kvm/x86.c | 4 +-
arch/x86/lib/atomic64_386_32.S | 88 +-
arch/x86/lib/atomic64_cx8_32.S | 18 +-
arch/x86/lib/checksum_32.S | 8 +-
arch/x86/lib/clear_page_64.S | 6 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_mc_64.S | 6 +-
arch/x86/lib/copy_page_64.S | 10 +-
arch/x86/lib/copy_user_64.S | 14 +-
arch/x86/lib/csum-copy_64.S | 2 +-
arch/x86/lib/error-inject.c | 3 +-
arch/x86/lib/getuser.S | 22 +-
arch/x86/lib/hweight.S | 6 +-
arch/x86/lib/inat.c | 2 +-
arch/x86/lib/insn-eval.c | 6 +-
arch/x86/lib/insn.c | 222 +++-
arch/x86/lib/iomap_copy_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 14 +-
arch/x86/lib/memmove_64.S | 11 +-
arch/x86/lib/memset_64.S | 8 +-
arch/x86/lib/msr-reg.S | 4 +-
arch/x86/lib/putuser.S | 6 +-
arch/x86/lib/retpoline.S | 118 +-
arch/x86/math-emu/div_Xsig.S | 2 +-
arch/x86/math-emu/div_small.S | 2 +-
arch/x86/math-emu/mul_Xsig.S | 6 +-
arch/x86/math-emu/polynom_Xsig.S | 2 +-
arch/x86/math-emu/reg_norm.S | 6 +-
arch/x86/math-emu/reg_round.S | 2 +-
arch/x86/math-emu/reg_u_add.S | 2 +-
arch/x86/math-emu/reg_u_div.S | 2 +-
arch/x86/math-emu/reg_u_mul.S | 2 +-
arch/x86/math-emu/reg_u_sub.S | 2 +-
arch/x86/math-emu/round_Xsig.S | 4 +-
arch/x86/math-emu/shr_Xsig.S | 8 +-
arch/x86/math-emu/wm_shrx.S | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 6 +
arch/x86/net/bpf_jit_comp.c | 185 ++-
arch/x86/net/bpf_jit_comp32.c | 22 +-
arch/x86/platform/efi/efi_stub_32.S | 2 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
arch/x86/platform/efi/efi_thunk_64.S | 5 +-
arch/x86/platform/olpc/xo1-wakeup.S | 6 +-
arch/x86/power/hibernate_asm_32.S | 4 +-
arch/x86/power/hibernate_asm_64.S | 4 +-
arch/x86/um/checksum_32.S | 4 +-
arch/x86/um/setjmp_32.S | 2 +-
arch/x86/um/setjmp_64.S | 2 +-
arch/x86/xen/Makefile | 1 -
arch/x86/xen/setup.c | 6 +-
arch/x86/xen/xen-asm.S | 43 +-
arch/x86/xen/xen-head.S | 6 +-
arch/x86/xen/xen-ops.h | 6 +-
drivers/base/cpu.c | 8 +
drivers/idle/intel_idle.c | 43 +-
include/linux/cpu.h | 2 +
include/linux/kvm_host.h | 2 +-
include/linux/objtool.h | 14 +-
samples/ftrace/ftrace-direct-modify.c | 4 +-
samples/ftrace/ftrace-direct-too.c | 2 +-
samples/ftrace/ftrace-direct.c | 2 +-
scripts/Makefile.build | 6 +
scripts/link-vmlinux.sh | 6 +
security/Kconfig | 11 -
tools/arch/x86/include/asm/cpufeatures.h | 12 +-
.../arch/x86/include/asm/disabled-features.h | 21 +-
tools/arch/x86/include/asm/inat.h | 2 +-
tools/arch/x86/include/asm/insn.h | 28 +-
tools/arch/x86/include/asm/msr-index.h | 13 +
tools/arch/x86/lib/inat.c | 2 +-
tools/arch/x86/lib/insn.c | 222 +++-
tools/arch/x86/lib/memcpy_64.S | 14 +-
tools/arch/x86/lib/memset_64.S | 8 +-
.../asm/{alternative-asm.h => alternative.h} | 0
tools/include/linux/kconfig.h | 67 +
tools/include/linux/objtool.h | 14 +-
.../Documentation/stack-validation.txt | 16 +-
tools/objtool/Makefile | 4 -
tools/objtool/arch.h | 13 +-
tools/objtool/arch/x86/decode.c | 58 +-
tools/objtool/builtin-check.c | 6 +-
tools/objtool/builtin-orc.c | 6 +-
tools/objtool/builtin.h | 3 +-
tools/objtool/cfi.h | 2 +
tools/objtool/check.c | 1131 +++++++++++++----
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 230 ++--
tools/objtool/elf.h | 20 +-
tools/objtool/objtool.c | 2 +
tools/objtool/objtool.h | 5 +-
tools/objtool/orc_gen.c | 324 ++---
tools/objtool/special.c | 22 +-
tools/objtool/sync-check.sh | 17 +-
tools/objtool/weak.c | 7 +-
tools/perf/check-headers.sh | 15 +-
207 files changed, 4323 insertions(+), 1902 deletions(-)
create mode 100644 arch/x86/entry/entry.S
delete mode 100644 arch/x86/include/asm/alternative-asm.h
create mode 100644 arch/x86/kvm/vmx/run_flags.h
rename tools/include/asm/{alternative-asm.h => alternative.h} (100%)
create mode 100644 tools/include/linux/kconfig.h
--
2.20.1
1
139
From: Yu Kuai <yukuai3(a)huawei.com>
Changes in v2:
- fix the problem that if 'nr_pending' is decreased to 0 in
wait_barrier_nolock() in patch 1, 'conf->barrier' is not waked, and
raise_barrier() can hang while waiting 'nr_pending' to be 0.
- only modify hot path in patch 2.
- use node 1 as default in patch 6.
In some architecture, for example KUNPENG 920, memory access latency is
very bad across nodes compare to local node. For consequence, io
performance is rather bad while users issue io from multiple nodes if
lock contention exist in the driver.
This patchset tries to avoid memory access across nodes in driver.
Test environment: aarch64 Huawei KUNPENG 920
Raid10 initialize:
mdadm --create /dev/md0 --level 10 --bitmap none --raid-devices 4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Test cmd:
(task set -c 0-15) fio -name=0 -ioengine=libaio -direct=1 -group_reporting=1 -randseed=2022 -rwmixread=70 -refill_buffers -filename=/dev/md0 -numjobs=16 -runtime=60s -bs=4k -iodepth=256 -rw=randread
Test result:
before this patchset: 3.2 GiB/s
bind node before this patchset: 6.9 Gib/s
after this patchset: 7.9 Gib/s
bind node after this patchset: 8.0 Gib/s
Wang ShaoBo (1):
arm64/topology: Getting preferred sibling's cpumask supported by
platform
Yu Kuai (5):
md/raid10: convert resync_lock to use seqlock
md/raid10: prevent unnecessary calls to wake_up() in fast path
block: add new fields in request_queue
block: support to dispatch bio asynchronously
md: enable dispatching bio asynchronously by default
arch/arm64/Kconfig | 8 ++
arch/arm64/include/asm/smp_plat.h | 14 ++
arch/arm64/kernel/smp.c | 9 ++
arch/arm64/kernel/topology.c | 51 +++++++
block/blk-core.c | 212 +++++++++++++++++++++++++++++-
block/blk-sysfs.c | 40 ++++++
drivers/md/md.c | 5 +
drivers/md/raid10.c | 98 +++++++++-----
drivers/md/raid10.h | 2 +-
include/linux/arch_topology.h | 7 +
include/linux/blkdev.h | 6 +
11 files changed, 420 insertions(+), 32 deletions(-)
--
2.31.1
1
6
1
0
1
0

[PATCH openEuler-1.0-LTS] mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-v4.19.257
commit c3b1e88f14e7f442e2ddcbec94527eec84ac0ca3
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PE9S
CVE: CVE-2022-39188
--------------------------------
commit b67fbebd4cf980aecbcc750e1462128bffe8ae15 upstream.
Some drivers rely on having all VMAs through which a PFN might be
accessible listed in the rmap for correctness.
However, on X86, it was possible for a VMA with stale TLB entries
to not be listed in the rmap.
This was fixed in mainline with
commit b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"),
but that commit relies on preceding refactoring in
commit 18ba064e42df3 ("mmu_gather: Let there be one tlb_{start,end}_vma()
implementation") and commit 1e9fdf21a4339 ("mmu_gather: Remove per arch
tlb_{start,end}_vma()").
This patch provides equivalent protection without needing that
refactoring, by forcing a TLB flush between removing PTEs in
unmap_vmas() and the call to unlink_file_vma() in free_pgtables().
[This is a stable-specific rewrite of the upstream commit!]
Signed-off-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: zuoze <zuoze1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/mmap.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/mm/mmap.c b/mm/mmap.c
index a2699bc10f7b..3bf113a24599 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2899,6 +2899,18 @@ static void unmap_region(struct mm_struct *mm,
tlb_gather_mmu(&tlb, mm, start, end);
update_hiwater_rss(mm);
unmap_vmas(&tlb, vma, start, end);
+
+ /*
+ * Ensure we have no stale TLB entries by the time this mapping is
+ * removed from the rmap.
+ * Note that we don't have to worry about nested flushes here because
+ * we're holding the mm semaphore for removing the mapping - so any
+ * concurrent flush in this region has to be coming through the rmap,
+ * and we synchronize against that using the rmap lock.
+ */
+ if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
+ tlb_flush_mmu(&tlb);
+
free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
next ? next->vm_start : USER_PGTABLES_CEILING);
tlb_finish_mmu(&tlb, start, end);
--
2.25.1
1
0

[PATCH openEuler-5.10] Script: Add shell script for adding openeuler patch header
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
script for adding mainline patch header.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
add-openeuler-patch-header-mainline.sh | 56 ++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100755 add-openeuler-patch-header-mainline.sh
diff --git a/add-openeuler-patch-header-mainline.sh b/add-openeuler-patch-header-mainline.sh
new file mode 100755
index 000000000000..e9352911d242
--- /dev/null
+++ b/add-openeuler-patch-header-mainline.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+#
+# Usage:
+#
+# prerequisite:
+#
+# The patches to add header should be patches from linux mainline.
+#
+# command (run in the directory where patch files stored):
+# add-openeuler-patch-header-mainline.sh commit1..commit2 gitee_issue_url
+#
+# commit1: mainline start commit id
+# commit2: mainline end commit id
+# gitee_issue_url: for example: https://gitee.com/openeuler/kernel/issues/I4MKP4
+#
+# Example:
+# add-openeuler-patch-header-mainline.sh 2c85ebc57b3e..80e78fcce86d https://gitee.com/openeuler/kernel/issues/I5OHOB
+#
+
+for p in `ls *.patch`
+do
+ if [ $p == "0000-cover-letter.patch" ]; then
+ continue
+ fi
+
+ title=$(sed '/^Subject: \[PATCH .*\]/{N;s/\n / /g}' $p | grep -E "^Subject: \[PATCH .*\]" | cut -d ']' -f 2)
+ commit=$(git log --pretty=oneline $1 | grep -F "$title" | cut -d ' ' -f 1)
+ if [ -n "$multi" ]; then
+ echo "$p" has multi-commits
+ commit="multi"
+ continue
+ fi
+ if [ -z "$commit" ]; then
+ echo "$p" commit is null
+ commit="null"
+ continue
+ fi
+
+ # find insert line
+ i=5
+ while true
+ do
+ ln=""$i"p"
+ sub=`cat $p | sed -n "$ln"`
+ i=$(($i+1))
+ if [ -z "$sub" ]; then
+ break
+ fi
+ done
+ i=$(($i-1))
+
+ version=`git name-rev $commit | awk -F '[v~^]' '{print $2}'`
+
+ sed ""$i"a mainline inclusion\nfrom mainline-v$version\ncommit $commit\ncategory: feature\nbugzilla: $2\nCVE: NA\n\n--------------------------------\n" -i $p
+done
--
2.20.1
1
0

[PATCH openEuler-5.10-LTS 1/6] KVM: x86: do not report a vCPU as preempted outside instruction boundaries
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
From: Paolo Bonzini <pbonzini(a)redhat.com>
mainline inclusion
from mainline-v5.19-rc2
commit 6cd88243c7e03845a450795e134b488fc2afb736
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PJ7H
CVE: CVE-2022-39189
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------
If a vCPU is outside guest mode and is scheduled out, it might be in the
process of making a memory access. A problem occurs if another vCPU uses
the PV TLB flush feature during the period when the vCPU is scheduled
out, and a virtual address has already been translated but has not yet
been accessed, because this is equivalent to using a stale TLB entry.
To avoid this, only report a vCPU as preempted if sure that the guest
is at an instruction boundary. A rescheduling request will be delivered
to the host physical CPU as an external interrupt, so for simplicity
consider any vmexit *not* instruction boundary except for external
interrupts.
It would in principle be okay to report the vCPU as preempted also
if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the
vmentry/vmexit overhead unnecessarily, and optimistic spinning is
also unlikely to succeed. However, leave it for later because right
now kvm_vcpu_check_block() is doing memory accesses. Even
though the TLB flush issue only applies to virtual memory address,
it's very much preferrable to be conservative.
Reported-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
conflict:
arch/x86/kvm/x86.c
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: yezengruan <yezengruan(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/x86/include/asm/kvm_host.h | 3 +++
arch/x86/kvm/svm/svm.c | 2 ++
arch/x86/kvm/vmx/vmx.c | 1 +
arch/x86/kvm/x86.c | 24 ++++++++++++++++++++++++
4 files changed, 30 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index d90792da5b9e..01544554a4c2 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -551,6 +551,7 @@ struct kvm_vcpu_arch {
u64 ia32_misc_enable_msr;
u64 smbase;
u64 smi_count;
+ bool at_instruction_boundary;
bool tpr_access_reporting;
bool xsaves_enabled;
u64 ia32_xss;
@@ -1072,6 +1073,8 @@ struct kvm_vcpu_stat {
u64 utime;
u64 stime;
u64 gtime;
+ u64 preemption_reported;
+ u64 preemption_other;
u64 preemption_timer_exits;
};
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 2124fe54abfb..5231f40e8312 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3992,6 +3992,8 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)
{
+ if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
+ vcpu->arch.at_instruction_boundary = true;
}
static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 79889d27aa5b..96693ac066c2 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6532,6 +6532,7 @@ static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)
return;
handle_interrupt_nmi_irqoff(vcpu, gate_offset(desc));
+ vcpu->arch.at_instruction_boundary = true;
}
static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 24c198e70f8e..dac43d92eb81 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -232,6 +232,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
VCPU_STAT("l1d_flush", l1d_flush),
VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns),
VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
+ VCPU_STAT("preemption_reported", preemption_reported),
+ VCPU_STAT("preemption_other", preemption_other),
VM_STAT("mmu_shadow_zapped", mmu_shadow_zapped),
VM_STAT("mmu_pte_write", mmu_pte_write),
VM_STAT("mmu_pde_zapped", mmu_pde_zapped),
@@ -286,6 +288,8 @@ struct dfx_kvm_stats_debugfs_item dfx_debugfs_entries[] = {
DFX_STAT("stime", stime),
DFX_STAT("gtime", gtime),
DFX_STAT("preemption_timer_exits", preemption_timer_exits),
+ DFX_STAT("preemption_reported", preemption_reported),
+ DFX_STAT("preemption_other", preemption_other),
{ NULL }
};
@@ -4078,6 +4082,19 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
struct kvm_host_map map;
struct kvm_steal_time *st;
+ /*
+ * The vCPU can be marked preempted if and only if the VM-Exit was on
+ * an instruction boundary and will not trigger guest emulation of any
+ * kind (see vcpu_run). Vendor specific code controls (conservatively)
+ * when this is true, for example allowing the vCPU to be marked
+ * preempted if and only if the VM-Exit was due to a host interrupt.
+ */
+ if (!vcpu->arch.at_instruction_boundary) {
+ vcpu->stat.preemption_other++;
+ return;
+ }
+
+ vcpu->stat.preemption_reported++;
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -9306,6 +9323,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
vcpu->arch.l1tf_flush_l1d = true;
for (;;) {
+ /*
+ * If another guest vCPU requests a PV TLB flush in the middle
+ * of instruction emulation, the rest of the emulation could
+ * use a stale page translation. Assume that any code after
+ * this point can start executing an instruction.
+ */
+ vcpu->arch.at_instruction_boundary = false;
if (kvm_vcpu_running(vcpu)) {
r = vcpu_enter_guest(vcpu);
} else {
--
2.20.1
1
5
您好!
Kernel SIG 邀请您参加 2022-09-16 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.调度系列技术分享第三期 -- Linux调度器框架
2.openEuler开源之夏特性 -- 轻量级死锁检测实现
3.openEuler-22.09龙芯支持特性简介
会议链接:https://us06web.zoom.us/j/87690719217?pwd=cDN6V3Bhc05DU3lqTmhHYzA2L0RBQT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-09-16 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.调度系列技术分享第三期 -- Linux调度器框架
2.openEuler开源之夏特性 -- 轻量级死锁检测实现
3.openEuler-22.09龙芯支持特性简介
You can join the meeting at https://us06web.zoom.us/j/87690719217?pwd=cDN6V3Bhc05DU3lqTmhHYzA2L0RBQT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Hyunwoo Kim <imv4bel(a)gmail.com>
mainline inclusion
from mainline-v5.19-rc4
commit a09d2d00af53b43c6f11e6ab3cb58443c2cac8a7
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PRMO
CVE: CVE-2022-39842
---------------------
In pxa3xx_gcu_write, a count parameter of type size_t is passed to words of
type int. Then, copy_from_user() may cause a heap overflow because it is used
as the third argument of copy_from_user().
Signed-off-by: Hyunwoo Kim <imv4bel(a)gmail.com>
Signed-off-by: Helge Deller <deller(a)gmx.de>
Signed-off-by: Zhao Wenhui <zhaowenhui8(a)huawei.com>
Reviewed-by: Chen Hui <judy.chenhui(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/pxa3xx-gcu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/pxa3xx-gcu.c b/drivers/video/fbdev/pxa3xx-gcu.c
index 69cfb337c857..6fe5573e2008 100644
--- a/drivers/video/fbdev/pxa3xx-gcu.c
+++ b/drivers/video/fbdev/pxa3xx-gcu.c
@@ -394,7 +394,7 @@ pxa3xx_gcu_write(struct file *file, const char *buff,
struct pxa3xx_gcu_batch *buffer;
struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
- int words = count / 4;
+ size_t words = count / 4;
/* Does not need to be atomic. There's a lock in user space,
* but anyhow, this is just for statistics. */
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS 000/137] Patches for CVE-2022-29900, CVE-2022-23816
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
Add patches for CVE-2022-29900, CVE-2022-23816 and CVE-2022-29901.
Reference:
https://lore.kernel.org/all/CAODzB9qH9WhxQ0eB+mNvmsn64bHXUVppuSTMDGJekYOPCw…
https://www.amd.com/system/files/documents/technical-guidance-for-mitigatin…
https://www.intel.com/content/www/us/en/developer/articles/technical/softwa…
Alexandre Chartre (2):
x86/bugs: Report AMD retbleed vulnerability
x86/bugs: Add AMD retbleed= boot parameter
Andrew Cooper (1):
x86/cpu/amd: Enumerate BTC_NO
Arnaldo Carvalho de Melo (5):
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy'
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools headers cpufeatures: Sync with the kernel sources
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy' - again
tools headers: Remove broken definition of __LITTLE_ENDIAN
Ben Hutchings (3):
x86: Add insn_decode_kernel()
Makefile: Set retpoline cflags based on CONFIG_CC_IS_{CLANG,GCC}
x86/xen: Fix initialisation in hypercall_page after rethunk
Borislav Petkov (7):
x86/insn: Rename insn_decode() to insn_decode_from_regs()
x86/insn: Add a __ignore_sync_check__ marker
x86/insn: Add an insn_decode() API
x86/alternative: Use insn_decode()
x86/alternative: Optimize single-byte NOPs at an arbitrary position
kvm/emulate: Fix SETcc emulation function offsets with SLS
tools/insn: Restore the relative include paths for cross building
Greg Kroah-Hartman (1):
x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Josh Poimboeuf (24):
objtool: Refactor ORC section generation
objtool: Add 'alt_group' struct
objtool: Support stack layout changes in alternatives
objtool: Support retpoline jump detection for vmlinux.o
objtool: Assume only ELF functions do sibling calls
objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
x86/xen: Support objtool validation in xen-asm.S
x86/xen: Support objtool vmlinux.o validation in xen-head.S
objtool: Support asm jump tables
objtool: Don't make .altinstructions writable
objtool: Remove reloc symbol type checks in get_alt_entry()
x86/bugs: Do IBPB fallback check only once
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Remove x86_spec_ctrl_mask
objtool: Re-add UNWIND_HINT_{SAVE_RESTORE}
KVM: VMX: Flatten __vmx_vcpu_run()
KVM: VMX: Convert launched argument to flags
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
KVM: VMX: Fix IBRS handling after vmexit
x86/speculation: Fill RSB on vmexit for IBRS
x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
Juergen Gross (4):
x86/alternative: Merge include files
x86/alternative: Support not-feature
x86/alternative: Support ALTERNATIVE_TERNARY
x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has()
Kim Phillips (3):
x86/sev: Avoid using __x86_return_thunk
x86/bugs: Enable STIBP for JMP2RET
x86/bugs: Remove apostrophe typo
Konrad Rzeszutek Wilk (1):
x86/kexec: Disable RET on kexec
Lin Yujun (2):
x86: Fix objtool build warning
Re-add padlen to the structure alt_instr
Linus Torvalds (2):
objtool: print out the symbol type when complaining about it
kvm: fix objtool relocation warning
Nathan Chancellor (1):
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
Pawan Gupta (3):
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/speculation: Disable RRSBA behavior
Peter Zijlstra (69):
x86/alternatives: Optimize optimize_nops()
x86/retpoline: Simplify retpolines
objtool: Correctly handle retpoline thunk calls
objtool: Handle per arch retpoline naming
objtool: Rework the elf_rebuild_reloc_section() logic
objtool: Add elf_create_reloc() helper
objtool: Create reloc sections implicitly
objtool: Extract elf_strtab_concat()
objtool: Extract elf_symbol_add()
objtool: Add elf_create_undef_symbol()
objtool: Keep track of retpoline call sites
objtool: Cache instruction relocs
objtool: Skip magical retpoline .altinstr_replacement
objtool/x86: Rewrite retpoline thunk calls
objtool: Fix .symtab_shndx handling for elf_create_undef_symbol()
objtool: Only rewrite unconditional retpoline thunk calls
objtool: Teach get_alt_entry() about more relocation types
objtool: Introduce CFI hash
objtool: Handle __sanitize_cov*() tail calls
objtool: Classify symbols
objtool: Explicitly avoid self modifying code in .altinstr_replacement
objtool,x86: Replace alternatives with .retpoline_sites
objtool/x86: Ignore __x86_indirect_alt_* symbols
x86/asm: Fix register order
x86/asm: Fixup odd GEN-for-each-reg.h usage
x86/retpoline: Move the retpoline thunk declarations to
nospec-branch.h
x86/retpoline: Create a retpoline thunk array
x86/alternative: Implement .retpoline_sites support
bpf,x86: Simplify computing label offsets
bpf,x86: Respect X86_FEATURE_RETPOLINE*
x86/lib/atomic64_386_32: Rename things
x86: Prepare asm files for straight-line-speculation
x86: Prepare inline-asm for straight-line-speculation
x86/alternative: Relax text_poke_bp() constraint
objtool: Add straight-line-speculation validation
x86: Add straight-line-speculation mitigation
objtool: Default ignore INT3 for unreachable
crypto: x86/poly1305 - Fixup SLS
objtool: Fix SLS validation for kcov tail-call replacement
x86/entry: Remove skip_r11rcx
x86/kvm/vmx: Make noinstr clean
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/retpoline: Cleanup some #ifdefery
x86/retpoline: Swizzle retpoline thunk
x86/retpoline: Use -mfunction-return
x86: Undo return-thunk damage
x86,objtool: Create .return_sites
x86,static_call: Use alternative RET encoding
x86/ftrace: Use alternative RET encoding
x86/bpf: Use alternative RET encoding
x86/kvm: Fix SETcc emulation for return thunks
x86/vsyscall_emu/64: Don't use RET in vsyscall emulation
x86: Use return-thunk in asm code
objtool: Treat .text.__x86.* as noinstr
x86: Add magic AMD return-thunk
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/entry: Add kernel IBRS implementation
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/bugs: Split spectre_v2_select_mitigation() and
spectre_v2_user_select_mitigation()
x86/bugs: Report Intel retbleed vulnerability
intel_idle: Disable IBRS during long idle
objtool: Update Retpoline validation
x86/xen: Rename SYS* entry points
x86/bugs: Add retbleed=ibpb
objtool: Add entry UNRET validation
x86/cpu/amd: Add Spectral Chicken
x86/common: Stamp out the stepping madness
x86/retbleed: Add fine grained Kconfig knobs
um: Add missing apply_returns()
Thadeu Lima de Souza Cascardo (4):
x86/realmode: build with -D__DISABLE_EXPORTS
x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported
efi/x86: use naked RET on mixed mode call wrapper
x86/kvm: fix FASTOP_SIZE when return thunks are enabled
Thomas Gleixner (1):
x86/static_call: Serialize __static_call_fixup() properly
Uros Bizjak (2):
KVM/VMX: Use TEST %REG,%REG instead of CMP $0,%REG in vmenter.S
KVM/nVMX: Use __vmx_vcpu_run in nested_vmx_check_vmentry_hw
Vasily Gorbik (1):
objtool: Fix elf_create_undef_symbol() endianness
.../admin-guide/kernel-parameters.txt | 25 +
Makefile | 20 +-
arch/um/kernel/um_arch.c | 8 +
arch/x86/Kconfig | 91 +-
arch/x86/Makefile | 8 +-
arch/x86/boot/compressed/efi_thunk_64.S | 2 +-
arch/x86/boot/compressed/head_64.S | 4 +-
arch/x86/boot/compressed/mem_encrypt.S | 4 +-
arch/x86/crypto/aegis128-aesni-asm.S | 48 +-
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 2 +-
arch/x86/crypto/aesni-intel_asm.S | 52 +-
arch/x86/crypto/aesni-intel_avx-x86_64.S | 40 +-
arch/x86/crypto/blake2s-core.S | 4 +-
arch/x86/crypto/blowfish-x86_64-asm_64.S | 12 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 18 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 18 +-
arch/x86/crypto/camellia-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/chacha-avx2-x86_64.S | 6 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 6 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 8 +-
arch/x86/crypto/crc32-pclmul_asm.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 2 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 2 +-
arch/x86/crypto/des3_ede-asm_64.S | 4 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 6 +-
arch/x86/crypto/nh-avx2-x86_64.S | 2 +-
arch/x86/crypto/nh-sse2-x86_64.S | 2 +-
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 38 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/serpent-avx2-asm_64.S | 16 +-
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 6 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 6 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 2 +-
arch/x86/crypto/sha1_ni_asm.S | 2 +-
arch/x86/crypto/sha1_ssse3_asm.S | 2 +-
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-avx2-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
arch/x86/crypto/sha256_ni_asm.S | 2 +-
arch/x86/crypto/sha512-avx-asm.S | 2 +-
arch/x86/crypto/sha512-avx2-asm.S | 2 +-
arch/x86/crypto/sha512-ssse3-asm.S | 2 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/twofish-i586-asm_32.S | 4 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 6 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 4 +-
arch/x86/entry/Makefile | 2 +-
arch/x86/entry/calling.h | 72 +-
arch/x86/entry/entry.S | 22 +
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 62 +-
arch/x86/entry/entry_64_compat.S | 21 +-
arch/x86/entry/thunk_32.S | 2 +-
arch/x86/entry/thunk_64.S | 2 +-
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/entry/vdso/vdso32/system_call.S | 4 +-
arch/x86/entry/vsyscall/vsyscall_emu_64.S | 3 +
arch/x86/include/asm/GEN-for-each-reg.h | 14 +-
arch/x86/include/asm/alternative-asm.h | 114 --
arch/x86/include/asm/alternative.h | 133 +-
arch/x86/include/asm/asm-prototypes.h | 17 -
arch/x86/include/asm/cpufeature.h | 41 +-
arch/x86/include/asm/cpufeatures.h | 12 +-
arch/x86/include/asm/disabled-features.h | 21 +-
arch/x86/include/asm/inat.h | 2 +-
arch/x86/include/asm/insn-eval.h | 4 +-
arch/x86/include/asm/insn.h | 28 +-
arch/x86/include/asm/linkage.h | 22 +
arch/x86/include/asm/msr-index.h | 13 +
arch/x86/include/asm/nospec-branch.h | 148 ++-
arch/x86/include/asm/paravirt.h | 2 +-
arch/x86/include/asm/qspinlock_paravirt.h | 4 +-
arch/x86/include/asm/smap.h | 5 +-
arch/x86/include/asm/static_call.h | 19 +-
arch/x86/include/asm/unwind_hints.h | 23 +-
arch/x86/kernel/acpi/wakeup_32.S | 6 +-
arch/x86/kernel/alternative.c | 356 +++++-
arch/x86/kernel/cpu/amd.c | 46 +-
arch/x86/kernel/cpu/bugs.c | 475 ++++++-
arch/x86/kernel/cpu/common.c | 61 +-
arch/x86/kernel/cpu/cpu.h | 2 +
arch/x86/kernel/cpu/hygon.c | 6 +
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/ftrace.c | 7 +-
arch/x86/kernel/ftrace_32.S | 6 +-
arch/x86/kernel/ftrace_64.S | 13 +-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 5 +
arch/x86/kernel/irqflags.S | 4 +-
arch/x86/kernel/kprobes/core.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/module.c | 15 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/relocate_kernel_32.S | 15 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/sev-es.c | 2 +-
arch/x86/kernel/sev_verify_cbit.S | 2 +-
arch/x86/kernel/static_call.c | 52 +-
arch/x86/kernel/umip.c | 2 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 23 +-
arch/x86/kvm/emulate.c | 39 +-
arch/x86/kvm/svm/vmenter.S | 11 +-
arch/x86/kvm/vmx/nested.c | 32 +-
arch/x86/kvm/vmx/run_flags.h | 8 +
arch/x86/kvm/vmx/vmenter.S | 170 +--
arch/x86/kvm/vmx/vmx.c | 78 +-
arch/x86/kvm/vmx/vmx.h | 5 +
arch/x86/kvm/x86.c | 4 +-
arch/x86/lib/atomic64_386_32.S | 88 +-
arch/x86/lib/atomic64_cx8_32.S | 18 +-
arch/x86/lib/checksum_32.S | 8 +-
arch/x86/lib/clear_page_64.S | 6 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_mc_64.S | 6 +-
arch/x86/lib/copy_page_64.S | 10 +-
arch/x86/lib/copy_user_64.S | 14 +-
arch/x86/lib/csum-copy_64.S | 2 +-
arch/x86/lib/error-inject.c | 3 +-
arch/x86/lib/getuser.S | 22 +-
arch/x86/lib/hweight.S | 6 +-
arch/x86/lib/inat.c | 2 +-
arch/x86/lib/insn-eval.c | 6 +-
arch/x86/lib/insn.c | 222 +++-
arch/x86/lib/iomap_copy_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 14 +-
arch/x86/lib/memmove_64.S | 11 +-
arch/x86/lib/memset_64.S | 8 +-
arch/x86/lib/msr-reg.S | 4 +-
arch/x86/lib/putuser.S | 6 +-
arch/x86/lib/retpoline.S | 118 +-
arch/x86/math-emu/div_Xsig.S | 2 +-
arch/x86/math-emu/div_small.S | 2 +-
arch/x86/math-emu/mul_Xsig.S | 6 +-
arch/x86/math-emu/polynom_Xsig.S | 2 +-
arch/x86/math-emu/reg_norm.S | 6 +-
arch/x86/math-emu/reg_round.S | 2 +-
arch/x86/math-emu/reg_u_add.S | 2 +-
arch/x86/math-emu/reg_u_div.S | 2 +-
arch/x86/math-emu/reg_u_mul.S | 2 +-
arch/x86/math-emu/reg_u_sub.S | 2 +-
arch/x86/math-emu/round_Xsig.S | 4 +-
arch/x86/math-emu/shr_Xsig.S | 8 +-
arch/x86/math-emu/wm_shrx.S | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 6 +
arch/x86/net/bpf_jit_comp.c | 185 ++-
arch/x86/net/bpf_jit_comp32.c | 22 +-
arch/x86/platform/efi/efi_stub_32.S | 2 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
arch/x86/platform/efi/efi_thunk_64.S | 5 +-
arch/x86/platform/olpc/xo1-wakeup.S | 6 +-
arch/x86/power/hibernate_asm_32.S | 4 +-
arch/x86/power/hibernate_asm_64.S | 4 +-
arch/x86/um/checksum_32.S | 4 +-
arch/x86/um/setjmp_32.S | 2 +-
arch/x86/um/setjmp_64.S | 2 +-
arch/x86/xen/Makefile | 1 -
arch/x86/xen/setup.c | 6 +-
arch/x86/xen/xen-asm.S | 43 +-
arch/x86/xen/xen-head.S | 6 +-
arch/x86/xen/xen-ops.h | 6 +-
drivers/base/cpu.c | 8 +
drivers/idle/intel_idle.c | 43 +-
include/linux/cpu.h | 2 +
include/linux/kvm_host.h | 2 +-
include/linux/objtool.h | 14 +-
samples/ftrace/ftrace-direct-modify.c | 4 +-
samples/ftrace/ftrace-direct-too.c | 2 +-
samples/ftrace/ftrace-direct.c | 2 +-
scripts/Makefile.build | 6 +
scripts/link-vmlinux.sh | 6 +
security/Kconfig | 11 -
tools/arch/x86/include/asm/cpufeatures.h | 12 +-
.../arch/x86/include/asm/disabled-features.h | 21 +-
tools/arch/x86/include/asm/inat.h | 2 +-
tools/arch/x86/include/asm/insn.h | 28 +-
tools/arch/x86/include/asm/msr-index.h | 13 +
tools/arch/x86/lib/inat.c | 2 +-
tools/arch/x86/lib/insn.c | 222 +++-
tools/arch/x86/lib/memcpy_64.S | 14 +-
tools/arch/x86/lib/memset_64.S | 8 +-
.../asm/{alternative-asm.h => alternative.h} | 0
tools/include/linux/kconfig.h | 67 +
tools/include/linux/objtool.h | 14 +-
.../Documentation/stack-validation.txt | 16 +-
tools/objtool/Makefile | 4 -
tools/objtool/arch.h | 13 +-
tools/objtool/arch/x86/decode.c | 58 +-
tools/objtool/builtin-check.c | 6 +-
tools/objtool/builtin-orc.c | 6 +-
tools/objtool/builtin.h | 3 +-
tools/objtool/cfi.h | 2 +
tools/objtool/check.c | 1131 +++++++++++++----
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 230 ++--
tools/objtool/elf.h | 20 +-
tools/objtool/objtool.c | 2 +
tools/objtool/objtool.h | 5 +-
tools/objtool/orc_gen.c | 324 ++---
tools/objtool/special.c | 22 +-
tools/objtool/sync-check.sh | 17 +-
tools/objtool/weak.c | 7 +-
tools/perf/check-headers.sh | 15 +-
207 files changed, 4323 insertions(+), 1902 deletions(-)
create mode 100644 arch/x86/entry/entry.S
delete mode 100644 arch/x86/include/asm/alternative-asm.h
create mode 100644 arch/x86/kvm/vmx/run_flags.h
rename tools/include/asm/{alternative-asm.h => alternative.h} (100%)
create mode 100644 tools/include/linux/kconfig.h
--
2.20.1
1
137

[PATCH openEuler-1.0-LTS] KVM: x86: do not report a vCPU as preempted outside instruction boundaries
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Paolo Bonzini <pbonzini(a)redhat.com>
mainline inclusion
from mainline-v5.19-rc2
commit 6cd88243c7e03845a450795e134b488fc2afb736
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PJ7H
CVE: CVE-2022-39189
----------------------------------------
If a vCPU is outside guest mode and is scheduled out, it might be in the
process of making a memory access. A problem occurs if another vCPU uses
the PV TLB flush feature during the period when the vCPU is scheduled
out, and a virtual address has already been translated but has not yet
been accessed, because this is equivalent to using a stale TLB entry.
To avoid this, only report a vCPU as preempted if sure that the guest
is at an instruction boundary. A rescheduling request will be delivered
to the host physical CPU as an external interrupt, so for simplicity
consider any vmexit *not* instruction boundary except for external
interrupts.
It would in principle be okay to report the vCPU as preempted also
if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the
vmentry/vmexit overhead unnecessarily, and optimistic spinning is
also unlikely to succeed. However, leave it for later because right
now kvm_vcpu_check_block() is doing memory accesses. Even
though the TLB flush issue only applies to virtual memory address,
it's very much preferrable to be conservative.
Reported-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
conflict:
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/include/asm/kvm_host.h | 3 +++
arch/x86/kvm/svm.c | 3 +++
arch/x86/kvm/vmx.c | 1 +
arch/x86/kvm/x86.c | 25 +++++++++++++++++++++++++
4 files changed, 32 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 6549c20c958c..7afb2cb2d42c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -520,6 +520,7 @@ struct kvm_vcpu_arch {
u64 ia32_misc_enable_msr;
u64 smbase;
u64 smi_count;
+ bool at_instruction_boundary;
bool tpr_access_reporting;
u64 ia32_xss;
u64 microcode_version;
@@ -935,6 +936,8 @@ struct kvm_vcpu_stat {
u64 utime;
u64 stime;
u64 gtime;
+ u64 preemption_reported;
+ u64 preemption_other;
};
struct x86_instruction_info;
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 46567343680f..f611ecdfc145 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -6205,6 +6205,9 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
static void svm_handle_external_intr(struct kvm_vcpu *vcpu)
{
+ if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
+ vcpu->arch.at_instruction_boundary = true;
+
local_irq_enable();
/*
* We must have an instruction with interrupts enabled, so
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 7ab18b5a8e96..4164016cf105 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -10597,6 +10597,7 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu)
[cs]"i"(__KERNEL_CS)
);
}
+ vcpu->arch.at_instruction_boundary = true;
}
STACK_FRAME_NON_STANDARD(vmx_handle_external_intr);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 5da2811219ec..c61cab768d2a 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -186,6 +186,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
{ "halt_successful_poll", VCPU_STAT(halt_successful_poll) },
{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll) },
{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid) },
+ { "preemption_reported", VCPU_STAT(preemption_reported) },
+ { "preemption_other", VCPU_STAT(preemption_other) },
{ "halt_wakeup", VCPU_STAT(halt_wakeup) },
{ "hypercalls", VCPU_STAT(hypercalls) },
{ "request_irq", VCPU_STAT(request_irq_exits) },
@@ -231,6 +233,8 @@ struct dfx_kvm_stats_debugfs_item dfx_debugfs_entries[] = {
DFX_STAT("halt_exits", halt_exits),
DFX_STAT("halt_successful_poll", halt_successful_poll),
DFX_STAT("halt_attempted_poll", halt_attempted_poll),
+ DFX_STAT("preemption_reported", preemption_reported),
+ DFX_STAT("preemption_other", preemption_other),
DFX_STAT("halt_wakeup", halt_wakeup),
DFX_STAT("request_irq", request_irq_exits),
DFX_STAT("irq_exits", irq_exits),
@@ -3314,6 +3318,20 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
{
+ /*
+ * The vCPU can be marked preempted if and only if the VM-Exit was on
+ * an instruction boundary and will not trigger guest emulation of any
+ * kind (see vcpu_run). Vendor specific code controls (conservatively)
+ * when this is true, for example allowing the vCPU to be marked
+ * preempted if and only if the VM-Exit was due to a host interrupt.
+ */
+ if (!vcpu->arch.at_instruction_boundary) {
+ vcpu->stat.preemption_other++;
+ return;
+ }
+
+ vcpu->stat.preemption_reported++;
+
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -7920,6 +7938,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
vcpu->arch.l1tf_flush_l1d = true;
for (;;) {
+ /*
+ * If another guest vCPU requests a PV TLB flush in the middle
+ * of instruction emulation, the rest of the emulation could
+ * use a stale page translation. Assume that any code after
+ * this point can start executing an instruction.
+ */
+ vcpu->arch.at_instruction_boundary = false;
if (kvm_vcpu_running(vcpu)) {
r = vcpu_enter_guest(vcpu);
} else {
--
2.25.1
1
0

[PATCH] KVM: arm64: Write arch.mdcr_el2 changes since last vcpu_load on VHE
by Laibin Qiu 14 Sep '22
by Laibin Qiu 14 Sep '22
14 Sep '22
From: Andrew Murray <andrew.murray(a)arm.com>
mainline inclusion
from mainline-v5.6
commit 4942dc6638b07b5326b6d2faa142635c559e7cd5
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QR6C
CVE: NA
-------------
On VHE systems arch.mdcr_el2 is written to mdcr_el2 at vcpu_load time to
set options for self-hosted debug and the performance monitors
extension.
Unfortunately the value of arch.mdcr_el2 is not calculated until
kvm_arm_setup_debug() in the run loop after the vcpu has been loaded.
This means that the initial brief iterations of the run loop use a zero
value of mdcr_el2 - until the vcpu is preempted. This also results in a
delay between changes to vcpu->guest_debug taking effect.
Fix this by writing to mdcr_el2 in kvm_arm_setup_debug() on VHE systems
when a change to arch.mdcr_el2 has been detected.
Fixes: d5a21bcc2995 ("KVM: arm64: Move common VHE/non-VHE trap config in separate functions")
Cc: <stable(a)vger.kernel.org> # 4.17.x-
Suggested-by: James Morse <james.morse(a)arm.com>
Acked-by: Will Deacon <will(a)kernel.org>
Reviewed-by: Marc Zyngier <maz(a)kernel.org>
Signed-off-by: Andrew Murray <andrew.murray(a)arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas(a)arm.com>
Signed-off-by: Zengruan Ye <yezengruan(a)huawei.com>
Reviewed-by: Keqian Zhu <zhukeqian1(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
arch/arm64/kvm/debug.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/kvm/debug.c b/arch/arm64/kvm/debug.c
index 00d422336a45..4e722d73a3c3 100644
--- a/arch/arm64/kvm/debug.c
+++ b/arch/arm64/kvm/debug.c
@@ -112,7 +112,7 @@ void kvm_arm_reset_debug_ptr(struct kvm_vcpu *vcpu)
void kvm_arm_setup_debug(struct kvm_vcpu *vcpu)
{
bool trap_debug = !(vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY);
- unsigned long mdscr;
+ unsigned long mdscr, orig_mdcr_el2 = vcpu->arch.mdcr_el2;
trace_kvm_arm_setup_debug(vcpu, vcpu->guest_debug);
@@ -208,6 +208,10 @@ void kvm_arm_setup_debug(struct kvm_vcpu *vcpu)
if (vcpu_read_sys_reg(vcpu, MDSCR_EL1) & (DBG_MDSCR_KDE | DBG_MDSCR_MDE))
vcpu->arch.flags |= KVM_ARM64_DEBUG_DIRTY;
+ /* Write mdcr_el2 changes since vcpu_load on VHE systems */
+ if (has_vhe() && orig_mdcr_el2 != vcpu->arch.mdcr_el2)
+ write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
+
trace_kvm_arm_set_dreg32("MDCR_EL2", vcpu->arch.mdcr_el2);
trace_kvm_arm_set_dreg32("MDSCR_EL1", vcpu_read_sys_reg(vcpu, MDSCR_EL1));
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] perf bench futex-wake: Restore thread count default to online CPU count
by tangbin 13 Sep '22
by tangbin 13 Sep '22
13 Sep '22
From: Tommi Rantala <tommi.t.rantala(a)nokia.com>
stable inclusion
from stable-v4.19.111
commit 5e8dff99645e574122aef5dec91b8803339a6362
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QSAP
CVE: NA
--------------------------------
commit f649bd9dd5d5004543bbc3c50b829577b49f5d75 upstream.
Since commit 3b2323c2c1c4 ("perf bench futex: Use cpumaps") the default
number of threads the benchmark uses got changed from number of online
CPUs to zero:
$ perf bench futex wake
# Running 'futex/wake' benchmark:
Run summary [PID 15930]: blocking on 0 threads (at [private] futex 0x558b8ee4bfac), waking up 1 at a time.
[Run 1]: Wokeup 0 of 0 threads in 0.0000 ms
[...]
[Run 10]: Wokeup 0 of 0 threads in 0.0000 ms
Wokeup 0 of 0 threads in 0.0004 ms (+-40.82%)
Restore the old behavior by grabbing the number of online CPUs via
cpu->nr:
$ perf bench futex wake
# Running 'futex/wake' benchmark:
Run summary [PID 18356]: blocking on 8 threads (at [private] futex 0xb3e62c), waking up 1 at a time.
[Run 1]: Wokeup 8 of 8 threads in 0.0260 ms
[...]
[Run 10]: Wokeup 8 of 8 threads in 0.0270 ms
Wokeup 8 of 8 threads in 0.0419 ms (+-24.35%)
Fixes: 3b2323c2c1c4 ("perf bench futex: Use cpumaps")
Signed-off-by: Tommi Rantala <tommi.t.rantala(a)nokia.com>
Tested-by: Arnaldo Carvalho de Melo <acme(a)redhat.com>
Cc: Alexander Shishkin <alexander.shishkin(a)linux.intel.com>
Cc: Darren Hart <dvhart(a)infradead.org>
Cc: Davidlohr Bueso <dave(a)stgolabs.net>
Cc: Jiri Olsa <jolsa(a)redhat.com>
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: Namhyung Kim <namhyung(a)kernel.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lore.kernel.org/lkml/20200305083714.9381-3-tommi.t.rantala@nokia.com
Signed-off-by: Arnaldo Carvalho de Melo <acme(a)redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
tools/perf/bench/futex-wake.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bench/futex-wake.c b/tools/perf/bench/futex-wake.c
index e8181ad7d088..e62006342b18 100644
--- a/tools/perf/bench/futex-wake.c
+++ b/tools/perf/bench/futex-wake.c
@@ -42,7 +42,7 @@ static bool done = false, silent = false, fshared = false;
static pthread_mutex_t thread_lock;
static pthread_cond_t thread_parent, thread_worker;
static struct stats waketime_stats, wakeup_stats;
-static unsigned int ncpus, threads_starting, nthreads = 0;
+static unsigned int threads_starting, nthreads = 0;
static int futex_flag = 0;
static const struct option options[] = {
@@ -140,7 +140,7 @@ int bench_futex_wake(int argc, const char **argv)
sigaction(SIGINT, &act, NULL);
if (!nthreads)
- nthreads = ncpus;
+ nthreads = cpu->nr;
worker = calloc(nthreads, sizeof(*worker));
if (!worker)
--
2.18.4
1
0

[PATCH openEuler-1.0-LTS] netfilter: nf_conntrack_irc: Tighten matching on DCC message
by Yongqiang Liu 13 Sep '22
by Yongqiang Liu 13 Sep '22
13 Sep '22
From: David Leadbeater <dgl(a)dgl.cx>
mainline inclusion
from mainline-v6.0-rc6
commit e8d5dfd1d8747b56077d02664a8838c71ced948e
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5OWZ7
CVE: CVE-2022-2663
---------------------------
CTCP messages should only be at the start of an IRC message, not
anywhere within it.
While the helper only decodes packes in the ORIGINAL direction, its
possible to make a client send a CTCP message back by empedding one into
a PING request. As-is, thats enough to make the helper believe that it
saw a CTCP message.
Fixes: 869f37d8e48f ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port")
Signed-off-by: David Leadbeater <dgl(a)dgl.cx>
Signed-off-by: Florian Westphal <fw(a)strlen.de>
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nf_conntrack_irc.c | 34 ++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/net/netfilter/nf_conntrack_irc.c b/net/netfilter/nf_conntrack_irc.c
index 4099f4d79bae..819fc0df233f 100644
--- a/net/netfilter/nf_conntrack_irc.c
+++ b/net/netfilter/nf_conntrack_irc.c
@@ -150,15 +150,37 @@ static int help(struct sk_buff *skb, unsigned int protoff,
data = ib_ptr;
data_limit = ib_ptr + skb->len - dataoff;
- /* strlen("\1DCC SENT t AAAAAAAA P\1\n")=24
- * 5+MINMATCHLEN+strlen("t AAAAAAAA P\1\n")=14 */
- while (data < data_limit - (19 + MINMATCHLEN)) {
- if (memcmp(data, "\1DCC ", 5)) {
+ /* Skip any whitespace */
+ while (data < data_limit - 10) {
+ if (*data == ' ' || *data == '\r' || *data == '\n')
+ data++;
+ else
+ break;
+ }
+
+ /* strlen("PRIVMSG x ")=10 */
+ if (data < data_limit - 10) {
+ if (strncasecmp("PRIVMSG ", data, 8))
+ goto out;
+ data += 8;
+ }
+
+ /* strlen(" :\1DCC SENT t AAAAAAAA P\1\n")=26
+ * 7+MINMATCHLEN+strlen("t AAAAAAAA P\1\n")=26
+ */
+ while (data < data_limit - (21 + MINMATCHLEN)) {
+ /* Find first " :", the start of message */
+ if (memcmp(data, " :", 2)) {
data++;
continue;
}
+ data += 2;
+
+ /* then check that place only for the DCC command */
+ if (memcmp(data, "\1DCC ", 5))
+ goto out;
data += 5;
- /* we have at least (19+MINMATCHLEN)-5 bytes valid data left */
+ /* we have at least (21+MINMATCHLEN)-(2+5) bytes valid data left */
iph = ip_hdr(skb);
pr_debug("DCC found in master %pI4:%u %pI4:%u\n",
@@ -174,7 +196,7 @@ static int help(struct sk_buff *skb, unsigned int protoff,
pr_debug("DCC %s detected\n", dccprotos[i]);
/* we have at least
- * (19+MINMATCHLEN)-5-dccprotos[i].matchlen bytes valid
+ * (21+MINMATCHLEN)-7-dccprotos[i].matchlen bytes valid
* data left (== 14/13 bytes) */
if (parse_dcc(data, data_limit, &dcc_ip,
&dcc_port, &addr_beg_p, &addr_end_p)) {
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] selftests/bpf: Enlarge select() timeout for test_maps
by tangbin 13 Sep '22
by tangbin 13 Sep '22
13 Sep '22
From: Li Zhijian <lizhijian(a)cn.fujitsu.com>
stable inclusion
from stable-v4.19.207
commit 4c48bd3aa1a33cb3e8a0eca8330b8f100f43d895
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QR5E
CVE: NA
--------------------------------
commit 2d82d73da35b72b53fe0d96350a2b8d929d07e42
0Day robot observed that it's easily timeout on a heavy load host.
-------------------
# selftests: bpf: test_maps
# Fork 1024 tasks to 'test_update_delete'
# Fork 1024 tasks to 'test_update_delete'
# Fork 100 tasks to 'test_hashmap'
# Fork 100 tasks to 'test_hashmap_percpu'
# Fork 100 tasks to 'test_hashmap_sizes'
# Fork 100 tasks to 'test_hashmap_walk'
# Fork 100 tasks to 'test_arraymap'
# Fork 100 tasks to 'test_arraymap_percpu'
# Failed sockmap unexpected timeout
not ok 3 selftests: bpf: test_maps # exit=1
# selftests: bpf: test_lru_map
# nr_cpus:8
-------------------
Since this test will be scheduled by 0Day to a random host that could have
only a few cpus(2-8), enlarge the timeout to avoid a false NG report.
In practice, i tried to pin it to only one cpu by 'taskset 0x01 ./test_maps',
and knew 10S is likely enough, but i still perfer to a larger value 30.
Reported-by: kernel test robot <lkp(a)intel.com>
Signed-off-by: Li Zhijian <lizhijian(a)cn.fujitsu.com>
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Acked-by: Song Liu <songliubraving(a)fb.com>
Link: https://lore.kernel.org/bpf/20210820015556.23276-2-lizhijian@cn.fujitsu.com
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
tools/testing/selftests/bpf/test_maps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/test_maps.c b/tools/testing/selftests/bpf/test_maps.c
index 9b552c0fc47d..e5e62cb57ff7 100644
--- a/tools/testing/selftests/bpf/test_maps.c
+++ b/tools/testing/selftests/bpf/test_maps.c
@@ -796,7 +796,7 @@ static void test_sockmap(int tasks, void *data)
FD_ZERO(&w);
FD_SET(sfd[3], &w);
- to.tv_sec = 1;
+ to.tv_sec = 30;
to.tv_usec = 0;
s = select(sfd[3] + 1, &w, NULL, NULL, &to);
if (s == -1) {
--
2.18.4
1
0

[PATCH openEuler-5.10 1/3] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Zheng Zengkai 13 Sep '22
by Zheng Zengkai 13 Sep '22
13 Sep '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
stable inclusion
from stable-v5.10.137
commit 1a4b18b1ff11ba26f9a852019d674fde9d1d1cff
category: bugfix
bugzilla: 187457, https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2 upstream.
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 560a93aad5b6..7b0497da2d94 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3638,6 +3638,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3648,6 +3649,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3668,7 +3670,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.20.1
1
2

13 Sep '22
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
add-openeuler-head_loongarch.py | 39 +++++++++++++++++++
modify_message_loongarch.py | 62 ++++++++++++++++++++++++++++++
usage | 68 +++++++++++++++++++++++++++++++++
3 files changed, 169 insertions(+)
create mode 100755 add-openeuler-head_loongarch.py
create mode 100755 modify_message_loongarch.py
create mode 100644 usage
diff --git a/add-openeuler-head_loongarch.py b/add-openeuler-head_loongarch.py
new file mode 100755
index 000000000000..8219f6b6d8d2
--- /dev/null
+++ b/add-openeuler-head_loongarch.py
@@ -0,0 +1,39 @@
+#!/usr/local/bin/python3
+
+import argparse
+import sys
+import os
+import textwrap
+
+dir = os.path.split(os.path.realpath(__file__))[0]
+
+def parser_arg():
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=textwrap.dedent('''\
+ Use git rebase to add header for commits on current branch
+ Note:
+ Make sure modify_message_loonarch.py be in the same dir
+ '''))
+
+ parser.add_argument('-n', type=str, default="", help='add head to last n patch')
+ parser.add_argument('--bugzilla', type=str, help='bugzilla id', required=True)
+ return parser.parse_args()
+
+def main():
+ args = parser_arg()
+
+ if args.n == "":
+ args.n = os.popen("git log --oneline origin/openEuler-22.09..HEAD | wc -l").readline().strip("\n")
+
+ command ="git rebase --onto HEAD~" + args.n + " HEAD~" + args.n + " --exec \""
+ command += dir + "/modify_message_loongarch.py "
+ command += " --bugzilla " + args.bugzilla + " "
+ command += "\""
+ print(command)
+ os.system(command)
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ main()
+
diff --git a/modify_message_loongarch.py b/modify_message_loongarch.py
new file mode 100755
index 000000000000..6853178794f7
--- /dev/null
+++ b/modify_message_loongarch.py
@@ -0,0 +1,62 @@
+#!/usr/local/bin/python3
+
+import argparse
+import sys
+import os
+import re
+
+def parser_arg():
+ parser = argparse.ArgumentParser(description='add head to last patch')
+ parser.add_argument('--bugzilla', type=str, help='bugzilla id', required=True)
+ return parser.parse_args()
+
+args = parser_arg()
+
+def add_head_loongarch(title):
+ head = [
+ "LoongArch inclusion\n",
+ "category: feature\n",
+ "bugzilla: " + args.bugzilla + "\n",
+ "\n",
+ "--------------------------------\n",
+ "\n",
+ ]
+ return head
+
+def add_head():
+ MSG = ".git/TEMP_COMMIT_MSG"
+ message = os.popen("git log -n 1 --pretty=%B").readlines()
+ find = 0
+
+ title = message[0].strip("\n");
+
+ # there is areadly a head
+ if title[0] == "[":
+ return
+
+ if find == 0:
+ head = add_head_loongarch(title)
+ if head:
+ find = 1
+
+ if message[1] == "\t\n":
+ post = 1;
+ else:
+ post = 2;
+
+ message[post:post] = head
+
+ f = open(MSG, 'w')
+ for line in message:
+ f.write(line)
+ f.close()
+
+ os.system("git commit --amend -F " + MSG)
+
+def main():
+ add_head()
+ return 0
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ main()
diff --git a/usage b/usage
new file mode 100644
index 000000000000..97c9bd7e05da
--- /dev/null
+++ b/usage
@@ -0,0 +1,68 @@
+Usage:
+./add-openeuler-head_loongarch.py -n=2 --bugzilla=https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+-n to specify the number of patches to add header to.
+
+before adding header:
+
+commit f0f6daca3f4677e3aa2817e204e2281d0d999614
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Thu Sep 8 14:32:38 2022 +0800
+
+ irqchip: fix phytium 2500 compile error
+
+ commit 75378552d2ee ("APCI: irq: Add support for multiple GSI domains")
+ changed the parameter type,fix it accordingly.
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+commit 6c3213c6068534e84e65cf1f2aff0ed18810cc4b
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Wed Sep 7 13:24:03 2022 +0800
+
+ LoongArch: defconfig: add openeuler default config
+
+ add openeuler default config for LoongArch,the difference with
+ loongson3_defconfig is following:
+ CONFIG_DEBUG_INFO=y
+ CONFIG_MODULE_SIG=y
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+After adding header:
+
+commit 94e56df31f6c6b8177687b7f7db6362d62183cd5 (HEAD -> openEuler-22.09)
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Thu Sep 8 14:32:38 2022 +0800
+
+ irqchip: fix phytium 2500 compile error
+
+ LoongArch inclusion
+ category: feature
+ bugzilla: https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+ --------------------------------
+
+ commit 75378552d2ee ("APCI: irq: Add support for multiple GSI domains")
+ changed the parameter type,fix it accordingly.
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+commit 7e7e79233dce5cef575c35ab40b67982919eb1ca
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Wed Sep 7 13:24:03 2022 +0800
+
+ LoongArch: defconfig: add openeuler default config
+
+ LoongArch inclusion
+ category: feature
+ bugzilla: https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+ --------------------------------
+
+ add openeuler default config for LoongArch,the difference with
+ loongson3_defconfig is following:
+ CONFIG_DEBUG_INFO=y
+ CONFIG_MODULE_SIG=y
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
--
2.20.1
1
0

08 Sep '22
Some BPF programs compiled on s390 fail to load, because s390
arch-specific linux headers contain float and double types.
Introduce support for such types by representing them using the new
BTF_KIND_FLOAT. This series deals with libbpf, bpftool, in-kernel BTF
parser as well as selftests and documentation.
Ilya Leoshkevich (6):
tools/bpftool: Add BTF_KIND_FLOAT support
selftests/bpf: Use the 25th bit in the "invalid BTF_INFO" test
bpf: Add BTF_KIND_FLOAT support
selftest/bpf: Add BTF_KIND_FLOAT tests
selftests/bpf: Add BTF_KIND_FLOAT to the existing deduplication tests
bpf: Document BTF_KIND_FLOAT in btf.rst
Documentation/bpf/btf.rst | 17 +-
kernel/bpf/btf.c | 83 ++++++++-
tools/bpf/bpftool/btf.c | 8 +
tools/bpf/bpftool/btf_dumper.c | 1 +
tools/testing/selftests/bpf/btf_helpers.c | 4 +
tools/testing/selftests/bpf/prog_tests/btf.c | 176 +++++++++++++++++--
tools/testing/selftests/bpf/test_btf.h | 3 +
7 files changed, 275 insertions(+), 17 deletions(-)
--
2.20.1
1
6
Thadeu Lima de Souza Cascardo (3):
netfilter: nf_tables: do not allow SET_ID to refer to another table
netfilter: nf_tables: do not allow CHAIN_ID to refer to another table
netfilter: nf_tables: do not allow RULE_ID to refer to another chain
net/netfilter/nf_tables_api.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
--
2.31.1
1
3

[PATCH openEuler-5.10-LTS 1/3] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Zheng Zengkai 07 Sep '22
by Zheng Zengkai 07 Sep '22
07 Sep '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
conflict:
net/netfilter/nf_tables_api.c
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 560a93aad5b6..7b0497da2d94 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3638,6 +3638,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3648,6 +3649,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3668,7 +3670,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.20.1
1
2
*** BLURB HERE ***
Chen Zhongjin (2):
profiling: fix shift too large makes kernel panic
kprobes: Forbid probing on trampoline and BPF code areas
Dan Carpenter (1):
kfifo: fix kfifo_to_user() return type
David Howells (1):
vfs: Check the truncate maximum size in inode_newsize_ok()
Duoming Zhou (1):
mtd: sm_ftl: Fix deadlock caused by cancel_work_sync in sm_release
Eric Dumazet (1):
tcp: fix over estimation in sk_forced_mem_schedule()
Eric Whitney (1):
ext4: fix extent status tree race in writeback error recovery path
Hector Martin (1):
locking/atomic: Make test_and_*_bit() ordered on failure
Ilpo Järvinen (1):
serial: 8250_dw: Store LSR into lsr_saved_flags in
dw8250_tx_wait_empty()
Jason A. Donenfeld (1):
fs: check FMODE_LSEEK to control internal pipe splicing
Johan Hovold (1):
x86/pmem: Fix platform-device leak in error path
Kiselev, Oleg (1):
ext4: avoid resizing to a partial cluster size
Kuniyuki Iwashima (36):
ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
ip: Fix data-races around sysctl_ip_nonlocal_bind.
ip: Fix a data-race around sysctl_fwmark_reflect.
tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept.
tcp: Fix data-races around sysctl_tcp_mtu_probing.
tcp: Fix a data-race around sysctl_tcp_probe_threshold.
tcp: Fix a data-race around sysctl_tcp_probe_interval.
igmp: Fix data-races around sysctl_igmp_llm_reports.
igmp: Fix a data-race around sysctl_igmp_max_memberships.
tcp: Fix data-races around sysctl_tcp_reordering.
tcp: Fix data-races around some timeout sysctl knobs.
tcp: Fix a data-race around sysctl_tcp_notsent_lowat.
tcp: Fix a data-race around sysctl_tcp_tw_reuse.
tcp: Fix data-races around sysctl_tcp_fastopen.
tcp: Fix a data-race around sysctl_tcp_early_retrans.
tcp: Fix data-races around sysctl_tcp_recovery.
tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts.
tcp: Fix data-races around sysctl_tcp_slow_start_after_idle.
tcp: Fix a data-race around sysctl_tcp_retrans_collapse.
tcp: Fix a data-race around sysctl_tcp_stdurg.
tcp: Fix a data-race around sysctl_tcp_rfc1337.
tcp: Fix data-races around sysctl_tcp_max_reordering.
tcp: Fix data-races around sysctl_tcp_dsack.
tcp: Fix a data-race around sysctl_tcp_app_win.
tcp: Fix a data-race around sysctl_tcp_adv_win_scale.
tcp: Fix a data-race around sysctl_tcp_frto.
tcp: Fix a data-race around sysctl_tcp_nometrics_save.
tcp: Fix a data-race around sysctl_tcp_challenge_ack_limit.
net: ping6: Fix memleak in ipv6_renew_options().
igmp: Fix data-races around sysctl_igmp_qrv.
tcp: Fix a data-race around sysctl_tcp_min_tso_segs.
tcp: Fix a data-race around sysctl_tcp_min_rtt_wlen.
tcp: Fix a data-race around sysctl_tcp_autocorking.
tcp: Fix a data-race around sysctl_tcp_invalid_ratelimit.
tcp: Fix a data-race around sysctl_tcp_comp_sack_delay_ns.
tcp: Fix a data-race around sysctl_tcp_comp_sack_nr.
Lukas Czerner (1):
ext4: make sure ext4_append() always allocates new block
Matthias May (1):
geneve: do not use RT_TOS for IPv6 flowlabel
Miaohe Lin (1):
mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region
Nicolas Saenz Julienne (1):
nohz/full, sched/rt: Fix missed tick-reenabling bug in
dequeue_task_rt()
Theodore Ts'o (1):
ext4: update s_overhead_clusters in the superblock during an on-line
resize
Trond Myklebust (2):
NFSv4/pnfs: Fix a use-after-free bug in open
SUNRPC: Reinitialise the backchannel request buffers before reuse
Uwe Kleine-König (1):
mtd: st_spi_fsm: Add a clk_disable_unprepare() in .probe()'s error
path
Vincent Mailhol (1):
can: error: specify the values of data[5..7] of CAN error frames
Wang Cheng (1):
mm/mempolicy: fix uninit-value in mpol_rebind_policy()
Xiu Jianfeng (1):
selinux: Add boundary check in put_entry()
Yang Xu (1):
fs: Add missing umask strip in vfs_tmpfile
Yang Yingliang (1):
bus: hisi_lpc: fix missing platform_device_put() in
hisi_lpc_acpi_probe()
Yonglong Li (1):
tcp: make retransmitted SKB fit into the send window
Zhang Xianwei (1):
NFSv4.1: RECLAIM_COMPLETE must handle EACCES
huhai (1):
ACPI: LPSS: Fix missing check in register_device_clock()
Documentation/atomic_bitops.txt | 2 +-
arch/x86/kernel/pmem.c | 7 ++++-
drivers/acpi/acpi_lpss.c | 3 ++
drivers/bus/hisi_lpc.c | 10 +++---
drivers/mtd/devices/st_spi_fsm.c | 8 +++--
drivers/mtd/sm_ftl.c | 2 +-
drivers/net/geneve.c | 3 +-
drivers/tty/serial/8250/8250_dw.c | 3 ++
fs/attr.c | 2 ++
fs/ext4/inode.c | 7 +++++
fs/ext4/namei.c | 16 ++++++++++
fs/ext4/resize.c | 11 +++++++
fs/namei.c | 2 ++
fs/nfs/nfs4proc.c | 14 ++++++---
fs/splice.c | 10 +++---
include/asm-generic/bitops/atomic.h | 6 ----
include/linux/kfifo.h | 2 +-
include/net/inet_sock.h | 5 +--
include/net/ip.h | 4 +--
include/net/tcp.h | 11 ++++---
include/uapi/linux/can/error.h | 5 ++-
kernel/kprobes.c | 3 +-
kernel/profile.c | 7 +++++
kernel/sched/rt.c | 15 +++++----
mm/mempolicy.c | 2 +-
mm/mmap.c | 1 -
net/ipv4/af_inet.c | 2 +-
net/ipv4/igmp.c | 47 +++++++++++++++++------------
net/ipv4/route.c | 2 +-
net/ipv4/tcp.c | 12 +++++---
net/ipv4/tcp_fastopen.c | 4 +--
net/ipv4/tcp_input.c | 39 ++++++++++++++----------
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv4/tcp_metrics.c | 5 +--
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 46 +++++++++++++++++-----------
net/ipv4/tcp_recovery.c | 6 ++--
net/ipv4/tcp_timer.c | 14 ++++-----
net/ipv6/ping.c | 6 ++++
net/sctp/protocol.c | 2 +-
net/sunrpc/backchannel_rqst.c | 14 +++++++++
security/selinux/ss/policydb.h | 2 ++
42 files changed, 240 insertions(+), 126 deletions(-)
--
2.25.1
1
64

07 Sep '22
Chunguang Xu (1):
block: fix the problem of io_ticks becoming smaller
Dan Carpenter (1):
acpi/nfit: improve bounds checking for 'func'
Erik Kaneda (2):
ACPICA: Do not increment operation_region reference counts for field
units
ACPICA: Disassembler: create buffer fields in ACPI_PARSE_LOAD_PASS1
Francesco Pollicino (1):
block, bfq: save & resume weight on a queue merge/split
Jiasheng Jiang (1):
ACPI: APD: Check for NULL pointer after calling devm_ioremap()
Mark Langsdorf (2):
ACPI: custom_method: fix a possible memory leak
ACPI: custom_method: fix potential use-after-free issue
Maximilian Luz (1):
ACPICA: Fix exception code class checks
Qinglang Miao (1):
ACPI: configfs: add missing check after
configfs_register_default_group()
Robin Murphy (1):
ACPI/IORT: Check node revision for PMCG resources
Tuan Phan (1):
ACPI/IORT: Fix PMCG node single ID mapping handling
zhengbin (1):
blk-mq: Fix memory leak in blk_mq_init_allocated_queue error handling
block/bfq-iosched.c | 2 ++
block/bfq-iosched.h | 9 +++++++++
block/bio.c | 2 +-
block/blk-mq.c | 9 ++++++---
drivers/acpi/acpi_apd.c | 2 ++
drivers/acpi/acpi_configfs.c | 7 ++++++-
drivers/acpi/acpica/dsfield.c | 2 +-
drivers/acpi/acpica/dswload.c | 21 +++++++++++++++++++++
drivers/acpi/acpica/exprep.c | 4 ----
drivers/acpi/acpica/utdelete.c | 6 +-----
drivers/acpi/arm64/iort.c | 19 ++++++++++++++++---
drivers/acpi/custom_method.c | 4 +++-
drivers/acpi/nfit/core.c | 7 ++++---
drivers/acpi/nfit/nfit.h | 1 +
include/acpi/acexcep.h | 10 +++++-----
15 files changed, 78 insertions(+), 27 deletions(-)
--
2.25.1
1
13
When use openEuler-1.0-LTS kernel in euler22.03, we found it
unable to compile and boot, thus fix it.
Andy Lutomirski (1):
x86/entry/64: Don't compile ignore_sysret if 32-bit emulation is
enabled
Aristeu Rozanski (1):
EDAC: skx_common: downgrade message importance on missing PCI device
Borislav Petkov (1):
x86: Fix early boot crash on gcc-10, third try
Josh Poimboeuf (1):
objtool: Don't fail on missing symbol table
arch/x86/entry/entry_64.S | 6 ++++++
arch/x86/include/asm/stackprotector.h | 7 ++++++-
arch/x86/kernel/smpboot.c | 8 ++++++++
arch/x86/xen/smp_pv.c | 1 +
drivers/edac/skx_common.c | 2 +-
include/linux/compiler.h | 6 ++++++
init/main.c | 2 ++
tools/objtool/elf.c | 7 +++++--
8 files changed, 35 insertions(+), 4 deletions(-)
--
2.18.4
1
4

[PATCH openEuler-1.0-LTS 1/3] usb: gadget: function: printer: fix use-after-free in __lock_acquire
by Yongqiang Liu 07 Sep '22
by Yongqiang Liu 07 Sep '22
07 Sep '22
From: Zqiang <qiang.zhang(a)windriver.com>
stable inclusion
from stable-v4.19.154
commit cedb0187b8ba929c3f76f28e6bc25804d65f8a54
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PB1E
CVE: CVE-2020-27784
---------------------------
[ Upstream commit e8d5f92b8d30bb4ade76494490c3c065e12411b1 ]
Fix this by increase object reference count.
BUG: KASAN: use-after-free in __lock_acquire+0x3fd4/0x4180
kernel/locking/lockdep.c:3831
Read of size 8 at addr ffff8880683b0018 by task syz-executor.0/3377
CPU: 1 PID: 3377 Comm: syz-executor.0 Not tainted 5.6.11 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xce/0x128 lib/dump_stack.c:118
print_address_description.constprop.4+0x21/0x3c0 mm/kasan/report.c:374
__kasan_report+0x131/0x1b0 mm/kasan/report.c:506
kasan_report+0x12/0x20 mm/kasan/common.c:641
__asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:135
__lock_acquire+0x3fd4/0x4180 kernel/locking/lockdep.c:3831
lock_acquire+0x127/0x350 kernel/locking/lockdep.c:4488
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x35/0x50 kernel/locking/spinlock.c:159
printer_ioctl+0x4a/0x110 drivers/usb/gadget/function/f_printer.c:723
vfs_ioctl fs/ioctl.c:47 [inline]
ksys_ioctl+0xfb/0x130 fs/ioctl.c:763
__do_sys_ioctl fs/ioctl.c:772 [inline]
__se_sys_ioctl fs/ioctl.c:770 [inline]
__x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:770
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4531a9
Code: ed 60 fc ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48
89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d
01 f0 ff ff 0f 83 bb 60 fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007fd14ad72c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 000000000073bfa8 RCX: 00000000004531a9
RDX: fffffffffffffff9 RSI: 000000000000009e RDI: 0000000000000003
RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004bbd61
R13: 00000000004d0a98 R14: 00007fd14ad736d4 R15: 00000000ffffffff
Allocated by task 2393:
save_stack+0x21/0x90 mm/kasan/common.c:72
set_track mm/kasan/common.c:80 [inline]
__kasan_kmalloc.constprop.3+0xa7/0xd0 mm/kasan/common.c:515
kasan_kmalloc+0x9/0x10 mm/kasan/common.c:529
kmem_cache_alloc_trace+0xfa/0x2d0 mm/slub.c:2813
kmalloc include/linux/slab.h:555 [inline]
kzalloc include/linux/slab.h:669 [inline]
gprinter_alloc+0xa1/0x870 drivers/usb/gadget/function/f_printer.c:1416
usb_get_function+0x58/0xc0 drivers/usb/gadget/functions.c:61
config_usb_cfg_link+0x1ed/0x3e0 drivers/usb/gadget/configfs.c:444
configfs_symlink+0x527/0x11d0 fs/configfs/symlink.c:202
vfs_symlink+0x33d/0x5b0 fs/namei.c:4201
do_symlinkat+0x11b/0x1d0 fs/namei.c:4228
__do_sys_symlinkat fs/namei.c:4242 [inline]
__se_sys_symlinkat fs/namei.c:4239 [inline]
__x64_sys_symlinkat+0x73/0xb0 fs/namei.c:4239
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 3368:
save_stack+0x21/0x90 mm/kasan/common.c:72
set_track mm/kasan/common.c:80 [inline]
kasan_set_free_info mm/kasan/common.c:337 [inline]
__kasan_slab_free+0x135/0x190 mm/kasan/common.c:476
kasan_slab_free+0xe/0x10 mm/kasan/common.c:485
slab_free_hook mm/slub.c:1444 [inline]
slab_free_freelist_hook mm/slub.c:1477 [inline]
slab_free mm/slub.c:3034 [inline]
kfree+0xf7/0x410 mm/slub.c:3995
gprinter_free+0x49/0xd0 drivers/usb/gadget/function/f_printer.c:1353
usb_put_function+0x38/0x50 drivers/usb/gadget/functions.c:87
config_usb_cfg_unlink+0x2db/0x3b0 drivers/usb/gadget/configfs.c:485
configfs_unlink+0x3b9/0x7f0 fs/configfs/symlink.c:250
vfs_unlink+0x287/0x570 fs/namei.c:4073
do_unlinkat+0x4f9/0x620 fs/namei.c:4137
__do_sys_unlink fs/namei.c:4184 [inline]
__se_sys_unlink fs/namei.c:4182 [inline]
__x64_sys_unlink+0x42/0x50 fs/namei.c:4182
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
The buggy address belongs to the object at ffff8880683b0000
which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 24 bytes inside of
1024-byte region [ffff8880683b0000, ffff8880683b0400)
The buggy address belongs to the page:
page:ffffea0001a0ec00 refcount:1 mapcount:0 mapping:ffff88806c00e300
index:0xffff8880683b1800 compound_mapcount: 0
flags: 0x100000000010200(slab|head)
raw: 0100000000010200 0000000000000000 0000000600000001 ffff88806c00e300
raw: ffff8880683b1800 000000008010000a 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Reported-by: Kyungtae Kim <kt0755(a)gmail.com>
Signed-off-by: Zqiang <qiang.zhang(a)windriver.com>
Signed-off-by: Felipe Balbi <balbi(a)kernel.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Wei Li <liwei391(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/usb/gadget/function/f_printer.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c
index 9c7ed2539ff7..8ed1295d7e35 100644
--- a/drivers/usb/gadget/function/f_printer.c
+++ b/drivers/usb/gadget/function/f_printer.c
@@ -31,6 +31,7 @@
#include <linux/types.h>
#include <linux/ctype.h>
#include <linux/cdev.h>
+#include <linux/kref.h>
#include <asm/byteorder.h>
#include <linux/io.h>
@@ -64,7 +65,7 @@ struct printer_dev {
struct usb_gadget *gadget;
s8 interface;
struct usb_ep *in_ep, *out_ep;
-
+ struct kref kref;
struct list_head rx_reqs; /* List of free RX structs */
struct list_head rx_reqs_active; /* List of Active RX xfers */
struct list_head rx_buffers; /* List of completed xfers */
@@ -218,6 +219,13 @@ static inline struct usb_endpoint_descriptor *ep_desc(struct usb_gadget *gadget,
/*-------------------------------------------------------------------------*/
+static void printer_dev_free(struct kref *kref)
+{
+ struct printer_dev *dev = container_of(kref, struct printer_dev, kref);
+
+ kfree(dev);
+}
+
static struct usb_request *
printer_req_alloc(struct usb_ep *ep, unsigned len, gfp_t gfp_flags)
{
@@ -348,6 +356,7 @@ printer_open(struct inode *inode, struct file *fd)
spin_unlock_irqrestore(&dev->lock, flags);
+ kref_get(&dev->kref);
DBG(dev, "printer_open returned %x\n", ret);
return ret;
}
@@ -365,6 +374,7 @@ printer_close(struct inode *inode, struct file *fd)
dev->printer_status &= ~PRINTER_SELECTED;
spin_unlock_irqrestore(&dev->lock, flags);
+ kref_put(&dev->kref, printer_dev_free);
DBG(dev, "printer_close\n");
return 0;
@@ -1350,7 +1360,8 @@ static void gprinter_free(struct usb_function *f)
struct f_printer_opts *opts;
opts = container_of(f->fi, struct f_printer_opts, func_inst);
- kfree(dev);
+
+ kref_put(&dev->kref, printer_dev_free);
mutex_lock(&opts->lock);
--opts->refcnt;
mutex_unlock(&opts->lock);
@@ -1419,6 +1430,7 @@ static struct usb_function *gprinter_alloc(struct usb_function_instance *fi)
return ERR_PTR(-ENOMEM);
}
+ kref_init(&dev->kref);
++opts->refcnt;
dev->minor = opts->minor;
dev->pnp_string = opts->pnp_string;
--
2.25.1
1
2

[PATCH openEuler-5.10 01/14] tty: drivers/tty/, stop using tty_schedule_flip()
by Zheng Zengkai 06 Sep '22
by Zheng Zengkai 06 Sep '22
06 Sep '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v5.10.134
commit 6a81848252869d929354a879e08807c932444929
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 097266342e5e..4bcaab250676 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index f9f14104bd2c..d6528f3bb9b9 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1385,7 +1385,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1410,7 +1410,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index b5898c932036..a9802308ff60 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -344,7 +344,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 78acc270e39a..aa0026a9839c 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -311,7 +311,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -320,7 +320,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -565,7 +565,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 0a6336d54a65..30fc2a60c352 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1834,7 +1834,7 @@ static void csi_m(struct vc_data *vc)
static void respond_string(const char *p, size_t len, struct tty_port *port)
{
tty_insert_flip_string(port, p, len);
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.20.1
1
13
Backport 5.10.120 LTS patches from upstream.
git cherry-pick v5.10.119..v5.10.120~1 -s
Already merged(-8):
ea62d169b6e7 netfilter: nf_tables: disallow non-stateful expression in sets
earlier
57d01bcae704 io_uring: don't re-import iovecs from callbacks
8adb751d294e io_uring: fix using under-expanded iters
72464fd2b4b7 xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
a9e7f19a5577 xfs: fix an ABBA deadlock in xfs_renam
2728d95c6c95 xfs: Fix CIL throttle hang when CIL space used going backwards
c0aff1faf66b netfilter: nf_tables: sanitize nft_set_desc_concat_parse()
3d8fc6e28f32 KVM: x86: avoid calling x86 emulator without a decoded instruction
Skiped(-1):
45d97f70da4d xfs: show the proper user quota options
Context conflict:
630192aa4523 lib/crypto: add prompts back to crypto libraries
8df42bcd364c dm verity: set DM_TARGET_IMMUTABLE feature flag
KABI fixed(+1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Total patches: 52 - 8 - 1 + 1= 44
Akira Yokosawa (1):
docs: submitting-patches: Fix crossref to 'The canonical patch format'
Al Viro (1):
percpu_ref_init(): clean ->percpu_count_ref on failure
Alex Elder (1):
net: ipa: compute proper aggregation limit
Chuck Lever (1):
NFSD: Fix possible sleep during nfsd4_release_lockowner()
Dan Carpenter (1):
dm integrity: fix error code in dm_integrity_ctr()
Darrick J. Wong (1):
xfs: detect overflows in bmbt records
David Howells (1):
pipe: Fix missing lock in pipe_resize_ring()
Fabio Estevam (1):
crypto: caam - fix i.MX6SX entropy delay value
Florian Westphal (1):
netfilter: conntrack: re-fetch conntrack after insertion
Gustavo A. R. Silva (1):
drm/i915: Fix -Wstringop-overflow warning in call to
intel_read_wm_latency()
IotaHydrae (1):
pinctrl: sunxi: fix f1c100s uart2 function
Joel Stanley (1):
net: ftgmac100: Disable hardware checksum on AST2600
Jonathan Bakker (1):
ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries
Justin M. Forbes (1):
lib/crypto: add prompts back to crypto libraries
Kuniyuki Iwashima (1):
pipe: make poll_usage boolean and annotate its access
Lin Ma (1):
nfc: pn533: Fix buggy cleanup order
Liu Jian (1):
bpf: Enlarge offset check value to INT_MAX in
bpf_skb_{load,store}_bytes
Marek Maślanka (1):
HID: multitouch: Add support for Google Whiskers Touchpad
Mariusz Tkaczyk (1):
raid5: introduce MD_BROKEN
Mika Westerberg (1):
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging
Mikulas Patocka (2):
dm crypt: make printing of the key constant-time
dm stats: add cond_resched when looping over entries
Miri Korenblit (1):
cfg80211: set custom regdomain after wiphy registration
Nicolai Stange (4):
crypto: drbg - prepare for more fine-grained tracking of seeding state
crypto: drbg - track whether DRBG was seeded with
!rng_is_initialized()
crypto: drbg - move dynamic ->reseed_threshold adjustments to
__drbg_seed()
crypto: drbg - make reseeding from get_random_bytes() synchronous
Paolo Bonzini (1):
x86, kvm: use correct GFP flags for preemption disabled
Piyush Malgujar (1):
drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI
controllers
Sarthak Kukreti (1):
dm verity: set DM_TARGET_IMMUTABLE feature flag
Sean Christopherson (1):
x86/kvm: Alloc dummy async #PF token outside of raw spinlock
Stefan Mahnke-Hartmann (1):
tpm: Fix buffer access in tpm2_get_tpm_pt()
Stephen Brennan (1):
assoc_array: Fix BUG_ON during garbage collect
Steven Rostedt (1):
Bluetooth: hci_qca: Use del_timer_sync() before freeing
Sultan Alsawaf (1):
zsmalloc: fix races between asynchronous zspage free and page
migration
Tadeusz Struk (1):
exfat: check if cluster num is valid
Tao Jin (1):
HID: multitouch: add quirks to enable Lenovo X12 trackpoint
Thomas Bartschies (1):
net: af_key: check encryption module availability consistency
Trond Myklebust (1):
NFS: Memory allocation failures are not server fatal errors
Vitaly Chikunov (1):
crypto: ecrdsa - Fix incorrect use of vli_cmp
Xiaomeng Tong (1):
KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator
Xiu Jianfeng (1):
tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe()
Yuntao Wang (1):
bpf: Fix potential array overflow in bpf_trampoline_get_progs()
Zheng Zengkai (1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Documentation/process/submitting-patches.rst | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 2 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 8 +-
arch/x86/kernel/kvm.c | 41 ++++---
crypto/Kconfig | 2 -
crypto/drbg.c | 110 +++++++-----------
crypto/ecrdsa.c | 8 +-
drivers/bluetooth/hci_qca.c | 4 +-
drivers/char/random.c | 2 -
drivers/char/tpm/tpm2-cmd.c | 11 +-
drivers/char/tpm/tpm_ibmvtpm.c | 1 +
drivers/crypto/caam/ctrl.c | 18 +++
drivers/gpu/drm/i915/intel_pm.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 9 ++
drivers/i2c/busses/i2c-ismt.c | 14 +++
drivers/i2c/busses/i2c-thunderx-pcidrv.c | 1 +
drivers/md/dm-crypt.c | 14 ++-
drivers/md/dm-integrity.c | 2 -
drivers/md/dm-stats.c | 8 ++
drivers/md/dm-verity-target.c | 1 +
drivers/md/raid5.c | 47 ++++----
drivers/net/ethernet/faraday/ftgmac100.c | 5 +
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/nfc/pn533/pn533.c | 5 +-
drivers/pinctrl/sunxi/pinctrl-suniv-f1c100s.c | 2 +-
fs/exfat/balloc.c | 8 +-
fs/exfat/exfat_fs.h | 8 ++
fs/exfat/fatent.c | 8 --
fs/nfs/internal.h | 1 +
fs/nfsd/nfs4state.c | 12 +-
fs/pipe.c | 33 +++---
fs/xfs/libxfs/xfs_bmap.c | 5 +
include/crypto/drbg.h | 10 +-
include/linux/pipe_fs_i.h | 2 +-
include/net/netfilter/nf_conntrack_core.h | 7 +-
kernel/bpf/trampoline.c | 18 ++-
lib/Kconfig | 2 +
lib/assoc_array.c | 8 ++
lib/crypto/Kconfig | 17 ++-
lib/percpu-refcount.c | 1 +
mm/zsmalloc.c | 37 +++++-
net/core/filter.c | 4 +-
net/key/af_key.c | 6 +-
net/wireless/core.c | 8 +-
net/wireless/reg.c | 1 +
46 files changed, 328 insertions(+), 192 deletions(-)
--
2.20.1
1
44

06 Sep '22
From: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
stable inclusion
from stable-v5.10.114
commit 549209caabc89f2877ad5f62d11fca5c052e0e8f
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5O6A9
CVE: CVE-2022-2991
---------------------------
In commit 9ea9b9c48387 ("remove the lightnvm subsystem") the lightnvm
subsystem was removed as there is no hardware in the wild for it, and
the code is known to have problems. This should also be disabled for
older LTS kernels as well to prevent anyone from accidentally using it.
Cc: Christoph Hellwig <hch(a)lst.de>
Cc: Matias Bjørling <mb(a)lightnvm.io>
Cc: Javier González <javier(a)javigon.com>
Cc: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/lightnvm/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/lightnvm/Kconfig b/drivers/lightnvm/Kconfig
index 439bf90d084d..1db33cb28859 100644
--- a/drivers/lightnvm/Kconfig
+++ b/drivers/lightnvm/Kconfig
@@ -4,7 +4,7 @@
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && PCI
+ depends on BLOCK && PCI && BROKEN
select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/6] configfs: return -ENAMETOOLONG earlier in configfs_lookup
by Yongqiang Liu 06 Sep '22
by Yongqiang Liu 06 Sep '22
06 Sep '22
From: Christoph Hellwig <hch(a)lst.de>
mainline inclusion
from mainline-v5.15-rc1
commit 417b962ddeca2b70eb72d28c87541bdad4e234f8
category: bugfix
bugzilla: 187567, https://gitee.com/openeuler/kernel/issues/I5PK1G
CVE: NA
--------------------------------
Just like most other file systems: get the simple checks out of the
way first.
Signed-off-by: Christoph Hellwig <hch(a)lst.de>
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/configfs/dir.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 9b43611e1bb3..ff298a9baa0a 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -483,6 +483,9 @@ static struct dentry * configfs_lookup(struct inode *dir,
int found = 0;
int err;
+ if (dentry->d_name.len > NAME_MAX)
+ return ERR_PTR(-ENAMETOOLONG);
+
/*
* Fake invisibility if dir belongs to a group/default groups hierarchy
* being attached
@@ -513,8 +516,6 @@ static struct dentry * configfs_lookup(struct inode *dir,
* If it doesn't exist and it isn't a NOT_PINNED item,
* it must be negative.
*/
- if (dentry->d_name.len > NAME_MAX)
- return ERR_PTR(-ENAMETOOLONG);
d_add(dentry, NULL);
return NULL;
}
--
2.25.1
1
5

[PATCH openEuler-5.10-LTS 01/12] tty: drivers/tty/, stop using tty_schedule_flip()
by Zheng Zengkai 06 Sep '22
by Zheng Zengkai 06 Sep '22
06 Sep '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v5.10.134
commit 6a81848252869d929354a879e08807c932444929
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 097266342e5e..4bcaab250676 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index f9f14104bd2c..d6528f3bb9b9 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1385,7 +1385,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1410,7 +1410,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index b5898c932036..a9802308ff60 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -344,7 +344,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 78acc270e39a..aa0026a9839c 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -311,7 +311,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -320,7 +320,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -565,7 +565,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 0a6336d54a65..30fc2a60c352 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1834,7 +1834,7 @@ static void csi_m(struct vc_data *vc)
static void respond_string(const char *p, size_t len, struct tty_port *port)
{
tty_insert_flip_string(port, p, len);
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.20.1
1
11
Backport 5.10.120 LTS patches from upstream.
git cherry-pick v5.10.119..v5.10.120~1 -s
Already merged(-8):
ea62d169b6e7 netfilter: nf_tables: disallow non-stateful expression in sets
earlier
57d01bcae704 io_uring: don't re-import iovecs from callbacks
8adb751d294e io_uring: fix using under-expanded iters
72464fd2b4b7 xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
a9e7f19a5577 xfs: fix an ABBA deadlock in xfs_renam
2728d95c6c95 xfs: Fix CIL throttle hang when CIL space used going backwards
c0aff1faf66b netfilter: nf_tables: sanitize nft_set_desc_concat_parse()
3d8fc6e28f32 KVM: x86: avoid calling x86 emulator without a decoded instruction
Skiped(-1):
45d97f70da4d xfs: show the proper user quota options
Context conflict:
630192aa4523 lib/crypto: add prompts back to crypto libraries
8df42bcd364c dm verity: set DM_TARGET_IMMUTABLE feature flag
KABI fixed(+1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Total patches: 52 - 8 - 1 + 1= 44
Akira Yokosawa (1):
docs: submitting-patches: Fix crossref to 'The canonical patch format'
Al Viro (1):
percpu_ref_init(): clean ->percpu_count_ref on failure
Alex Elder (1):
net: ipa: compute proper aggregation limit
Chuck Lever (1):
NFSD: Fix possible sleep during nfsd4_release_lockowner()
Dan Carpenter (1):
dm integrity: fix error code in dm_integrity_ctr()
Darrick J. Wong (1):
xfs: detect overflows in bmbt records
David Howells (1):
pipe: Fix missing lock in pipe_resize_ring()
Fabio Estevam (1):
crypto: caam - fix i.MX6SX entropy delay value
Florian Westphal (1):
netfilter: conntrack: re-fetch conntrack after insertion
Gustavo A. R. Silva (1):
drm/i915: Fix -Wstringop-overflow warning in call to
intel_read_wm_latency()
IotaHydrae (1):
pinctrl: sunxi: fix f1c100s uart2 function
Joel Stanley (1):
net: ftgmac100: Disable hardware checksum on AST2600
Jonathan Bakker (1):
ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries
Justin M. Forbes (1):
lib/crypto: add prompts back to crypto libraries
Kuniyuki Iwashima (1):
pipe: make poll_usage boolean and annotate its access
Lin Ma (1):
nfc: pn533: Fix buggy cleanup order
Liu Jian (1):
bpf: Enlarge offset check value to INT_MAX in
bpf_skb_{load,store}_bytes
Marek Maślanka (1):
HID: multitouch: Add support for Google Whiskers Touchpad
Mariusz Tkaczyk (1):
raid5: introduce MD_BROKEN
Mika Westerberg (1):
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging
Mikulas Patocka (2):
dm crypt: make printing of the key constant-time
dm stats: add cond_resched when looping over entries
Miri Korenblit (1):
cfg80211: set custom regdomain after wiphy registration
Nicolai Stange (4):
crypto: drbg - prepare for more fine-grained tracking of seeding state
crypto: drbg - track whether DRBG was seeded with
!rng_is_initialized()
crypto: drbg - move dynamic ->reseed_threshold adjustments to
__drbg_seed()
crypto: drbg - make reseeding from get_random_bytes() synchronous
Paolo Bonzini (1):
x86, kvm: use correct GFP flags for preemption disabled
Piyush Malgujar (1):
drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI
controllers
Sarthak Kukreti (1):
dm verity: set DM_TARGET_IMMUTABLE feature flag
Sean Christopherson (1):
x86/kvm: Alloc dummy async #PF token outside of raw spinlock
Stefan Mahnke-Hartmann (1):
tpm: Fix buffer access in tpm2_get_tpm_pt()
Stephen Brennan (1):
assoc_array: Fix BUG_ON during garbage collect
Steven Rostedt (1):
Bluetooth: hci_qca: Use del_timer_sync() before freeing
Sultan Alsawaf (1):
zsmalloc: fix races between asynchronous zspage free and page
migration
Tadeusz Struk (1):
exfat: check if cluster num is valid
Tao Jin (1):
HID: multitouch: add quirks to enable Lenovo X12 trackpoint
Thomas Bartschies (1):
net: af_key: check encryption module availability consistency
Trond Myklebust (1):
NFS: Memory allocation failures are not server fatal errors
Vitaly Chikunov (1):
crypto: ecrdsa - Fix incorrect use of vli_cmp
Xiaomeng Tong (1):
KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator
Xiu Jianfeng (1):
tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe()
Yuntao Wang (1):
bpf: Fix potential array overflow in bpf_trampoline_get_progs()
Zheng Zengkai (1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Documentation/process/submitting-patches.rst | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 2 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 8 +-
arch/x86/kernel/kvm.c | 41 ++++---
crypto/Kconfig | 2 -
crypto/drbg.c | 110 +++++++-----------
crypto/ecrdsa.c | 8 +-
drivers/bluetooth/hci_qca.c | 4 +-
drivers/char/random.c | 2 -
drivers/char/tpm/tpm2-cmd.c | 11 +-
drivers/char/tpm/tpm_ibmvtpm.c | 1 +
drivers/crypto/caam/ctrl.c | 18 +++
drivers/gpu/drm/i915/intel_pm.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 9 ++
drivers/i2c/busses/i2c-ismt.c | 14 +++
drivers/i2c/busses/i2c-thunderx-pcidrv.c | 1 +
drivers/md/dm-crypt.c | 14 ++-
drivers/md/dm-integrity.c | 2 -
drivers/md/dm-stats.c | 8 ++
drivers/md/dm-verity-target.c | 1 +
drivers/md/raid5.c | 47 ++++----
drivers/net/ethernet/faraday/ftgmac100.c | 5 +
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/nfc/pn533/pn533.c | 5 +-
drivers/pinctrl/sunxi/pinctrl-suniv-f1c100s.c | 2 +-
fs/exfat/balloc.c | 8 +-
fs/exfat/exfat_fs.h | 8 ++
fs/exfat/fatent.c | 8 --
fs/nfs/internal.h | 1 +
fs/nfsd/nfs4state.c | 12 +-
fs/pipe.c | 33 +++---
fs/xfs/libxfs/xfs_bmap.c | 5 +
include/crypto/drbg.h | 10 +-
include/linux/pipe_fs_i.h | 2 +-
include/net/netfilter/nf_conntrack_core.h | 7 +-
kernel/bpf/trampoline.c | 18 ++-
lib/Kconfig | 2 +
lib/assoc_array.c | 8 ++
lib/crypto/Kconfig | 17 ++-
lib/percpu-refcount.c | 1 +
mm/zsmalloc.c | 37 +++++-
net/core/filter.c | 4 +-
net/key/af_key.c | 6 +-
net/wireless/core.c | 8 +-
net/wireless/reg.c | 1 +
46 files changed, 328 insertions(+), 192 deletions(-)
--
2.20.1
1
44

[PATCH openEuler-1.0-LTS 1/3] af_key: Do not call xfrm_probe_algs in parallel
by Yongqiang Liu 05 Sep '22
by Yongqiang Liu 05 Sep '22
05 Sep '22
From: Herbert Xu <herbert(a)gondor.apana.org.au>
mainline inclusion
from mainline-v6.0-rc3
commit ba953a9d89a00c078b85f4b190bc1dde66fe16b5
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5OPA4
CVE: CVE-2022-3028
--------------------------------
When namespace support was added to xfrm/afkey, it caused the
previously single-threaded call to xfrm_probe_algs to become
multi-threaded. This is buggy and needs to be fixed with a mutex.
Reported-by: Abhishek Shah <abhishek.shah(a)columbia.edu>
Fixes: 283bc9f35bbb ("xfrm: Namespacify xfrm state/policy locks")
Signed-off-by: Herbert Xu <herbert(a)gondor.apana.org.au>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/key/af_key.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 0107cc10c4a2..23470b0d84aa 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1707,9 +1707,12 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad
pfk->registered |= (1<<hdr->sadb_msg_satype);
}
+ mutex_lock(&pfkey_mutex);
xfrm_probe_algs();
supp_skb = compose_sadb_supported(hdr, GFP_KERNEL | __GFP_ZERO);
+ mutex_unlock(&pfkey_mutex);
+
if (!supp_skb) {
if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC)
pfk->registered &= ~(1<<hdr->sadb_msg_satype);
--
2.25.1
1
2

[PATCH openEuler-5.10 01/10] Revert "NFS: Use of mapping_set_error() results in spurious errors"
by Zheng Zengkai 01 Sep '22
by Zheng Zengkai 01 Sep '22
01 Sep '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KK4D
CVE: NA
--------------------------------
This reverts commit f4f117026d586db38c025cd95b6094ff8de326df.
7f3945b4aab5 (NFS: Use of mapping_set_error() results in spurious errors)
delete mappint->flags because of 67dd23f9e6fb (nfs: ensure correct writeback
errors are returned on close()). However 67dd23f9e6fb has been reverted, use
mappint->flags to return error.
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/nfs/write.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 5d07799513a6..e8f6ce88b1fb 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -310,10 +310,7 @@ static void nfs_mapping_set_error(struct page *page, int error)
struct address_space *mapping = page_file_mapping(page);
SetPageError(page);
- filemap_set_wb_err(mapping, error);
- if (mapping->host)
- errseq_set(&mapping->host->i_sb->s_wb_err,
- error == -ENOSPC ? -ENOSPC : -EIO);
+ mapping_set_error(mapping, error);
nfs_set_pageerror(mapping);
}
--
2.20.1
1
9
您好!
Kernel SIG 邀请您参加 2022-09-02 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.AMD EPYC Gen4 Genoa平台openEuler-22.09支持简介
2.申威openEuler-22.09内核特性介绍
会议链接:https://us06web.zoom.us/j/85985675927?pwd=ZXl4K3hzZWRpTUIvUWR6RkJJalpPdz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-09-02 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.AMD EPYC Gen4 Genoa平台openEuler-22.09支持简介
2.申威openEuler-22.09内核特性介绍
You can join the meeting at https://us06web.zoom.us/j/85985675927?pwd=ZXl4K3hzZWRpTUIvUWR6RkJJalpPdz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS 1/3] net: usb: ax88179_178a: fix packet alignment padding
by Yongqiang Liu 01 Sep '22
by Yongqiang Liu 01 Sep '22
01 Sep '22
From: Jeremy Kerr <jk(a)ozlabs.org>
stable inclusion
from stable-v4.19.131
commit c191f7cf369c0090fdbeff0b6782d5eaa3a179d2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5NYS6
CVE: CVE-2022-2964
---------------------------
[ Upstream commit e869e7a17798d85829fa7d4f9bbe1eebd4b2d3f6 ]
Using a AX88179 device (0b95:1790), I see two bytes of appended data on
every RX packet. For example, this 48-byte ping, using 0xff as a
payload byte:
04:20:22.528472 IP 192.168.1.1 > 192.168.1.2: ICMP echo request, id 2447, seq 1, length 64
0x0000: 000a cd35 ea50 000a cd35 ea4f 0800 4500
0x0010: 0054 c116 4000 4001 f63e c0a8 0101 c0a8
0x0020: 0102 0800 b633 098f 0001 87ea cd5e 0000
0x0030: 0000 dcf2 0600 0000 0000 ffff ffff ffff
0x0040: ffff ffff ffff ffff ffff ffff ffff ffff
0x0050: ffff ffff ffff ffff ffff ffff ffff ffff
0x0060: ffff 961f
Those last two bytes - 96 1f - aren't part of the original packet.
In the ax88179 RX path, the usbnet rx_fixup function trims a 2-byte
'alignment pseudo header' from the start of the packet, and sets the
length from a per-packet field populated by hardware. It looks like that
length field *includes* the 2-byte header; the current driver assumes
that it's excluded.
This change trims the 2-byte alignment header after we've set the packet
length, so the resulting packet length is correct. While we're moving
the comment around, this also fixes the spelling of 'pseudo'.
Signed-off-by: Jeremy Kerr <jk(a)ozlabs.org>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
(cherry picked from commit c191f7cf369c0090fdbeff0b6782d5eaa3a179d2)
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/usb/ax88179_178a.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index 2207f7a7d1ff..8455f72007b9 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -1400,10 +1400,10 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
}
if (pkt_cnt == 0) {
- /* Skip IP alignment psudo header */
- skb_pull(skb, 2);
skb->len = pkt_len;
- skb_set_tail_pointer(skb, pkt_len);
+ /* Skip IP alignment pseudo header */
+ skb_pull(skb, 2);
+ skb_set_tail_pointer(skb, skb->len);
skb->truesize = pkt_len + sizeof(struct sk_buff);
ax88179_rx_checksum(skb, pkt_hdr);
return 1;
@@ -1412,8 +1412,9 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
ax_skb = skb_clone(skb, GFP_ATOMIC);
if (ax_skb) {
ax_skb->len = pkt_len;
- ax_skb->data = skb->data + 2;
- skb_set_tail_pointer(ax_skb, pkt_len);
+ /* Skip IP alignment pseudo header */
+ skb_pull(ax_skb, 2);
+ skb_set_tail_pointer(ax_skb, ax_skb->len);
ax_skb->truesize = pkt_len + sizeof(struct sk_buff);
ax88179_rx_checksum(ax_skb, pkt_hdr);
usbnet_skb_return(dev, ax_skb);
--
2.25.1
1
7

31 Aug '22
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patch implements a sample BMC for Redis. Paper [1] implements BMC
in XDP, bypassing the kernel network stack totally. Since Redis is based
on TCP protocol, and it's almost impossible to fully process TCP traffic
in XDP, so this patch implements BMC in sockmap, which locates at the
top of kernel network stack. Since kernel network stack is not bypassed,
the speedup is not significant. Any way, this is only a sample
implementation, and performance improvements can be continuously
optimized.
See [2] for details on how to build samples/bpf.
Output files:
samples/bpf/bmctool
samples/bpf/bmc/bpf.o
Sample usage:
bmctool prog load -p 6379 ./bmc/bpf.o # load bmc bpf prog and attach it
# to sockets with listen port 6379
bmctool stat # dump bmc status
bmctool prog unload # detach and unload bmc prog
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
[2] https://www.kernel.org/doc/readme/samples-bpf-README.rst
Xu Kuohai (3):
bpf: Add helper bpf_tcp_udpate_seq to synchronize tcp seq/ack
bpf: Add xdp load and store helpers
samples: bpf: Add sample BMC for Redis
include/uapi/linux/bpf.h | 27 ++
net/core/filter.c | 98 +++++
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 485 +++++++++++++++++++++
samples/bpf/bmc/common.h | 21 +
samples/bpf/bmc/tool.c | 763 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 27 ++
7 files changed, 1424 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/tool.c
--
2.20.1
1
3

[BUG] [openEuler-1.0-LTS] "CPU features: enabling workaround for Mismatched cache type"
by Zenghui Yu 30 Aug '22
by Zenghui Yu 30 Aug '22
30 Aug '22
I've seen the following kernel log when booting openEuler-1.0-LTS
on my kunpeng-920:
"CPU features: enabling workaround for Mismatched cache type"
whilst all the CPUs in the system actually expose the *same* CTR_EL0
values, i.e., 0x0000000084448004. The following piece of code looks
quite broken because ...
|static bool
|has_mismatched_cache_type(const struct arm64_cpu_capabilities *entry,
| int scope)
|{
| u64 mask = arm64_ftr_reg_ctrel0.strict_mask;
|
| /* Skip matching the min line sizes for cache type check */
| if (entry->capability == ARM64_MISMATCHED_CACHE_TYPE)
| mask ^= arm64_ftr_reg_ctrel0.strict_mask;
... 'mask' is always set to 0 during the detection of "Mismatched cache
type" but we actually want to check the whole *strict_mask*.
If I understand it correctly, backporting upstream commit 880f7cc47265
("arm64: cpu_errata: Remove ARM64_MISMATCHED_CACHE_LINE_SIZE") is the
right thing to do here. But please have a look.
Zenghui
1
0

[PATCH openEuler-5.10-LTS 1/7] Revert "NFS: Use of mapping_set_error() results in spurious errors"
by Zheng Zengkai 30 Aug '22
by Zheng Zengkai 30 Aug '22
30 Aug '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KK4D
CVE: NA
--------------------------------
This reverts commit f4f117026d586db38c025cd95b6094ff8de326df.
7f3945b4aab5 (NFS: Use of mapping_set_error() results in spurious errors)
delete mappint->flags because of 67dd23f9e6fb (nfs: ensure correct writeback
errors are returned on close()). However 67dd23f9e6fb has been reverted, use
mappint->flags to return error.
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/nfs/write.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 5d07799513a6..e8f6ce88b1fb 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -310,10 +310,7 @@ static void nfs_mapping_set_error(struct page *page, int error)
struct address_space *mapping = page_file_mapping(page);
SetPageError(page);
- filemap_set_wb_err(mapping, error);
- if (mapping->host)
- errseq_set(&mapping->host->i_sb->s_wb_err,
- error == -ENOSPC ? -ENOSPC : -EIO);
+ mapping_set_error(mapping, error);
nfs_set_pageerror(mapping);
}
--
2.20.1
1
6
Backport 5.10.119 LTS patches from upstream.
git cherry-pick v5.10.118..v5.10.119~1 -s
Already merged(-4):
a8f4d63142f9 lockdown: also lock down previous kgdb use
9b4aa0d80b18 KVM: x86/mmu: fix NULL pointer dereference on guest INVPCID
33f1b4a27abc tcp: change source port randomizarion at connect() time
a5c68f457fbf secure_seq: use the 64 bits of the siphash for port offset
calculation
Context conflict:
07918ddba3ab lib/crypto: sha1: re-roll loops to reduce code size
685200b076ff random: use BLAKE2s instead of SHA1 in extraction
7d9eab78bed9 init: call time_init() before rand_initialize()
Temporarily Reverted(+1):
Revert "alinux: random: speed up the initialization of module"
KABI changed(2):
5064550d422dc random: clear fast pool, crng, and batches in cpuhp bring up
07280d2c3f33d random: make more consistent use of integer types
KABI fixes(+2):
random: Fix kabi change due to enum cpuhp_state
random: Fix kabi change of get_random_bytes()
Total patches: 163 - 4 + 1 + 2 = 162
Andy Shevchenko (1):
ACPI: sysfs: Make sparse happy about address space in use
Ard Biesheuvel (1):
random: avoid arch_get_random_seed_long() when collecting IRQ
randomness
Denis Efremov (Oracle) (1):
staging: rtl8723bs: prevent ->Ssid overflow in rtw_wx_set_scan()
Dominik Brodowski (7):
random: harmonize "crng init done" messages
random: early initialization of ChaCha constants
random: continually use hwgenerator randomness
random: access primary_pool directly rather than through pointer
random: only call crng_finalize_init() for primary_crng
random: fix locking in crng_fast_load()
random: fix locking for crng_init in crng_reseed()
Edward Matijevic (1):
ALSA: ctxfi: Add SB046x PCI ID
Eric Biggers (11):
random: remove dead code left over from blocking pool
crypto: blake2s - define shash_alg structs using macros
crypto: x86/blake2s - define shash_alg structs using macros
crypto: blake2s - remove unneeded includes
crypto: blake2s - move update and final logic to internal/blake2s.h
crypto: blake2s - share the "shash" API boilerplate code
crypto: blake2s - optimize blake2s initialization
crypto: blake2s - add comment for blake2s_state fields
crypto: blake2s - adjust include guard naming
crypto: blake2s - include <linux/bug.h> instead of <asm/bug.h>
random: remove use_input_pool parameter from crng_reseed()
Hans Verkuil (1):
media: vim2m: initialize the media device earlier
Herbert Xu (1):
crypto: lib/blake2s - Move selftest prototype into header file
Jan Varho (1):
random: do not split fast init input in add_hwgenerator_randomness()
Jann Horn (2):
random: don't reset crng_init_cnt on urandom_read()
random: check for signal_pending() outside of need_resched() check
Jason A. Donenfeld (123):
MAINTAINERS: co-maintain random.c
MAINTAINERS: add git tree for random.c
lib/crypto: blake2s: include as built-in
lib/crypto: blake2s: move hmac construction into wireguard
lib/crypto: sha1: re-roll loops to reduce code size
lib/crypto: blake2s: avoid indirect calls to compression function for
Clang CFI
random: use BLAKE2s instead of SHA1 in extraction
random: do not sign extend bytes for rotation when mixing
random: do not re-init if crng_reseed completes before primary init
random: mix bootloader randomness into pool
random: use IS_ENABLED(CONFIG_NUMA) instead of ifdefs
random: avoid superfluous call to RDRAND in CRNG extraction
random: cleanup poolinfo abstraction
random: cleanup integer types
random: remove incomplete last_data logic
random: remove unused extract_entropy() reserved argument
random: rather than entropy_store abstraction, use global
random: remove unused OUTPUT_POOL constants
random: de-duplicate INPUT_POOL constants
random: prepend remaining pool constants with POOL_
random: cleanup fractional entropy shift constants
random: access input_pool_data directly rather than through pointer
random: selectively clang-format where it makes sense
random: simplify arithmetic function flow in account()
random: use computational hash for entropy extraction
random: simplify entropy debiting
random: use linear min-entropy accumulation crediting
random: always wake up entropy writers after extraction
random: make credit_entropy_bits() always safe
random: remove batched entropy locking
random: use RDSEED instead of RDRAND in entropy extraction
random: get rid of secondary crngs
random: inline leaves of rand_initialize()
random: ensure early RDSEED goes through mixer on init
random: do not xor RDRAND when writing into /dev/random
random: absorb fast pool into input pool after fast load
random: use simpler fast key erasure flow on per-cpu keys
random: use hash function for crng_slow_load()
random: make more consistent use of integer types
random: remove outdated INT_MAX >> 6 check in urandom_read()
random: zero buffer after reading entropy from userspace
random: tie batched entropy generation to base_crng generation
random: remove ifdef'd out interrupt bench
random: remove unused tracepoints
random: add proper SPDX header
random: deobfuscate irq u32/u64 contributions
random: introduce drain_entropy() helper to declutter crng_reseed()
random: remove useless header comment
random: remove whitespace and reorder includes
random: group initialization wait functions
random: group crng functions
random: group entropy extraction functions
random: group entropy collection functions
random: group userspace read/write functions
random: group sysctl functions
random: rewrite header introductory comment
random: defer fast pool mixing to worker
random: do not take pool spinlock at boot
random: unify early init crng load accounting
random: check for crng_init == 0 in add_device_randomness()
random: pull add_hwgenerator_randomness() declaration into random.h
random: clear fast pool, crng, and batches in cpuhp bring up
random: round-robin registers as ulong, not u32
random: only wake up writers after zap if threshold was passed
random: cleanup UUID handling
random: unify cycles_t and jiffies usage and types
random: do crng pre-init loading in worker rather than irq
random: give sysctl_random_min_urandom_seed a more sensible value
random: don't let 644 read-only sysctls be written to
random: replace custom notifier chain with standard one
random: use SipHash as interrupt entropy accumulator
random: make consistent usage of crng_ready()
random: reseed more often immediately after booting
random: check for signal and try earlier when generating entropy
random: skip fast_init if hwrng provides large chunk of entropy
random: treat bootloader trust toggle the same way as cpu trust toggle
random: re-add removed comment about get_random_{u32,u64} reseeding
random: mix build-time latent entropy into pool at init
random: do not allow user to keep crng key around on stack
random: check for signals every PAGE_SIZE chunk of /dev/[u]random
random: allow partial reads if later user copies fail
random: make random_get_entropy() return an unsigned long
random: document crng_fast_key_erasure() destination possibility
random: fix sysctl documentation nits
init: call time_init() before rand_initialize()
ia64: define get_cycles macro for arch-override
s390: define get_cycles macro for arch-override
parisc: define get_cycles macro for arch-override
alpha: define get_cycles macro for arch-override
powerpc: define get_cycles macro for arch-override
timekeeping: Add raw clock fallback for random_get_entropy()
m68k: use fallback for random_get_entropy() instead of zero
riscv: use fallback for random_get_entropy() instead of zero
mips: use fallback for random_get_entropy() instead of just c0 random
arm: use fallback for random_get_entropy() instead of zero
nios2: use fallback for random_get_entropy() instead of zero
x86/tsc: Use fallback for random_get_entropy() instead of zero
um: use fallback for random_get_entropy() instead of zero
sparc: use fallback for random_get_entropy() instead of zero
xtensa: use fallback for random_get_entropy() instead of zero
random: insist on random_get_entropy() existing in order to simplify
random: do not use batches when !crng_ready()
random: use first 128 bits of input as fast init
random: do not pretend to handle premature next security model
random: order timer entropy functions below interrupt functions
random: do not use input pool from hard IRQs
random: help compiler out with fast_mix() by using simpler arguments
siphash: use one source of truth for siphash permutations
random: use symbolic constants for crng_init states
random: avoid initializing twice in credit race
random: move initialization out of reseeding hot path
random: remove ratelimiting for in-kernel unseeded randomness
random: use proper jiffies comparison macro
random: handle latent entropy and command line from random_init()
random: credit architectural init the exact amount
random: use static branch for crng_ready()
random: remove extern from functions in header
random: use proper return types on get_random_{int,long}_wait()
random: make consistent use of buf and len
random: move initialization functions out of hot pages
random: move randomize_page() into mm where it belongs
random: unify batched entropy implementations
random: check for signals after page of pool writes
Jens Axboe (3):
random: convert to using fops->read_iter()
random: convert to using fops->write_iter()
random: wire up fops->splice_{read,write}_iter()
Lorenzo Pieralisi (1):
ACPI: sysfs: Fix BERT error region memory mapping
Mark Brown (1):
random: document add_hwgenerator_randomness() with other input
functions
Sakari Ailus (1):
media: vim2m: Register video device after setting up internals
Schspa Shi (1):
random: fix typo in comments
Sebastian Andrzej Siewior (1):
random: remove unused irq_flags argument from
add_interrupt_randomness()
Vitaly Kuznetsov (1):
KVM: x86: Properly handle APF vs disabled LAPIC situation
Zheng Zengkai (3):
Revert "alinux: random: speed up the initialization of module"
random: Fix kabi change due to enum cpuhp_state
random: Fix kabi change of get_random_bytes()
.../admin-guide/kernel-parameters.txt | 6 +
Documentation/admin-guide/sysctl/kernel.rst | 22 +-
MAINTAINERS | 2 +
arch/alpha/include/asm/timex.h | 1 +
arch/arm/include/asm/timex.h | 1 +
arch/ia64/include/asm/timex.h | 1 +
arch/m68k/include/asm/timex.h | 2 +-
arch/mips/include/asm/timex.h | 17 +-
arch/nios2/include/asm/timex.h | 3 +
arch/parisc/include/asm/timex.h | 3 +-
arch/powerpc/include/asm/timex.h | 1 +
arch/riscv/include/asm/timex.h | 2 +-
arch/s390/include/asm/timex.h | 1 +
arch/sparc/include/asm/timex_32.h | 4 +-
arch/um/include/asm/timex.h | 9 +-
arch/x86/crypto/Makefile | 4 +-
arch/x86/crypto/blake2s-glue.c | 166 +-
arch/x86/crypto/blake2s-shash.c | 77 +
arch/x86/include/asm/timex.h | 9 +
arch/x86/include/asm/tsc.h | 7 +-
arch/x86/kernel/cpu/mshyperv.c | 2 +-
arch/x86/kvm/lapic.c | 6 +
arch/x86/kvm/x86.c | 2 +-
arch/xtensa/include/asm/timex.h | 6 +-
crypto/Kconfig | 3 +-
crypto/blake2s_generic.c | 158 +-
crypto/drbg.c | 17 +-
drivers/acpi/sysfs.c | 23 +-
drivers/char/Kconfig | 3 +-
drivers/char/hw_random/core.c | 1 +
drivers/char/random.c | 3036 ++++++-----------
drivers/hv/vmbus_drv.c | 2 +-
drivers/media/test-drivers/vim2m.c | 22 +-
drivers/net/Kconfig | 1 -
drivers/net/wireguard/noise.c | 45 +-
.../staging/rtl8723bs/os_dep/ioctl_linux.c | 6 +-
include/crypto/blake2s.h | 66 +-
include/crypto/chacha.h | 15 +-
include/crypto/drbg.h | 2 +-
include/crypto/internal/blake2s.h | 123 +-
include/linux/hw_random.h | 2 -
include/linux/mm.h | 1 +
include/linux/prandom.h | 23 +-
include/linux/random.h | 102 +-
include/linux/siphash.h | 28 +
include/linux/timex.h | 10 +-
include/trace/events/random.h | 330 --
init/main.c | 13 +-
kernel/irq/handle.c | 2 +-
kernel/time/timekeeping.c | 15 +
kernel/workqueue.c | 8 +
lib/Kconfig.debug | 3 +-
lib/crypto/Kconfig | 23 +-
lib/crypto/Makefile | 9 +-
lib/crypto/blake2s-generic.c | 6 +-
lib/crypto/blake2s-selftest.c | 33 +-
lib/crypto/blake2s.c | 81 +-
lib/random32.c | 16 +-
lib/sha1.c | 95 +-
lib/siphash.c | 32 +-
lib/vsprintf.c | 10 +-
mm/util.c | 32 +
sound/pci/ctxfi/ctatc.c | 2 +
sound/pci/ctxfi/cthardware.h | 3 +-
64 files changed, 1739 insertions(+), 3017 deletions(-)
create mode 100644 arch/x86/crypto/blake2s-shash.c
delete mode 100644 include/trace/events/random.h
--
2.20.1
1
162

[PATCH openEuler-1.0-LTS] rtc: Fix set RTC time delay 500ms on some Zhaoxin SOCs
by LeoLiu-oc 30 Aug '22
by LeoLiu-oc 30 Aug '22
30 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V04
CVE: NA
----------------------------------------------------------------
When the RTC divider is changed from reset to an operating time base,
the first update cycle should be 500ms later. But on some Zhaoxin SOCs,
this first update cycle is one second later.
So set RTC time on these Zhaoxin SOCs will causing 500ms delay.
Skip setup RTC divider on these SOCs in mc146818_set_time to fix it.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/rtc/rtc-mc146818-lib.c | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/rtc/rtc-mc146818-lib.c b/drivers/rtc/rtc-mc146818-lib.c
index 2f1772a358ca..1a866ebbbe62 100644
--- a/drivers/rtc/rtc-mc146818-lib.c
+++ b/drivers/rtc/rtc-mc146818-lib.c
@@ -7,6 +7,23 @@
#include <linux/acpi.h>
#endif
+#ifdef CONFIG_X86
+static inline bool follow_mc146818_divider_reset(void)
+{
+ if ((boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR ||
+ boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) &&
+ (boot_cpu_data.x86 <= 7 && boot_cpu_data.x86_model <= 59)) {
+ return false;
+ }
+ return true;
+}
+#else
+static inline bool follow_mc146818_divider_reset(void)
+{
+ return true;
+}
+#endif
+
/*
* Returns true if a clock update is in progress
*/
@@ -170,8 +187,10 @@ int mc146818_set_time(struct rtc_time *time)
save_control = CMOS_READ(RTC_CONTROL);
CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL);
- save_freq_select = CMOS_READ(RTC_FREQ_SELECT);
- CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT);
+ if (follow_mc146818_divider_reset()) {
+ save_freq_select = CMOS_READ(RTC_FREQ_SELECT);
+ CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT);
+ }
#ifdef CONFIG_MACH_DECSTATION
CMOS_WRITE(real_yrs, RTC_DEC_YEAR);
@@ -189,7 +208,8 @@ int mc146818_set_time(struct rtc_time *time)
#endif
CMOS_WRITE(save_control, RTC_CONTROL);
- CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
+ if (follow_mc146818_divider_reset())
+ CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
spin_unlock_irqrestore(&rtc_lock, flags);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Driver for Zhaoxin CPU core temperature monitoring
by LeoLiu-oc 30 Aug '22
by LeoLiu-oc 30 Aug '22
30 Aug '22
zhaoxin inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5J763
CVE: NA
--------------------------------------------
Add support for the temperature sensor inside CPU.
Supported are all known variants of the Zhaoxin processors.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/hwmon/Kconfig | 9 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/via-cputemp.c | 1 -
drivers/hwmon/zhaoxin-cputemp.c | 319 ++++++++++++++++++++++++++++++++
4 files changed, 329 insertions(+), 1 deletion(-)
create mode 100644 drivers/hwmon/zhaoxin-cputemp.c
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index c7adaca2ab01..1ef7c384d652 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1720,6 +1720,15 @@ config SENSORS_VIA_CPUTEMP
sensor inside your CPU. Supported are all known variants of
the VIA C7 and Nano.
+config SENSORS_ZHAOXIN_CPUTEMP
+ tristate "Zhaoxin CPU temperature sensor"
+ depends on X86
+ select HWMON_VID
+ help
+ If you say yes here you get support for the temperature
+ sensor inside your CPU. Supported are all known variants of
+ the Zhaoxin processors.
+
config SENSORS_VIA686A
tristate "VIA686A"
depends on PCI
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 93f7f41ea4ad..4fe7d2f76f0d 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -168,6 +168,7 @@ obj-$(CONFIG_SENSORS_TMP401) += tmp401.o
obj-$(CONFIG_SENSORS_TMP421) += tmp421.o
obj-$(CONFIG_SENSORS_VEXPRESS) += vexpress-hwmon.o
obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
+obj-$(CONFIG_SENSORS_ZHAOXIN_CPUTEMP)+= zhaoxin-cputemp.o
obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
obj-$(CONFIG_SENSORS_VT1211) += vt1211.o
obj-$(CONFIG_SENSORS_VT8231) += vt8231.o
diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
index 0e81f287d305..3c960b999958 100644
--- a/drivers/hwmon/via-cputemp.c
+++ b/drivers/hwmon/via-cputemp.c
@@ -287,7 +287,6 @@ static const struct x86_cpu_id __initconst cputemp_ids[] = {
{ X86_VENDOR_CENTAUR, 6, 0xa, }, /* C7 A */
{ X86_VENDOR_CENTAUR, 6, 0xd, }, /* C7 D */
{ X86_VENDOR_CENTAUR, 6, 0xf, }, /* Nano */
- { X86_VENDOR_CENTAUR, 7, X86_MODEL_ANY, },
{}
};
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
diff --git a/drivers/hwmon/zhaoxin-cputemp.c b/drivers/hwmon/zhaoxin-cputemp.c
new file mode 100644
index 000000000000..4bfde378b0fb
--- /dev/null
+++ b/drivers/hwmon/zhaoxin-cputemp.c
@@ -0,0 +1,319 @@
+/*
+ * zhaoxin-cputemp.c - Driver for Zhaoxin CPU core temperature monitoring
+ *
+ * based on existing coretemp.c, which is
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-vid.h>
+#include <linux/sysfs.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/list.h>
+#include <linux/platform_device.h>
+#include <linux/cpu.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+#include <asm/cpu_device_id.h>
+
+#define DRVNAME "zhaoxin_cputemp"
+
+enum { SHOW_TEMP, SHOW_LABEL, SHOW_NAME };
+
+/*
+ * Functions declaration
+ */
+
+struct zhaoxin_cputemp_data {
+ struct device *hwmon_dev;
+ const char *name;
+ u8 vrm;
+ u32 id;
+ u32 msr_temp;
+ u32 msr_vid;
+};
+
+/*
+ * Sysfs stuff
+ */
+
+static ssize_t show_name(struct device *dev, struct device_attribute
+ *devattr, char *buf)
+{
+ int ret;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+
+ if (attr->index == SHOW_NAME)
+ ret = sprintf(buf, "%s\n", data->name);
+ else /* show label */
+ ret = sprintf(buf, "Core %d\n", data->id);
+ return ret;
+}
+
+static ssize_t show_temp(struct device *dev,
+ struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%lu\n", ((unsigned long)eax & 0xffffff) * 1000);
+}
+
+static ssize_t cpu0_vid_show(struct device *dev,
+ struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_vid, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%d\n", vid_from_reg(~edx & 0x7f, data->vrm));
+}
+
+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL,
+ SHOW_TEMP);
+static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, show_name, NULL, SHOW_LABEL);
+static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, SHOW_NAME);
+
+static struct attribute *zhaoxin_cputemp_attributes[] = {
+ &sensor_dev_attr_name.dev_attr.attr,
+ &sensor_dev_attr_temp1_label.dev_attr.attr,
+ &sensor_dev_attr_temp1_input.dev_attr.attr,
+ NULL
+};
+
+static const struct attribute_group zhaoxin_cputemp_group = {
+ .attrs = zhaoxin_cputemp_attributes,
+};
+
+/* Optional attributes */
+static DEVICE_ATTR_RO(cpu0_vid);
+
+static int zhaoxin_cputemp_probe(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data;
+ int err;
+ u32 eax, edx;
+
+ data = devm_kzalloc(&pdev->dev, sizeof(struct zhaoxin_cputemp_data),
+ GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
+ data->id = pdev->id;
+ data->name = "zhaoxin_cputemp";
+
+ data->msr_temp = 0x1423;
+
+ /* test if we can access the TEMPERATURE MSR */
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err) {
+ dev_err(&pdev->dev,
+ "Unable to access TEMPERATURE MSR, giving up\n");
+ return err;
+ }
+
+ platform_set_drvdata(pdev, data);
+
+ err = sysfs_create_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ if (err)
+ return err;
+
+ if (data->msr_vid)
+ data->vrm = vid_which_vrm();
+
+ if (data->vrm) {
+ err = device_create_file(&pdev->dev, &dev_attr_cpu0_vid);
+ if (err)
+ goto exit_remove;
+ }
+
+ data->hwmon_dev = hwmon_device_register(&pdev->dev);
+ if (IS_ERR(data->hwmon_dev)) {
+ err = PTR_ERR(data->hwmon_dev);
+ dev_err(&pdev->dev, "Class registration failed (%d)\n",
+ err);
+ goto exit_remove;
+ }
+
+ return 0;
+
+exit_remove:
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return err;
+}
+
+static int zhaoxin_cputemp_remove(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data = platform_get_drvdata(pdev);
+
+ hwmon_device_unregister(data->hwmon_dev);
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return 0;
+}
+
+static struct platform_driver zhaoxin_cputemp_driver = {
+ .driver = {
+ .name = DRVNAME,
+ },
+ .probe = zhaoxin_cputemp_probe,
+ .remove = zhaoxin_cputemp_remove,
+};
+
+struct pdev_entry {
+ struct list_head list;
+ struct platform_device *pdev;
+ unsigned int cpu;
+};
+
+static LIST_HEAD(pdev_list);
+static DEFINE_MUTEX(pdev_list_mutex);
+
+static int zhaoxin_cputemp_online(unsigned int cpu)
+{
+ int err;
+ struct platform_device *pdev;
+ struct pdev_entry *pdev_entry;
+
+ pdev = platform_device_alloc(DRVNAME, cpu);
+ if (!pdev) {
+ err = -ENOMEM;
+ pr_err("Device allocation failed\n");
+ goto exit;
+ }
+
+ pdev_entry = kzalloc(sizeof(struct pdev_entry), GFP_KERNEL);
+ if (!pdev_entry) {
+ err = -ENOMEM;
+ goto exit_device_put;
+ }
+
+ err = platform_device_add(pdev);
+ if (err) {
+ pr_err("Device addition failed (%d)\n", err);
+ goto exit_device_free;
+ }
+
+ pdev_entry->pdev = pdev;
+ pdev_entry->cpu = cpu;
+ mutex_lock(&pdev_list_mutex);
+ list_add_tail(&pdev_entry->list, &pdev_list);
+ mutex_unlock(&pdev_list_mutex);
+
+ return 0;
+
+exit_device_free:
+ kfree(pdev_entry);
+exit_device_put:
+ platform_device_put(pdev);
+exit:
+ return err;
+}
+
+static int zhaoxin_cputemp_down_prep(unsigned int cpu)
+{
+ struct pdev_entry *p;
+
+ mutex_lock(&pdev_list_mutex);
+ list_for_each_entry(p, &pdev_list, list) {
+ if (p->cpu == cpu) {
+ platform_device_unregister(p->pdev);
+ list_del(&p->list);
+ mutex_unlock(&pdev_list_mutex);
+ kfree(p);
+ return 0;
+ }
+ }
+ mutex_unlock(&pdev_list_mutex);
+ return 0;
+}
+
+static const struct x86_cpu_id __initconst cputemp_ids[] = {
+ { X86_VENDOR_CENTAUR, 7, X86_MODEL_ANY, },
+ { X86_VENDOR_ZHAOXIN, 7, X86_MODEL_ANY, },
+ {}
+};
+MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
+
+static enum cpuhp_state zhaoxin_temp_online;
+
+static int __init zhaoxin_cputemp_init(void)
+{
+ int err;
+
+ if (!x86_match_cpu(cputemp_ids))
+ return -ENODEV;
+
+ err = platform_driver_register(&zhaoxin_cputemp_driver);
+ if (err)
+ goto exit;
+
+ err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "hwmon/zhaoxin:online",
+ zhaoxin_cputemp_online, zhaoxin_cputemp_down_prep);
+ if (err < 0)
+ goto exit_driver_unreg;
+ zhaoxin_temp_online = err;
+
+#ifndef CONFIG_HOTPLUG_CPU
+ if (list_empty(&pdev_list)) {
+ err = -ENODEV;
+ goto exit_hp_unreg;
+ }
+#endif
+ return 0;
+
+#ifndef CONFIG_HOTPLUG_CPU
+exit_hp_unreg:
+ cpuhp_remove_state_nocalls(zhaoxin_temp_online);
+#endif
+exit_driver_unreg:
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+exit:
+ return err;
+}
+
+static void __exit zhaoxin_cputemp_exit(void)
+{
+ cpuhp_remove_state(zhaoxin_temp_online);
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+}
+
+MODULE_DESCRIPTION("Zhaoxin CPU temperature monitor");
+MODULE_LICENSE("GPL");
+
+module_init(zhaoxin_cputemp_init)
+module_exit(zhaoxin_cputemp_exit)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] x86/tsc: Make cur->adjusted values in package#1 to be the same
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V2W
CVE: NA
----------------------------------------------------------------
When resume from S4 on Zhaoxin 2 packages platform that support X86_FEATURE_TSC_ADJUST,
the following warning messages appear:
[ 327.445302] [Firmware Bug]: TSC ADJUST differs: CPU15 45960750 --> 78394770. Restoring
[ 329.209120] [Firmware Bug]: TSC ADJUST differs: CPU14 45960750 --> 78394770. Restoring
[ 329.209128] [Firmware Bug]: TSC ADJUST differs: CPU13 45960750 --> 78394770. Restoring
[ 329.209138] [Firmware Bug]: TSC ADJUST differs: CPU12 45960750 --> 78394770. Restoring
[ 329.209151] [Firmware Bug]: TSC ADJUST differs: CPU11 45960750 --> 78394770. Restoring
[ 329.209160] [Firmware Bug]: TSC ADJUST differs: CPU10 45960750 --> 78394770. Restoring
[ 329.209169] [Firmware Bug]: TSC ADJUST differs: CPU9 45960750 --> 78394770. Restoring
The reason is:
Step 1: Bring up.
TSC is sync after bring up with following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value1 value1
Package#1 non-first CPU value1 value1
Step 2: Suspend to S4.
Settings in Step 1 are not changed in this Step.
Step 3: Bring up caused by S4 wake up event.
TSC is sync when bring up with following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value2 value2
Package#1 non-first CPU value2 value2
Step 4: Resume from S4.
When resuming from S4, Current TSC synchronous mechanism
cause following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value2 value2
Package#1 non-first CPU value2 value1
In these Steps, value1 != 0 and value2 != value1.
In Step4, as function tsc_store_and_check_tsc_adjust() do, when the value
of MSR 0x3b on the non-first online CPU in package#1 is equal to the value
of cur->adjusted on the first online CPU in the same package,
the cur->adjusted value on this non-first online CPU will hold the old value1.
This cause function tsc_verify_tsc_adjust() set the value of MSR 0x3b on the
non-first online CPUs in the package#1 to the old value1 and print the
beginning warning messages.
Fix it by setting cur->adjusted value on the non-first online CPU in a package
to the value of MSR 0x3b on the same CPU when they are not equal.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
arch/x86/kernel/tsc_sync.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/x86/kernel/tsc_sync.c b/arch/x86/kernel/tsc_sync.c
index ec534f978867..e0cc4170325c 100644
--- a/arch/x86/kernel/tsc_sync.c
+++ b/arch/x86/kernel/tsc_sync.c
@@ -190,6 +190,11 @@ bool tsc_store_and_check_tsc_adjust(bool bootcpu)
if (bootval != ref->adjusted) {
cur->adjusted = ref->adjusted;
wrmsrl(MSR_IA32_TSC_ADJUST, ref->adjusted);
+ } else if (cur->adjusted != bootval) {
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR ||
+ boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) {
+ cur->adjusted = bootval;
+ }
}
/*
* We have the TSCs forced to be in sync on this package. Skip sync
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Add support for PxSCT.LPM set based on actual LPM circumstances
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V2K
CVE: NA
----------------------------------------------------------------
AHCI Spec shows that the PxSCTL.IPM field in each port must be programmed
to disallow device initiated LPM requests when HBA can not support
transitions to the LPM state. The current LPM driver has no restrictions
on LPM transitions when enabling device initiated LPM.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/ata/libata-core.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 0bcdc5261480..e685162a188e 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3975,6 +3975,9 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
bool spm_wakeup)
{
struct ata_eh_context *ehc = &link->eh_context;
+ struct ata_port *ap = ata_is_host_link(link) ? link->ap : NULL;
+ struct device *dev = ap ? ap->host->dev : NULL;
+ struct pci_dev *pdev = (!dev || !dev_is_pci(dev)) ? NULL : to_pci_dev(dev);
bool woken_up = false;
u32 scontrol;
int rc;
@@ -4001,10 +4004,20 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
case ATA_LPM_MED_POWER_WITH_DIPM:
case ATA_LPM_MIN_POWER_WITH_PARTIAL:
case ATA_LPM_MIN_POWER:
- if (ata_link_nr_enabled(link) > 0)
+ if (ata_link_nr_enabled(link) > 0) {
/* no restrictions on LPM transitions */
scontrol &= ~(0x7 << 8);
- else {
+ /*
+ * If Host does not support partial, then disallows it,
+ * the same for slumber.
+ */
+ if (pdev && pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) {
+ if (!(link->ap->host->flags & ATA_HOST_PART))
+ scontrol |= (0x1 << 8);
+ if (!(link->ap->host->flags & ATA_HOST_SSC))
+ scontrol |= (0x2 << 8);
+ }
+ } else {
/* empty port, power off */
scontrol &= ~0xf;
scontrol |= (0x1 << 2);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Add support for disabling PhyRdy Change Interrupt based on actual LPM capability
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V27
CVE: NA
----------------------------------------------------------------
The ahci spec mentions that PhyRdy Change Interrupt and
Link Power Management (LPM) do not coexist.
However, before enabling LPM, the driver did not check whether
the host supports LPM, but directly disabled PhyRdy Change Interrupt.
Increase the judgment on the actual support of LPM, and disable PhyRdy
Change Interrupt only when it is supported.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/ata/ahci.c | 11 +++++++++++
drivers/ata/libata-eh.c | 7 +++++++
include/linux/libata.h | 3 +++
3 files changed, 21 insertions(+)
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index ebb2bfd4ab0a..8ed2f42b85fd 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1855,6 +1855,17 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
else
dev_info(&pdev->dev, "SSS flag set, parallel bus scan disabled\n");
+ if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) {
+ if (hpriv->cap & HOST_CAP_PART)
+ host->flags |= ATA_HOST_PART;
+
+ if (hpriv->cap & HOST_CAP_SSC)
+ host->flags |= ATA_HOST_SSC;
+
+ if (hpriv->cap2 & HOST_CAP2_SDS)
+ host->flags |= ATA_HOST_DEVSLP;
+ }
+
if (pi.flags & ATA_FLAG_EM)
ahci_reset_em(host);
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index ccc80ff57eb2..e4e0e6d94741 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -3448,6 +3448,8 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
struct ata_device **r_failed_dev)
{
struct ata_port *ap = ata_is_host_link(link) ? link->ap : NULL;
+ struct device *device = ap->host->dev;
+ struct pci_dev *pdev = (!device || !dev_is_pci(device)) ? NULL : to_pci_dev(device);
struct ata_eh_context *ehc = &link->eh_context;
struct ata_device *dev, *link_dev = NULL, *lpm_dev = NULL;
enum ata_lpm_policy old_policy = link->lpm_policy;
@@ -3456,6 +3458,11 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
unsigned int err_mask;
int rc;
+ /* if controller does not support lpm, then sets no LPM flags */
+ if ((pdev && pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) &&
+ !(ap->host->flags & (ATA_HOST_PART | ATA_HOST_SSC | ATA_HOST_DEVSLP)))
+ link->flags |= ATA_LFLAG_NO_LPM;
+
/* if the link or host doesn't do LPM, noop */
if ((link->flags & ATA_LFLAG_NO_LPM) || (ap && !ap->ops->set_lpm))
return 0;
diff --git a/include/linux/libata.h b/include/linux/libata.h
index dc164b7ebbb0..1cec68e5b104 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -276,6 +276,9 @@ enum {
ATA_HOST_STARTED = (1 << 1), /* Host started */
ATA_HOST_PARALLEL_SCAN = (1 << 2), /* Ports on this host can be scanned in parallel */
ATA_HOST_IGNORE_ATA = (1 << 3), /* Ignore ATA devices on this host. */
+ ATA_HOST_PART = (1 << 4), /* Host support partial. */
+ ATA_HOST_SSC = (1 << 5), /* Host support slumber. */
+ ATA_HOST_DEVSLP = (1 << 6), /* Host support devslp. */
/* bits 24:31 of host->flags are reserved for LLD specific flags */
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] EHCI: Clear wakeup signal locked in S0 state when device plug in
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V1P
CVE: NA
----------------------------------------------------------------
If we plug in a LS/FS device on USB2 port of EHCI, it will latch a wakeup
signal in EHCI internal. This is a bug of EHCI for Some project of
ZhaoXin. If enable EHCI runtime suspend and no device attach.
PM core will let EHCI go to D3 to save power. However, once EHCI go to D3,
it will release wakeup signal that latched on device connect to port
during S0. Which will generate a SCI interrupt and bring EHCI to D0.
But without device connect, EHCI will go to D3 again.
So, there is suspend-resume loop and generate SCI interrupt Continuously.
In order to fix this issues, we need to clear the wakeup signal latched
in EHCI when EHCI suspend function is called.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/pci/pci-driver.c | 6 +++++-
drivers/usb/host/ehci-hcd.c | 21 +++++++++++++++++++++
drivers/usb/host/ehci-pci.c | 4 ++++
drivers/usb/host/ehci.h | 1 +
4 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index 45c3a78d6004..9329f4881d42 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -513,7 +513,11 @@ static int pci_restore_standard_config(struct pci_dev *pci_dev)
}
pci_restore_state(pci_dev);
- pci_pme_restore(pci_dev);
+ if (!(pci_dev->vendor == PCI_VENDOR_ID_ZHAOXIN &&
+ pci_dev->device == 0x3104 &&
+ (pci_dev->revision & 0xf0) == 0x90 &&
+ pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI))
+ pci_pme_restore(pci_dev);
return 0;
}
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 8608ac513fb7..0daa6d98f9b9 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1110,6 +1110,27 @@ int ehci_suspend(struct usb_hcd *hcd, bool do_wakeup)
return -EBUSY;
}
+ /* Clear wakeup signal locked in S0 state when device plug in */
+ if (ehci->zx_wakeup_clear == 1) {
+ u32 __iomem *reg = &ehci->regs->port_status[4];
+ u32 t1 = ehci_readl(ehci, reg);
+
+ t1 &= (u32)~0xf0000;
+ t1 |= PORT_TEST_FORCE;
+ ehci_writel(ehci, t1, reg);
+ t1 = ehci_readl(ehci, reg);
+ usleep_range(1000, 2000);
+ t1 &= (u32)~0xf0000;
+ ehci_writel(ehci, t1, reg);
+ usleep_range(1000, 2000);
+ t1 = ehci_readl(ehci, reg);
+ ehci_writel(ehci, t1 | PORT_CSC, reg);
+ udelay(500);
+ t1 = ehci_readl(ehci, &ehci->regs->status);
+ ehci_writel(ehci, t1 & STS_PCD, &ehci->regs->status);
+ ehci_readl(ehci, &ehci->regs->status);
+ }
+
return 0;
}
EXPORT_SYMBOL_GPL(ehci_suspend);
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index baae879dbddd..357dc140e914 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -216,6 +216,10 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
ehci_info(ehci, "applying MosChip frame-index workaround\n");
ehci->frame_index_bug = 1;
break;
+ case PCI_VENDOR_ID_ZHAOXIN:
+ if (pdev->device == 0x3104 && (pdev->revision & 0xf0) == 0x90)
+ ehci->zx_wakeup_clear = 1;
+ break;
}
/* optional debug port, normally in the first BAR */
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index c8e9a48e1d51..9625b6030757 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -218,6 +218,7 @@ struct ehci_hcd { /* one per controller */
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
unsigned need_oc_pp_cycle:1; /* MPC834X port power */
unsigned imx28_write_fix:1; /* For Freescale i.MX28 */
+ unsigned zx_wakeup_clear:1;
/* required for usb32 quirk */
#define OHCI_CTRL_HCFS (3 << 6)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/5] tty: drivers/tty/, stop using tty_schedule_flip()
by Yongqiang Liu 29 Aug '22
by Yongqiang Liu 29 Aug '22
29 Aug '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v4.19.254
commit 6935c7650015e664642556a7e6c9cf23c7dc01ce
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 6d3c58051ce3..db048dbe9f78 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index 250a19f042d7..181381fa5126 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1393,7 +1393,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1418,7 +1418,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index d1d73261575b..9c145ed0dcf7 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -341,7 +341,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 94cad9f86ff9..e3aac11d770f 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -310,7 +310,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -319,7 +319,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -564,7 +564,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index dca627ccece5..20565603a365 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1838,7 +1838,7 @@ static void respond_string(const char *p, struct tty_port *port)
tty_insert_flip_char(port, *p, 0);
p++;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.25.1
1
4

[PATCH openEuler-1.0-LTS] XHCI:Fix some device identify fail when enable xHCI runtime suspend
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V16
CVE: NA
----------------------------------------------------------------
If plug out device form xhci with runtime suspend enabled.
On the one hand, driver will disconnect this device and send disabled
slot command to xhci.
On the other hand, without no device connect to xhci, PM core will
call xhci suspend function to let xhci go to D3 to save power.
However there is a temporal competition to get xhci lock between
disable slot command interrupt and xhci suspend.
If xhci suspend function get xhci lock first, then this function will
clear xhci command ring. It will get error command trb when driver to
handle disable slot command interrupt. This is a serious error for
driver and driver will cleanup xhci. So,any device connect to this
xhci port again will not be recognized.
In order to fix this issues, we let disable slot command interrupt ISR
to get xhci lock first. So, add a delay in xhci suspend function before
to get xhci lock.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/usb/host/xhci-pci.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 238a32cc311c..4c2376a4c1d6 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -223,6 +223,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
xhci->quirks |= XHCI_ZHAOXIN_HOST;
}
+ if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN)
+ xhci->quirks |= XHCI_SUSPEND_DELAY;
+
/* See https://bugzilla.kernel.org/show_bug.cgi?id=79511 */
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
pdev->device == 0x3432)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] can: bcm/raw/isotp: use per module netdevice notifier
by Yongqiang Liu 27 Aug '22
by Yongqiang Liu 27 Aug '22
27 Aug '22
From: Tetsuo Handa <penguin-kernel(a)i-love.sakura.ne.jp>
stable inclusion
from stable-v4.19.196
commit d42c3ebb315618ca536ef764e3f929ce1d5c3485
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5O0T8
CVE: NA
--------------------------------
commit 8d0caedb759683041d9db82069937525999ada53 upstream.
syzbot is reporting hung task at register_netdevice_notifier() [1] and
unregister_netdevice_notifier() [2], for cleanup_net() might perform
time consuming operations while CAN driver's raw/bcm/isotp modules are
calling {register,unregister}_netdevice_notifier() on each socket.
Change raw/bcm/isotp modules to call register_netdevice_notifier() from
module's __init function and call unregister_netdevice_notifier() from
module's __exit function, as with gw/j1939 modules are doing.
Link: https://syzkaller.appspot.com/bug?id=391b9498827788b3cc6830226d4ff5be87107c… [1]
Link: https://syzkaller.appspot.com/bug?id=1724d278c83ca6e6df100a2e320c10d991cf2b… [2]
Link: https://lore.kernel.org/r/54a5f451-05ed-f977-8534-79e7aa2bcc8f@i-love.sakur…
Cc: linux-stable <stable(a)vger.kernel.org>
Reported-by: syzbot <syzbot+355f8edb2ff45d5f95fa(a)syzkaller.appspotmail.com>
Reported-by: syzbot <syzbot+0f1827363a305f74996f(a)syzkaller.appspotmail.com>
Reviewed-by: Kirill Tkhai <ktkhai(a)virtuozzo.com>
Tested-by: syzbot <syzbot+355f8edb2ff45d5f95fa(a)syzkaller.appspotmail.com>
Tested-by: Oliver Hartkopp <socketcan(a)hartkopp.net>
Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp>
Signed-off-by: Marc Kleine-Budde <mkl(a)pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/can/bcm.c | 59 +++++++++++++++++++++++++++++++++++++-----------
net/can/raw.c | 62 +++++++++++++++++++++++++++++++++++++++------------
2 files changed, 94 insertions(+), 27 deletions(-)
diff --git a/net/can/bcm.c b/net/can/bcm.c
index ffc34e911808..db987a1567ba 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -124,7 +124,7 @@ struct bcm_sock {
struct sock sk;
int bound;
int ifindex;
- struct notifier_block notifier;
+ struct list_head notifier;
struct list_head rx_ops;
struct list_head tx_ops;
unsigned long dropped_usr_msgs;
@@ -132,6 +132,10 @@ struct bcm_sock {
char procname [32]; /* inode number in decimal with \0 */
};
+static LIST_HEAD(bcm_notifier_list);
+static DEFINE_SPINLOCK(bcm_notifier_lock);
+static struct bcm_sock *bcm_busy_notifier;
+
static inline struct bcm_sock *bcm_sk(const struct sock *sk)
{
return (struct bcm_sock *)sk;
@@ -1381,20 +1385,15 @@ static int bcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
/*
* notification handler for netdevice status changes
*/
-static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
- void *ptr)
+static void bcm_notify(struct bcm_sock *bo, unsigned long msg,
+ struct net_device *dev)
{
- struct net_device *dev = netdev_notifier_info_to_dev(ptr);
- struct bcm_sock *bo = container_of(nb, struct bcm_sock, notifier);
struct sock *sk = &bo->sk;
struct bcm_op *op;
int notify_enodev = 0;
if (!net_eq(dev_net(dev), sock_net(sk)))
- return NOTIFY_DONE;
-
- if (dev->type != ARPHRD_CAN)
- return NOTIFY_DONE;
+ return;
switch (msg) {
@@ -1429,7 +1428,28 @@ static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
sk->sk_error_report(sk);
}
}
+}
+static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
+ void *ptr)
+{
+ struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+
+ if (dev->type != ARPHRD_CAN)
+ return NOTIFY_DONE;
+ if (msg != NETDEV_UNREGISTER && msg != NETDEV_DOWN)
+ return NOTIFY_DONE;
+ if (unlikely(bcm_busy_notifier)) /* Check for reentrant bug. */
+ return NOTIFY_DONE;
+
+ spin_lock(&bcm_notifier_lock);
+ list_for_each_entry(bcm_busy_notifier, &bcm_notifier_list, notifier) {
+ spin_unlock(&bcm_notifier_lock);
+ bcm_notify(bcm_busy_notifier, msg, dev);
+ spin_lock(&bcm_notifier_lock);
+ }
+ bcm_busy_notifier = NULL;
+ spin_unlock(&bcm_notifier_lock);
return NOTIFY_DONE;
}
@@ -1449,9 +1469,9 @@ static int bcm_init(struct sock *sk)
INIT_LIST_HEAD(&bo->rx_ops);
/* set notifier */
- bo->notifier.notifier_call = bcm_notifier;
-
- register_netdevice_notifier(&bo->notifier);
+ spin_lock(&bcm_notifier_lock);
+ list_add_tail(&bo->notifier, &bcm_notifier_list);
+ spin_unlock(&bcm_notifier_lock);
return 0;
}
@@ -1474,7 +1494,14 @@ static int bcm_release(struct socket *sock)
/* remove bcm_ops, timer, rx_unregister(), etc. */
- unregister_netdevice_notifier(&bo->notifier);
+ spin_lock(&bcm_notifier_lock);
+ while (bcm_busy_notifier == bo) {
+ spin_unlock(&bcm_notifier_lock);
+ schedule_timeout_uninterruptible(1);
+ spin_lock(&bcm_notifier_lock);
+ }
+ list_del(&bo->notifier);
+ spin_unlock(&bcm_notifier_lock);
lock_sock(sk);
@@ -1693,6 +1720,10 @@ static struct pernet_operations canbcm_pernet_ops __read_mostly = {
.exit = canbcm_pernet_exit,
};
+static struct notifier_block canbcm_notifier = {
+ .notifier_call = bcm_notifier
+};
+
static int __init bcm_module_init(void)
{
int err;
@@ -1706,12 +1737,14 @@ static int __init bcm_module_init(void)
}
register_pernet_subsys(&canbcm_pernet_ops);
+ register_netdevice_notifier(&canbcm_notifier);
return 0;
}
static void __exit bcm_module_exit(void)
{
can_proto_unregister(&bcm_can_proto);
+ unregister_netdevice_notifier(&canbcm_notifier);
unregister_pernet_subsys(&canbcm_pernet_ops);
}
diff --git a/net/can/raw.c b/net/can/raw.c
index 8d9c6c64e027..6963293e59fd 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -84,7 +84,7 @@ struct raw_sock {
struct sock sk;
int bound;
int ifindex;
- struct notifier_block notifier;
+ struct list_head notifier;
int loopback;
int recv_own_msgs;
int fd_frames;
@@ -96,6 +96,10 @@ struct raw_sock {
struct uniqframe __percpu *uniq;
};
+static LIST_HEAD(raw_notifier_list);
+static DEFINE_SPINLOCK(raw_notifier_lock);
+static struct raw_sock *raw_busy_notifier;
+
/*
* Return pointer to store the extra msg flags for raw_recvmsg().
* We use the space of one unsigned int beyond the 'struct sockaddr_can'
@@ -266,21 +270,16 @@ static int raw_enable_allfilters(struct net *net, struct net_device *dev,
return err;
}
-static int raw_notifier(struct notifier_block *nb,
- unsigned long msg, void *ptr)
+static void raw_notify(struct raw_sock *ro, unsigned long msg,
+ struct net_device *dev)
{
- struct net_device *dev = netdev_notifier_info_to_dev(ptr);
- struct raw_sock *ro = container_of(nb, struct raw_sock, notifier);
struct sock *sk = &ro->sk;
if (!net_eq(dev_net(dev), sock_net(sk)))
- return NOTIFY_DONE;
-
- if (dev->type != ARPHRD_CAN)
- return NOTIFY_DONE;
+ return;
if (ro->ifindex != dev->ifindex)
- return NOTIFY_DONE;
+ return;
switch (msg) {
@@ -309,7 +308,28 @@ static int raw_notifier(struct notifier_block *nb,
sk->sk_error_report(sk);
break;
}
+}
+
+static int raw_notifier(struct notifier_block *nb, unsigned long msg,
+ void *ptr)
+{
+ struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+
+ if (dev->type != ARPHRD_CAN)
+ return NOTIFY_DONE;
+ if (msg != NETDEV_UNREGISTER && msg != NETDEV_DOWN)
+ return NOTIFY_DONE;
+ if (unlikely(raw_busy_notifier)) /* Check for reentrant bug. */
+ return NOTIFY_DONE;
+ spin_lock(&raw_notifier_lock);
+ list_for_each_entry(raw_busy_notifier, &raw_notifier_list, notifier) {
+ spin_unlock(&raw_notifier_lock);
+ raw_notify(raw_busy_notifier, msg, dev);
+ spin_lock(&raw_notifier_lock);
+ }
+ raw_busy_notifier = NULL;
+ spin_unlock(&raw_notifier_lock);
return NOTIFY_DONE;
}
@@ -338,9 +358,9 @@ static int raw_init(struct sock *sk)
return -ENOMEM;
/* set notifier */
- ro->notifier.notifier_call = raw_notifier;
-
- register_netdevice_notifier(&ro->notifier);
+ spin_lock(&raw_notifier_lock);
+ list_add_tail(&ro->notifier, &raw_notifier_list);
+ spin_unlock(&raw_notifier_lock);
return 0;
}
@@ -355,7 +375,14 @@ static int raw_release(struct socket *sock)
ro = raw_sk(sk);
- unregister_netdevice_notifier(&ro->notifier);
+ spin_lock(&raw_notifier_lock);
+ while (raw_busy_notifier == ro) {
+ spin_unlock(&raw_notifier_lock);
+ schedule_timeout_uninterruptible(1);
+ spin_lock(&raw_notifier_lock);
+ }
+ list_del(&ro->notifier);
+ spin_unlock(&raw_notifier_lock);
lock_sock(sk);
@@ -886,6 +913,10 @@ static const struct can_proto raw_can_proto = {
.prot = &raw_proto,
};
+static struct notifier_block canraw_notifier = {
+ .notifier_call = raw_notifier
+};
+
static __init int raw_module_init(void)
{
int err;
@@ -895,6 +926,8 @@ static __init int raw_module_init(void)
err = can_proto_register(&raw_can_proto);
if (err < 0)
printk(KERN_ERR "can: registration of raw protocol failed\n");
+ else
+ register_netdevice_notifier(&canraw_notifier);
return err;
}
@@ -902,6 +935,7 @@ static __init int raw_module_init(void)
static __exit void raw_module_exit(void)
{
can_proto_unregister(&raw_can_proto);
+ unregister_netdevice_notifier(&canraw_notifier);
}
module_init(raw_module_init);
--
2.25.1
1
0

27 Aug '22
This PR is to add KVM support for SPR new CPU feature, which include
bus_lock_detect,bus lock debug exception, avx_vnni and avx512_fp16.
Test
Boot host with kernel that having KVM support for SPR new instructions and
launch a guest VM with kernel that also have the support for SPR new
instructions.
Then in the guest VM, we can find "bus_lock_detect" "avx_vnni" and "avx512_fp16"
in /proc/cpuinfo.
And, bus lock debug exception is an ability to notify the kernel by an #DB trap
after the instruction acquires a bus lock and is executed when CPL>0. This
allows the kernel to enforce user application throttling or mitigations.
Existence of bus lock debug exception is enumerated via
CPUID.(EAX=7,ECX=0).ECX[24]
Known Issue
N/A
Default config change
N/A
Arnaldo Carvalho de Melo (1):
tools headers UAPI: Sync KVM's kvm.h and vmx.h headers with the kernel
sources
Cathy Zhang (1):
KVM: x86: Expose AVX512_FP16 for supported CPUID
Chenyi Qiang (5):
KVM: X86: Reset the vcpu->run->flags at the beginning of vcpu_run
KVM: VMX: Enable bus lock VM exit
KVM: X86: Rename DR6_INIT to DR6_ACTIVE_LOW
KVM: X86: Add support for the emulation of DR6_BUS_LOCK bit
KVM: nVMX: Fix nested bus lock VM exit
Paolo Bonzini (1):
KVM: X86: Expose bus lock debug exception to guest
Yang Zhong (1):
KVM: Expose AVX_VNNI instruction to guset
arch/x86/include/asm/kvm_host.h | 20 +++++++--
arch/x86/include/asm/vmx.h | 1 +
arch/x86/include/asm/vmxfeatures.h | 1 +
arch/x86/include/uapi/asm/kvm.h | 1 +
arch/x86/include/uapi/asm/vmx.h | 4 +-
arch/x86/kvm/cpuid.c | 6 +--
arch/x86/kvm/emulate.c | 2 +-
arch/x86/kvm/svm/nested.c | 2 +-
arch/x86/kvm/svm/svm.c | 6 +--
arch/x86/kvm/vmx/capabilities.h | 9 ++++
arch/x86/kvm/vmx/nested.c | 10 ++++-
arch/x86/kvm/vmx/vmx.c | 44 ++++++++++++++++--
arch/x86/kvm/vmx/vmx.h | 2 +-
arch/x86/kvm/x86.c | 64 ++++++++++++++++++++-------
include/uapi/linux/kvm.h | 5 +++
tools/arch/x86/include/uapi/asm/kvm.h | 1 +
tools/arch/x86/include/uapi/asm/vmx.h | 4 +-
17 files changed, 147 insertions(+), 35 deletions(-)
--
2.20.1
1
9

[PATCH openEuler-1.0-LTS] CIFS: Fix retry mid list corruption on reconnects
by Yongqiang Liu 27 Aug '22
by Yongqiang Liu 27 Aug '22
27 Aug '22
From: Pavel Shilovsky <pshilov(a)microsoft.com>
mainline inclusion
from mainline-v5.4-rc5
commit abe57073d08c13b95a46ccf48cc9dc957d5c6fdb
category: bugfix
bugzilla: 24367, https://gitee.com/openeuler/kernel/issues/I5OE1W
CVE: NA
--------------------------------
When the client hits reconnect it iterates over the mid
pending queue marking entries for retry and moving them
to a temporary list to issue callbacks later without holding
GlobalMid_Lock. In the same time there is no guarantee that
mids can't be removed from the temporary list or even
freed completely by another thread. It may cause a temporary
list corruption:
[ 430.454897] list_del corruption. prev->next should be ffff98d3a8f316c0, but was 2e885cb266355469
[ 430.464668] ------------[ cut here ]------------
[ 430.466569] kernel BUG at lib/list_debug.c:51!
[ 430.468476] invalid opcode: 0000 [#1] SMP PTI
[ 430.470286] CPU: 0 PID: 13267 Comm: cifsd Kdump: loaded Not tainted 5.4.0-rc3+ #19
[ 430.473472] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[ 430.475872] RIP: 0010:__list_del_entry_valid.cold+0x31/0x55
...
[ 430.510426] Call Trace:
[ 430.511500] cifs_reconnect+0x25e/0x610 [cifs]
[ 430.513350] cifs_readv_from_socket+0x220/0x250 [cifs]
[ 430.515464] cifs_read_from_socket+0x4a/0x70 [cifs]
[ 430.517452] ? try_to_wake_up+0x212/0x650
[ 430.519122] ? cifs_small_buf_get+0x16/0x30 [cifs]
[ 430.521086] ? allocate_buffers+0x66/0x120 [cifs]
[ 430.523019] cifs_demultiplex_thread+0xdc/0xc30 [cifs]
[ 430.525116] kthread+0xfb/0x130
[ 430.526421] ? cifs_handle_standard+0x190/0x190 [cifs]
[ 430.528514] ? kthread_park+0x90/0x90
[ 430.530019] ret_from_fork+0x35/0x40
Fix this by obtaining extra references for mids being retried
and marking them as MID_DELETED which indicates that such a mid
has been dequeued from the pending list.
Also move mid cleanup logic from DeleteMidQEntry to
_cifs_mid_q_entry_release which is called when the last reference
to a particular mid is put. This allows to avoid any use-after-free
of response buffers.
The patch needs to be backported to stable kernels. A stable tag
is not mentioned below because the patch doesn't apply cleanly
to any actively maintained stable kernel.
Reviewed-by: Ronnie Sahlberg <lsahlber(a)redhat.com>
Reviewed-and-tested-by: David Wysochanski <dwysocha(a)redhat.com>
Signed-off-by: Pavel Shilovsky <pshilov(a)microsoft.com>
Signed-off-by: Steve French <stfrench(a)microsoft.com>
conflicts:
fs/cifs/connect.c
fs/cifs/transport.c
Signed-off-by: ChenXiaoSong <chenxiaosong2(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/cifs/connect.c | 10 +++++++++-
fs/cifs/transport.c | 42 +++++++++++++++++++++++-------------------
2 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 36104dd8eb4d..976aae1eaf73 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -443,9 +443,11 @@ cifs_reconnect(struct TCP_Server_Info *server)
spin_lock(&GlobalMid_Lock);
list_for_each_safe(tmp, tmp2, &server->pending_mid_q) {
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
+ kref_get(&mid_entry->refcount);
if (mid_entry->mid_state == MID_REQUEST_SUBMITTED)
mid_entry->mid_state = MID_RETRY_NEEDED;
list_move(&mid_entry->qhead, &retry_list);
+ mid_entry->mid_flags |= MID_DELETED;
}
spin_unlock(&GlobalMid_Lock);
mutex_unlock(&server->srv_mutex);
@@ -455,6 +457,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
list_del_init(&mid_entry->qhead);
mid_entry->callback(mid_entry);
+ cifs_mid_q_entry_release(mid_entry);
}
do {
@@ -743,8 +746,10 @@ dequeue_mid(struct mid_q_entry *mid, bool malformed)
if (mid->mid_flags & MID_DELETED)
printk_once(KERN_WARNING
"trying to dequeue a deleted mid\n");
- else
+ else {
list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
spin_unlock(&GlobalMid_Lock);
}
@@ -818,8 +823,10 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
list_for_each_safe(tmp, tmp2, &server->pending_mid_q) {
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
cifs_dbg(FYI, "Clearing mid 0x%llx\n", mid_entry->mid);
+ kref_get(&mid_entry->refcount);
mid_entry->mid_state = MID_SHUTDOWN;
list_move(&mid_entry->qhead, &dispose_list);
+ mid_entry->mid_flags |= MID_DELETED;
}
spin_unlock(&GlobalMid_Lock);
@@ -829,6 +836,7 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
cifs_dbg(FYI, "Callback mid 0x%llx\n", mid_entry->mid);
list_del_init(&mid_entry->qhead);
mid_entry->callback(mid_entry);
+ cifs_mid_q_entry_release(mid_entry);
}
/* 1/8th of sec is more than enough time for them to exit */
msleep(125);
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 59643acb6d67..eb76f7a59e50 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -85,22 +85,8 @@ AllocMidQEntry(const struct smb_hdr *smb_buffer, struct TCP_Server_Info *server)
static void _cifs_mid_q_entry_release(struct kref *refcount)
{
- struct mid_q_entry *mid = container_of(refcount, struct mid_q_entry,
- refcount);
-
- mempool_free(mid, cifs_mid_poolp);
-}
-
-void cifs_mid_q_entry_release(struct mid_q_entry *midEntry)
-{
- spin_lock(&GlobalMid_Lock);
- kref_put(&midEntry->refcount, _cifs_mid_q_entry_release);
- spin_unlock(&GlobalMid_Lock);
-}
-
-void
-DeleteMidQEntry(struct mid_q_entry *midEntry)
-{
+ struct mid_q_entry *midEntry =
+ container_of(refcount, struct mid_q_entry, refcount);
#ifdef CONFIG_CIFS_STATS2
__le16 command = midEntry->server->vals->lock_cmd;
unsigned long now;
@@ -135,6 +121,19 @@ DeleteMidQEntry(struct mid_q_entry *midEntry)
}
}
#endif
+
+ mempool_free(midEntry, cifs_mid_poolp);
+}
+
+void cifs_mid_q_entry_release(struct mid_q_entry *midEntry)
+{
+ spin_lock(&GlobalMid_Lock);
+ kref_put(&midEntry->refcount, _cifs_mid_q_entry_release);
+ spin_unlock(&GlobalMid_Lock);
+}
+
+void DeleteMidQEntry(struct mid_q_entry *midEntry)
+{
cifs_mid_q_entry_release(midEntry);
}
@@ -142,8 +141,10 @@ void
cifs_delete_mid(struct mid_q_entry *mid)
{
spin_lock(&GlobalMid_Lock);
- list_del_init(&mid->qhead);
- mid->mid_flags |= MID_DELETED;
+ if (!(mid->mid_flags & MID_DELETED)) {
+ list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
spin_unlock(&GlobalMid_Lock);
DeleteMidQEntry(mid);
@@ -711,7 +712,10 @@ cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server)
rc = -EHOSTDOWN;
break;
default:
- list_del_init(&mid->qhead);
+ if (!(mid->mid_flags & MID_DELETED)) {
+ list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
cifs_dbg(VFS, "%s: invalid mid state mid=%llu state=%d\n",
__func__, mid->mid, mid->mid_state);
rc = -EIO;
--
2.25.1
1
0

[PATCH openEuler-22.09] Add openeuler_bpf_scheduler document for openEuler-22.09
by Zheng Zengkai 27 Aug '22
by Zheng Zengkai 27 Aug '22
27 Aug '22
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
openeuler_bpf_scheduler.pdf | Bin 0 -> 1585250 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 openeuler_bpf_scheduler.pdf
diff --git a/openeuler_bpf_scheduler.pdf b/openeuler_bpf_scheduler.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2048395a0af6322c8b42885ea9cbcc719d13b3f3
GIT binary patch
literal 1585250
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⋙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�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π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	H(P|C)2pyc|z-
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%0D#Zy;o>hkM9K#S2>91aNe=*dkb|;j;r>
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	P;?L`nOVo|2O{Mkk4P`ucAc%0sjH=
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%0AKswaK(-O>Q~B=Ye+K*U;bby(9?l<UP?d!@E9+kV
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%0Afu#Es
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�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%0Alti@+Bf_x-ifuB$l
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%0DBM1R2=v@^QHL~Y`zbi1
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�nre_)2J7je6-n0qd_l@lsIMte;gy
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
literal 0
HcmV?d00001
--
2.20.1
1
0

[PATCH] KVM: arm64: vgic-its: Change default outer cacheability for {PEND, PROP}BASER
by Laibin Qiu 26 Aug '22
by Laibin Qiu 26 Aug '22
26 Aug '22
From: Alexander Graf <graf(a)amazon.com>
mainline inclusion
from mainline-v5.9
commit 731532176716e2775a5d21115bb9c5c61e0cb704
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5O7IH
CVE: NA
-------------
PENDBASER and PROPBASER define the outer caching mode for LPI tables.
The memory backing them may not be outer sharable, so we mark them as nC
by default. This however, breaks Windows on ARM which only accepts
SameAsInner or RaWaWb as values for outer cachability.
We do today already allow the outer mode to be set to SameAsInner
explicitly, so the easy fix is to default to that instead of nC for
situations when an OS asks for a not fulfillable cachability request.
This fixes booting Windows in KVM with vgicv3 and ITS enabled for me.
Signed-off-by: Alexander Graf <graf(a)amazon.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
Link: https://lore.kernel.org/r/20200701140206.8664-1-graf@amazon.com
Signed-off-by: Zengruan Ye <yezengruan(a)huawei.com>
Reviewed-by: Zenghui Yu <yuzenghui(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
virt/kvm/arm/vgic/vgic-mmio-v3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c
index 11ba1b036b82..795ebd385dcf 100644
--- a/virt/kvm/arm/vgic/vgic-mmio-v3.c
+++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c
@@ -337,7 +337,7 @@ u64 vgic_sanitise_outer_cacheability(u64 field)
case GIC_BASER_CACHE_nC:
return field;
default:
- return GIC_BASER_CACHE_nC;
+ return GIC_BASER_CACHE_SameAsInner;
}
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] dm verity: set DM_TARGET_IMMUTABLE feature flag
by Yongqiang Liu 25 Aug '22
by Yongqiang Liu 25 Aug '22
25 Aug '22
From: Sarthak Kukreti <sarthakkukreti(a)google.com>
stable inclusion
from stable-4.19.246
commit 6bff6107d1364c95109609c3fd680e6c8d7fa503
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5M4ZO
CVE: CVE-2022-2503
--------------------------------
commit 4caae58406f8ceb741603eee460d79bacca9b1b5 upstream.
The device-mapper framework provides a mechanism to mark targets as
immutable (and hence fail table reloads that try to change the target
type). Add the DM_TARGET_IMMUTABLE flag to the dm-verity target's
feature flags to prevent switching the verity target with a different
target type.
Fixes: a4ffc152198e ("dm: add verity target")
Cc: stable(a)vger.kernel.org
Signed-off-by: Sarthak Kukreti <sarthakkukreti(a)google.com>
Reviewed-by: Kees Cook <keescook(a)chromium.org>
Signed-off-by: Mike Snitzer <snitzer(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Conflicts:
drivers/md/dm-verity-target.c
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/dm-verity-target.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index f4221c4e8d3d..e6dd19d14cde 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -1242,6 +1242,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
static struct target_type verity_target = {
.name = "verity",
+ .features = DM_TARGET_IMMUTABLE,
.version = {1, 5, 0},
.module = THIS_MODULE,
.ctr = verity_ctr,
--
2.25.1
1
0

25 Aug '22
From: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I40QDN
CVE: NA
----------------------------------------------------------------
Fix a logic issue when display Zhaoxin XHCI root hub speed.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/usb/host/xhci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 8fabb8757fdc..fe042cf13bf8 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -5132,10 +5132,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
if (XHCI_EXT_PORT_PSIV(xhci->port_caps[j].psi[i]) >= 5)
minor_rev = 1;
}
- if (minor_rev != 1) {
- hcd->speed = HCD_USB3;
- hcd->self.root_hub->speed = USB_SPEED_SUPER;
- }
+ }
+ if (minor_rev != 1) {
+ hcd->speed = HCD_USB3;
+ hcd->self.root_hub->speed = USB_SPEED_SUPER;
}
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/2] Revert "scsi: hisi_sas: Modify v3 HW I/O processing when SATA_DISK_ERR bit is set and NCQ Error occurs"
by Yongqiang Liu 25 Aug '22
by Yongqiang Liu 25 Aug '22
25 Aug '22
From: Xingui Yang <yangxingui(a)huawei.com>
driver inclusion
category: bugfix
buzialla: https://gitee.com/openeuler/kernel/issues/I5NIU1
-----------------------------
This reverts commit fc8110704ff013b290836780cb25c9c399648e13.
After an error occurs in the NCQ scenario, the policy similar to the ahci
driver is used to handle NCQ exceptions. The libata interface
ata_link_abort is invoked to process all I/Os on the link. Compared with
the current solution, the code modification amount is small, and the
possibility of NCQ being disabled decreases. That is, the probability of
performance deterioration is low. So revert it.
Signed-off-by: Xingui Yang <yangxingui(a)huawei.com>
Reviewed-by: kang fenglong <kangfenglong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/hisi_sas/hisi_sas.h | 4 +-
drivers/scsi/hisi_sas/hisi_sas_main.c | 81 ++-------------------
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 97 +++++---------------------
5 files changed, 24 insertions(+), 162 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas.h b/drivers/scsi/hisi_sas/hisi_sas.h
index 8628dfea9703..a791401be7b3 100644
--- a/drivers/scsi/hisi_sas/hisi_sas.h
+++ b/drivers/scsi/hisi_sas/hisi_sas.h
@@ -600,8 +600,7 @@ extern void hisi_sas_phy_enable(struct hisi_hba *hisi_hba, int phy_no,
extern void hisi_sas_phy_down(struct hisi_hba *hisi_hba, int phy_no, int rdy);
extern void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba,
struct sas_task *task,
- struct hisi_sas_slot *slot,
- bool need_lock);
+ struct hisi_sas_slot *slot);
extern void hisi_sas_init_mem(struct hisi_hba *hisi_hba);
extern void hisi_sas_rst_work_handler(struct work_struct *work);
extern void hisi_sas_sync_rst_work_handler(struct work_struct *work);
@@ -612,7 +611,6 @@ extern void hisi_sas_release_tasks(struct hisi_hba *hisi_hba);
extern u8 hisi_sas_get_prog_phy_linkrate_mask(enum sas_linkrate max);
extern void hisi_sas_controller_reset_prepare(struct hisi_hba *hisi_hba);
extern void hisi_sas_controller_reset_done(struct hisi_hba *hisi_hba);
-extern void hisi_sas_complete_disk_io(struct hisi_sas_device *sas_dev);
extern void hisi_sas_debugfs_init(struct hisi_hba *hisi_hba);
extern void hisi_sas_debugfs_exit(struct hisi_hba *hisi_hba);
extern void hisi_sas_snapshot_regs(struct hisi_hba *hisi_hba);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 5de1e8ba5c6a..93df1c6b94c7 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -229,7 +229,7 @@ static void hisi_sas_slot_index_init(struct hisi_hba *hisi_hba)
}
void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
- struct hisi_sas_slot *slot, bool need_lock)
+ struct hisi_sas_slot *slot)
{
unsigned long flags;
int device_id = slot->device_id;
@@ -260,13 +260,9 @@ void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
}
}
- if (need_lock) {
- spin_lock_irqsave(&sas_dev->lock, flags);
- list_del_init(&slot->entry);
- spin_unlock_irqrestore(&sas_dev->lock, flags);
- } else {
- list_del_init(&slot->entry);
- }
+ spin_lock_irqsave(&sas_dev->lock, flags);
+ list_del_init(&slot->entry);
+ spin_unlock_irqrestore(&sas_dev->lock, flags);
memset(slot, 0, offsetof(struct hisi_sas_slot, buf));
@@ -1015,7 +1011,7 @@ static void hisi_sas_do_release_task(struct hisi_hba *hisi_hba, struct sas_task
task->task_done(task);
}
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
}
static void hisi_sas_release_task(struct hisi_hba *hisi_hba,
@@ -3751,73 +3747,6 @@ int hisi_sas_remove(struct platform_device *pdev)
}
EXPORT_SYMBOL_GPL(hisi_sas_remove);
-void hisi_sas_complete_disk_io(struct hisi_sas_device *sas_dev)
-{
- struct hisi_hba *hisi_hba;
- struct device *dev;
- struct domain_device *device;
- struct hisi_sas_slot *slot, *slot2;
- struct sas_task *task;
- struct task_status_struct *ts;
- struct sas_ha_struct *ha;
- bool is_internal;
- unsigned long flags;
-
- if (!sas_dev)
- return;
-
- hisi_hba = sas_dev->hisi_hba;
- dev = hisi_hba->dev;
- device = sas_dev->sas_device;
- spin_lock_irqsave(&sas_dev->lock, flags);
- hisi_sas_dereg_device(hisi_hba, device);
- list_for_each_entry_safe(slot, slot2, &sas_dev->list, entry) {
- task = slot->task;
- if (unlikely(!task || !task->lldd_task || !task->dev))
- continue;
-
- spin_lock_irqsave(&task->task_state_lock, flags);
- if ((task->task_state_flags & SAS_TASK_STATE_ABORTED) ||
- (task->task_state_flags & SAS_TASK_STATE_DONE)) {
- spin_unlock_irqrestore(&task->task_state_lock, flags);
- dev_info(dev, "slot complete: iptt=%d task(%pK) already finished.\n",
- slot->idx, task);
- continue;
- }
-
- task->task_state_flags |= SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
-
- is_internal = slot->is_internal;
- ts = &task->task_status;
- device = task->dev;
- ha = device->port->ha;
-
- memset(ts, 0, sizeof(*ts));
- ts->stat = SAS_ABORTED_TASK;
- ts->resp = SAS_TASK_COMPLETE;
-
- hisi_sas_slot_task_free(hisi_hba, task, slot, false);
-
- if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
- spin_lock_irqsave(&device->done_lock, flags);
- if (test_bit(SAS_HA_FROZEN, &ha->state)) {
- spin_unlock_irqrestore(&device->done_lock,
- flags);
- dev_info(dev, "slot complete: task(%pK) ignored\n ",
- task);
- continue;
- }
- spin_unlock_irqrestore(&device->done_lock, flags);
- }
-
- if (task->task_done)
- task->task_done(task);
- }
- spin_unlock_irqrestore(&sas_dev->lock, flags);
-}
-EXPORT_SYMBOL_GPL(hisi_sas_complete_disk_io);
-
bool hisi_sas_debugfs_enable = true;
EXPORT_SYMBOL_GPL(hisi_sas_debugfs_enable);
module_param_named(debugfs_enable, hisi_sas_debugfs_enable, bool, 0444);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 6485e2b6456c..452665c641a6 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1320,7 +1320,7 @@ static int slot_complete_v1_hw(struct hisi_hba *hisi_hba,
}
out:
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
sts = ts->stat;
if (task->task_done)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index bd0639fd5162..1c452f16b6e2 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -2480,7 +2480,7 @@ slot_complete_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
}
task->task_state_flags |= SAS_TASK_STATE_DONE;
spin_unlock_irqrestore(&task->task_state_lock, flags);
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
spin_lock_irqsave(&device->done_lock, flags);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index e84246c2331a..79026e887ee8 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -402,17 +402,6 @@
#define CMPLT_HDR_ERX_MSK (0x1 << CMPLT_HDR_ERX_OFF)
#define CMPLT_HDR_ABORT_STAT_OFF 13
#define CMPLT_HDR_ABORT_STAT_MSK (0x7 << CMPLT_HDR_ABORT_STAT_OFF)
-/* bit[9:2] Error Phase */
-#define ERR_PHASE_DQ_ENTRY_PARSING BIT(2)
-#define ERR_PHASE_FRAME_LINK_STAGE BIT(3)
-#define ERR_PHASE_CMD_TM_FRAME_SEND_STAGE BIT(4)
-#define ERR_PHASE_DATA_FRAME_SEND_STAGE BIT(5)
-#define ERR_PHASE_DATA_FRAME_REV_STAGE BIT(6)
-#define ERR_PHASE_XFERDY_FRAME_REV_STAGE BIT(7)
-#define ERR_PHASE_RESPONSE_FRAME_REV_STAGE BIT(8)
-#define ERR_PHASE_DPH_SCHEDULING BIT(9)
-#define ERR_PHASE_FRAME_REV_STAGE (ERR_PHASE_DATA_FRAME_REV_STAGE | \
- ERR_PHASE_XFERDY_FRAME_REV_STAGE | ERR_PHASE_RESPONSE_FRAME_REV_STAGE)
/* abort_stat */
#define STAT_IO_NOT_VALID 0x1
#define STAT_IO_NO_DEVICE 0x2
@@ -424,19 +413,8 @@
#define CMPLT_HDR_DEV_ID_OFF 16
#define CMPLT_HDR_DEV_ID_MSK (0xffff << CMPLT_HDR_DEV_ID_OFF)
/* dw3 */
-#define COMLT_HDR_SATA_DISK_ERR_OFF 16
-#define CMPLT_HDR_SATA_DISK_ERR_MSK (0x1 << COMLT_HDR_SATA_DISK_ERR_OFF)
#define CMPLT_HDR_IO_IN_TARGET_OFF 17
#define CMPLT_HDR_IO_IN_TARGET_MSK (0x1 << CMPLT_HDR_IO_IN_TARGET_OFF)
-/* bit[31:24] ERR_FIS_TYPE */
-#define CQ_PIO_DATA_FIS_TYPE BIT(24)
-#define CQ_PIO_SETUP_FIS_TYPE BIT(25)
-#define CQ_D2H_FIS_TYPE BIT(26)
-#define CQ_WT_PIO_SETUP_FIS_TYPE BIT(27)
-#define CQ_WT_DMA_SETUP_FIS_TYPE BIT(28)
-#define CQ_RD_DMA_SETUP_FIS_TYPE BIT(29)
-#define CQ_DMA_ACTIVE_FIS_TYPE BIT(30)
-#define CQ_SDB_FIS_TYPE BIT(31)
/* ITCT header */
/* qw0 */
@@ -2255,26 +2233,6 @@ static void hisi_sas_set_sense_data(struct sas_task *task,
}
}
-static bool is_err_fis(u32 dw0)
-{
- /* 0x3 means abnormal completion */
- return ((dw0 & CMPLT_HDR_CMPLT_MSK) == 0x3) &&
- (dw0 & ERR_PHASE_FRAME_REV_STAGE);
-}
-
-static bool is_ncq_err(struct hisi_sas_complete_v3_hdr *complete_hdr)
-{
- u32 dw0, dw3;
-
- dw0 = le32_to_cpu(complete_hdr->dw0);
- dw3 = le32_to_cpu(complete_hdr->dw3);
-
- if (!is_err_fis(dw0) || !(dw3 & CMPLT_HDR_SATA_DISK_ERR_MSK))
- return false;
-
- return dw3 & CQ_SDB_FIS_TYPE;
-}
-
static void
slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
struct hisi_sas_slot *slot)
@@ -2378,24 +2336,16 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
if (unlikely(!task || !task->lldd_task || !task->dev))
return -EINVAL;
- spin_lock_irqsave(&task->task_state_lock, flags);
- if (task->task_state_flags & SAS_TASK_STATE_ABORTED ||
- task->task_state_flags & SAS_TASK_STATE_DONE) {
- spin_unlock_irqrestore(&task->task_state_lock, flags);
- dev_info(dev, "slot complete: iptt=%d task(%pK) already finished.\n",
- slot->idx, task);
- return SAS_ABORTED_TASK;
- }
- task->task_state_flags &=
- ~(SAS_TASK_STATE_PENDING | SAS_TASK_AT_INITIATOR);
- task->task_state_flags |= SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
-
ts = &task->task_status;
device = task->dev;
ha = device->port->ha;
sas_dev = device->lldd_dev;
+ spin_lock_irqsave(&task->task_state_lock, flags);
+ task->task_state_flags &=
+ ~(SAS_TASK_STATE_PENDING | SAS_TASK_AT_INITIATOR);
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+
memset(ts, 0, sizeof(*ts));
ts->resp = SAS_TASK_COMPLETE;
@@ -2486,9 +2436,6 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
iu->resp_data[0]);
}
if (unlikely(slot->abort)) {
- spin_lock_irqsave(&task->task_state_lock, flags);
- task->task_state_flags &= ~SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
sas_task_abort(task);
return ts->stat;
}
@@ -2552,7 +2499,15 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
out:
sts = ts->stat;
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ spin_lock_irqsave(&task->task_state_lock, flags);
+ if (task->task_state_flags & SAS_TASK_STATE_ABORTED) {
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+ dev_info(dev, "slot complete: task(%pK) aborted\n", task);
+ return SAS_ABORTED_TASK;
+ }
+ task->task_state_flags |= SAS_TASK_STATE_DONE;
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
spin_lock_irqsave(&device->done_lock, flags);
@@ -2588,32 +2543,12 @@ static void cq_tasklet_v3_hw(unsigned long val)
while (rd_point != wr_point) {
struct hisi_sas_complete_v3_hdr *complete_hdr;
struct device *dev = hisi_hba->dev;
- u32 dw0, dw1, dw3;
int iptt;
complete_hdr = &complete_queue[rd_point];
- dw0 = le32_to_cpu(complete_hdr->dw0);
- dw1 = le32_to_cpu(complete_hdr->dw1);
- dw3 = le32_to_cpu(complete_hdr->dw3);
- iptt = dw1 & CMPLT_HDR_IPTT_MSK;
- /*
- * check for NCQ error and current iptt is invalid, all NCQ
- * commands should be aborted
- */
- if (unlikely(is_ncq_err(complete_hdr))) {
- int device_id = (dw1 & CMPLT_HDR_DEV_ID_MSK) >>
- CMPLT_HDR_DEV_ID_OFF;
- struct hisi_sas_device *sas_dev =
- &hisi_hba->devices[device_id];
- struct hisi_sas_itct *itct =
- &hisi_hba->itct[device_id];
-
- dev_err(dev, "erroneous completion ncq err dev id=%d sas_addr=0x%llx CQ hdr: 0x%x 0x%x 0x%x 0x%x\n",
- device_id, itct->sas_addr, dw0, dw1,
- complete_hdr->act, dw3);
- hisi_sas_complete_disk_io(sas_dev);
- } else if (likely(iptt < HISI_SAS_COMMAND_ENTRIES_V3_HW)) {
+ iptt = (complete_hdr->dw1) & CMPLT_HDR_IPTT_MSK;
+ if (likely(iptt < HISI_SAS_COMMAND_ENTRIES_V3_HW)) {
slot = &hisi_hba->slot_info[iptt];
slot->cmplt_queue_slot = rd_point;
slot->cmplt_queue = queue;
--
2.25.1
1
1
This set introduces CO-RE support in the kernel.
There are several reasons to add such support:
1.It's a step toward signed BPF programs.
2.It allows golang like languages that struggle to adopt libbpf
to take advantage of CO-RE powers.
3.Currently the field accessed by 'ldx [R1 + 10]' insn is recognized
by the verifier purely based on +10 offset. If R1 points to a union
the verifier picks one of the fields at this offset.
With CO-RE the kernel can disambiguate the field access.
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (55):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
selftests/bpf: Convert few tests to light skeleton.
selftests/bpf: Convert atomics test to light skeleton.
selftests/bpf: Convert test printk to use rodata.
selftests/bpf: Convert test trace_printk to lskel.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
selftests/bpf: Improve inner_map test coverage.
selftests/bpf: Convert map_ptr_kern test to use light skeleton.
selftests/bpf: Additional test for CO-RE in the kernel.
selftests/bpf: Add CO-RE relocations to verifier scale test.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (148):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
selftests/bpf: Fix GCC11 compiler warnings in -O2 mode
libbpf: Fix logic for finding matching program for CO-RE relocation
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (6):
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (5):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (6):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
libbpf: Use __BYTE_ORDER__
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (5):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
selftests/bpf: Add re-attach test to fentry_test
selftests/bpf: Add re-attach test to fexit_test
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (22):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
bpf: Introduce BPF support for kernel module function calls
bpf: Be conservative while processing invalid kfunc calls
bpf: btf: Introduce helpers for dynamic BTF set registration
tools: Allow specifying base BTF file in resolve_btfids
libbpf: Support kernel module function calls
libbpf: Resolve invalid weak kfunc calls with imm = 0, off = 0
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: selftests: Add selftests for module kfunc support
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
selftests/bpf: Add weak/typeless ksym test for light skeleton
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (10):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
bpf: selftests: Add kfunc_call test
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (3):
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (26):
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 153 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 48 +-
include/linux/bpfptr.h | 76 +
include/linux/btf.h | 143 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 256 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 29 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1457 ++++-
kernel/bpf/core.c | 157 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 4 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1676 +++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 321 +-
net/core/filter.c | 2 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 139 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 66 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 968 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 273 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2097 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5335 +++++++++--------
tools/lib/bpf/libbpf.h | 172 +-
tools/lib/bpf/libbpf.map | 50 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 302 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 2 +
tools/testing/selftests/bpf/Makefile | 200 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 76 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../selftests/bpf/prog_tests/core_kern.c | 14 +
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fentry_fexit.c | 22 +-
.../selftests/bpf/prog_tests/fentry_test.c | 58 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/fexit_test.c | 58 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/kfunc_call.c | 59 +
.../selftests/bpf/prog_tests/ksyms_btf.c | 65 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 62 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 21 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 27 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 53 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../selftests/bpf/prog_tests/trace_printk.c | 25 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
tools/testing/selftests/bpf/progs/core_kern.c | 104 +
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
.../selftests/bpf/progs/kfunc_call_test.c | 47 +
.../bpf/progs/kfunc_call_test_subprog.c | 42 +
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 20 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 50 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 5 +-
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/progs/test_verif_scale2.c | 4 +-
.../selftests/bpf/progs/trace_printk.c | 6 +-
.../selftests/bpf/test_bpftool_build.sh | 4 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 231 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 83 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 35 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
294 files changed, 25168 insertions(+), 6337 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_kern.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/kfunc_call.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/core_kern.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
391

[PATCH openEuler-1.0-LTS 1/2] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Yongqiang Liu 23 Aug '22
by Yongqiang Liu 23 Aug '22
23 Aug '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
--------------------------------
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
conflict:
net/netfilter/nf_tables_api.c
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index c857c77bd727..ea9039ee8098 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3039,6 +3039,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3049,6 +3050,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3069,7 +3071,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.25.1
1
1

[PATCH openEuler-22.09 v4 00/21] scheduler BPF: preempt, pick next task, select core and samples
by Zheng Zengkai 22 Aug '22
by Zheng Zengkai 22 Aug '22
22 Aug '22
This patchset aims to introduce tag mechanism, that is,
the tag field is added to struct task_struct and struct task_group.
Users can use the file system interface to mark different tags for specific workloads.
Other kernel subsystem can use the helper function to set different tags for workloads.
The sched bpf prog obtains the tags to detect different workloads.
It also aims to add new BPF hooks to the schduler in select_task_rq_fair()
and entity_before() which use to impact the "select rq" and "pick next task" process.
The helper functions is also added to obtanin kernel state like cpu statistics
and cpu topology. In addition to that, there are cpumask ops helpers collection,
a lib for sched bpf prog, and the samples.
Chen Hui (11):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
samples/bpf: Update bpf loader for sched section names
bpf: sched: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add three hooks in select_task_rq_fair()
Guan Jing (2):
sched: programmable: Add hook for pick next task
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (5):
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
sched: programmable: add bpf_sched_tg_tag_of helper function
samples: bpf: Add bpf sched preempt sample program
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 +++++
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 151 +++++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 436 ++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 97 ++++++
kernel/sched/core.c | 103 ++++++
kernel/sched/fair.c | 64 +++-
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 56 ++++
samples/bpf/sched_pick_task_user.c | 94 ++++++
samples/bpf/sched_preempt_kern.c | 147 +++++++++
samples/bpf/sched_preempt_user.c | 140 ++++++++
samples/bpf/sched_select_core_kern.c | 259 +++++++++++++++
samples/bpf/sched_select_core_user.c | 125 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 151 +++++++++
tools/lib/bpf/libbpf_sched.h | 473 +++++++++++++++++++++++++++
25 files changed, 2558 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.33.0
1
21

[PATCH openEuler-1.0-LTS 1/2] x86/speculation: Add RSB VM Exit protections
by Yongqiang Liu 19 Aug '22
by Yongqiang Liu 19 Aug '22
19 Aug '22
From: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
stable inclusion
from stable-v4.19.255
commit b6c5011934a15762cd694e36fe74f2f2f93eac9b
category: bugfix
bugzilla: 187492, https://gitee.com/src-openeuler/kernel/issues/I5N1SO
CVE: CVE-2022-26373
--------------------------------
commit 2b1299322016731d56807aa49254a5ea3080b6b3 upstream.
tl;dr: The Enhanced IBRS mitigation for Spectre v2 does not work as
documented for RET instructions after VM exits. Mitigate it with a new
one-entry RSB stuffing mechanism and a new LFENCE.
== Background ==
Indirect Branch Restricted Speculation (IBRS) was designed to help
mitigate Branch Target Injection and Speculative Store Bypass, i.e.
Spectre, attacks. IBRS prevents software run in less privileged modes
from affecting branch prediction in more privileged modes. IBRS requires
the MSR to be written on every privilege level change.
To overcome some of the performance issues of IBRS, Enhanced IBRS was
introduced. eIBRS is an "always on" IBRS, in other words, just turn
it on once instead of writing the MSR on every privilege level change.
When eIBRS is enabled, more privileged modes should be protected from
less privileged modes, including protecting VMMs from guests.
== Problem ==
Here's a simplification of how guests are run on Linux' KVM:
void run_kvm_guest(void)
{
// Prepare to run guest
VMRESUME();
// Clean up after guest runs
}
The execution flow for that would look something like this to the
processor:
1. Host-side: call run_kvm_guest()
2. Host-side: VMRESUME
3. Guest runs, does "CALL guest_function"
4. VM exit, host runs again
5. Host might make some "cleanup" function calls
6. Host-side: RET from run_kvm_guest()
Now, when back on the host, there are a couple of possible scenarios of
post-guest activity the host needs to do before executing host code:
* on pre-eIBRS hardware (legacy IBRS, or nothing at all), the RSB is not
touched and Linux has to do a 32-entry stuffing.
* on eIBRS hardware, VM exit with IBRS enabled, or restoring the host
IBRS=1 shortly after VM exit, has a documented side effect of flushing
the RSB except in this PBRSB situation where the software needs to stuff
the last RSB entry "by hand".
IOW, with eIBRS supported, host RET instructions should no longer be
influenced by guest behavior after the host retires a single CALL
instruction.
However, if the RET instructions are "unbalanced" with CALLs after a VM
exit as is the RET in #6, it might speculatively use the address for the
instruction after the CALL in #3 as an RSB prediction. This is a problem
since the (untrusted) guest controls this address.
Balanced CALL/RET instruction pairs such as in step #5 are not affected.
== Solution ==
The PBRSB issue affects a wide variety of Intel processors which
support eIBRS. But not all of them need mitigation. Today,
X86_FEATURE_RETPOLINE triggers an RSB filling sequence that mitigates
PBRSB. Systems setting RETPOLINE need no further mitigation - i.e.,
eIBRS systems which enable retpoline explicitly.
However, such systems (X86_FEATURE_IBRS_ENHANCED) do not set RETPOLINE
and most of them need a new mitigation.
Therefore, introduce a new feature flag X86_FEATURE_RSB_VMEXIT_LITE
which triggers a lighter-weight PBRSB mitigation versus RSB Filling at
vmexit.
The lighter-weight mitigation performs a CALL instruction which is
immediately followed by a speculative execution barrier (INT3). This
steers speculative execution to the barrier -- just like a retpoline
-- which ensures that speculation can never reach an unbalanced RET.
Then, ensure this CALL is retired before continuing execution with an
LFENCE.
In other words, the window of exposure is opened at VM exit where RET
behavior is troublesome. While the window is open, force RSB predictions
sampling for RET targets to a dead end at the INT3. Close the window
with the LFENCE.
There is a subset of eIBRS systems which are not vulnerable to PBRSB.
Add these systems to the cpu_vuln_whitelist[] as NO_EIBRS_PBRSB.
Future systems that aren't vulnerable will set ARCH_CAP_PBRSB_NO.
[ bp: Massage, incorporate review comments from Andy Cooper. ]
[ Pawan: Update commit message to replace RSB_VMEXIT with RETPOLINE ]
Signed-off-by: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
Co-developed-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
conflict:
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/common.c
Signed-off-by: Chen Jiahao <chenjiahao16(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Liao Chang <liaochang1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
Documentation/admin-guide/hw-vuln/spectre.rst | 8 +++
arch/x86/include/asm/cpufeatures.h | 2 +
arch/x86/include/asm/msr-index.h | 4 ++
arch/x86/include/asm/nospec-branch.h | 15 +++++
arch/x86/kernel/cpu/bugs.c | 61 ++++++++++++++++++-
arch/x86/kernel/cpu/common.c | 12 +++-
arch/x86/kvm/vmx.c | 6 +-
7 files changed, 102 insertions(+), 6 deletions(-)
diff --git a/Documentation/admin-guide/hw-vuln/spectre.rst b/Documentation/admin-guide/hw-vuln/spectre.rst
index 3a6e1fcad3c0..a4cb79d0dd57 100644
--- a/Documentation/admin-guide/hw-vuln/spectre.rst
+++ b/Documentation/admin-guide/hw-vuln/spectre.rst
@@ -422,6 +422,14 @@ The possible values in this file are:
'RSB filling' Protection of RSB on context switch enabled
============= ===========================================
+ - EIBRS Post-barrier Return Stack Buffer (PBRSB) protection status:
+
+ =========================== =======================================================
+ 'PBRSB-eIBRS: SW sequence' CPU is affected and protection of RSB on VMEXIT enabled
+ 'PBRSB-eIBRS: Vulnerable' CPU is vulnerable
+ 'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB
+ =========================== =======================================================
+
Full mitigation might require a microcode update from the CPU
vendor. When the necessary microcode is not available, the kernel will
report vulnerability.
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 249cd7a5ade5..46f860f8ea25 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -304,6 +304,7 @@
#define X86_FEATURE_CQM_MBM_LOCAL (11*32+ 3) /* LLC Local MBM monitoring */
#define X86_FEATURE_FENCE_SWAPGS_USER (11*32+ 4) /* "" LFENCE in user entry SWAPGS path */
#define X86_FEATURE_FENCE_SWAPGS_KERNEL (11*32+ 5) /* "" LFENCE in kernel entry SWAPGS path */
+#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+ 6) /* "" Fill RSB on VM exit when EIBRS is enabled */
/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */
#define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */
@@ -421,5 +422,6 @@
#define X86_BUG_ITLB_MULTIHIT X86_BUG(23) /* CPU may incur MCE during certain page attribute changes */
#define X86_BUG_SRBDS X86_BUG(24) /* CPU may leak RNG bits if not mitigated */
#define X86_BUG_MMIO_STALE_DATA X86_BUG(25) /* CPU is affected by Processor MMIO Stale Data vulnerabilities */
+#define X86_BUG_EIBRS_PBRSB X86_BUG(26) /* EIBRS is vulnerable to Post Barrier RSB Predictions */
#endif /* _ASM_X86_CPUFEATURES_H */
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index a29505c3d14d..8688bd4a5e89 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -120,6 +120,10 @@
* bit available to control VERW
* behavior.
*/
+#define ARCH_CAP_PBRSB_NO BIT(24) /*
+ * Not susceptible to Post-Barrier
+ * Return Stack Buffer Predictions.
+ */
#define MSR_IA32_FLUSH_CMD 0x0000010b
#define L1D_FLUSH BIT(0) /*
diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
index 0a8214895698..1f2a6f183d18 100644
--- a/arch/x86/include/asm/nospec-branch.h
+++ b/arch/x86/include/asm/nospec-branch.h
@@ -54,6 +54,14 @@
jnz 771b; \
add $(BITS_PER_LONG/8) * nr, sp;
+/* Sequence to mitigate PBRSB on eIBRS CPUs */
+#define __ISSUE_UNBALANCED_RET_GUARD(sp) \
+ call 881f; \
+ int3; \
+881: \
+ add $(BITS_PER_LONG/8), sp; \
+ lfence;
+
#ifdef __ASSEMBLY__
/*
@@ -269,6 +277,13 @@ static inline void vmexit_fill_RSB(void)
: "=r" (loops), ASM_CALL_CONSTRAINT
: : "memory" );
#endif
+ asm volatile (ANNOTATE_NOSPEC_ALTERNATIVE
+ ALTERNATIVE("jmp 920f",
+ __stringify(__ISSUE_UNBALANCED_RET_GUARD(%0)),
+ X86_FEATURE_RSB_VMEXIT_LITE)
+ "920:"
+ : ASM_CALL_CONSTRAINT
+ : : "memory" );
}
static __always_inline
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 32cd95cc8eab..3ba948bbd77d 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1043,6 +1043,49 @@ static enum spectre_v2_mitigation __init spectre_v2_select_retpoline(void)
return SPECTRE_V2_RETPOLINE;
}
+static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_mitigation mode)
+{
+ /*
+ * Similar to context switches, there are two types of RSB attacks
+ * after VM exit:
+ *
+ * 1) RSB underflow
+ *
+ * 2) Poisoned RSB entry
+ *
+ * When retpoline is enabled, both are mitigated by filling/clearing
+ * the RSB.
+ *
+ * When IBRS is enabled, while #1 would be mitigated by the IBRS branch
+ * prediction isolation protections, RSB still needs to be cleared
+ * because of #2. Note that SMEP provides no protection here, unlike
+ * user-space-poisoned RSB entries.
+ *
+ * eIBRS should protect against RSB poisoning, but if the EIBRS_PBRSB
+ * bug is present then a LITE version of RSB protection is required,
+ * just a single call needs to retire before a RET is executed.
+ */
+ switch (mode) {
+ case SPECTRE_V2_NONE:
+ /* These modes already fill RSB at vmexit */
+ case SPECTRE_V2_LFENCE:
+ case SPECTRE_V2_RETPOLINE:
+ case SPECTRE_V2_EIBRS_RETPOLINE:
+ return;
+
+ case SPECTRE_V2_EIBRS_LFENCE:
+ case SPECTRE_V2_EIBRS:
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT_LITE);
+ pr_info("Spectre v2 / PBRSB-eIBRS: Retire a single CALL on VMEXIT\n");
+ }
+ return;
+ }
+
+ pr_warn_once("Unknown Spectre v2 mode, disabling RSB mitigation at VM exit");
+ dump_stack();
+}
+
static void __init spectre_v2_select_mitigation(void)
{
enum spectre_v2_mitigation_cmd cmd = spectre_v2_parse_cmdline();
@@ -1135,6 +1178,8 @@ static void __init spectre_v2_select_mitigation(void)
setup_force_cpu_cap(X86_FEATURE_RSB_CTXSW);
pr_info("Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch\n");
+ spectre_v2_determine_rsb_fill_type_at_vmexit(mode);
+
/*
* Retpoline means the kernel is safe because it has no indirect
* branches. Enhanced IBRS protects firmware too, so, enable restricted
@@ -1854,6 +1899,19 @@ static char *ibpb_state(void)
return "";
}
+static char *pbrsb_eibrs_state(void)
+{
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ if (boot_cpu_has(X86_FEATURE_RSB_VMEXIT_LITE) ||
+ boot_cpu_has(X86_FEATURE_RETPOLINE))
+ return ", PBRSB-eIBRS: SW sequence";
+ else
+ return ", PBRSB-eIBRS: Vulnerable";
+ } else {
+ return ", PBRSB-eIBRS: Not affected";
+ }
+}
+
static ssize_t spectre_v2_show_state(char *buf)
{
if (spectre_v2_enabled == SPECTRE_V2_LFENCE)
@@ -1866,12 +1924,13 @@ static ssize_t spectre_v2_show_state(char *buf)
spectre_v2_enabled == SPECTRE_V2_EIBRS_LFENCE)
return sprintf(buf, "Vulnerable: eIBRS+LFENCE with unprivileged eBPF and SMT\n");
- return sprintf(buf, "%s%s%s%s%s%s\n",
+ return sprintf(buf, "%s%s%s%s%s%s%s\n",
spectre_v2_strings[spectre_v2_enabled],
ibpb_state(),
boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
stibp_state(),
boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "",
+ pbrsb_eibrs_state(),
spectre_v2_module_string());
}
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index a6099acc9a94..d457c46ac0a4 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1032,6 +1032,7 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)
#define NO_SWAPGS BIT(6)
#define NO_ITLB_MULTIHIT BIT(7)
#define NO_SPECTRE_V2 BIT(8)
+#define NO_EIBRS_PBRSB BIT(9)
#define VULNWL(_vendor, _family, _model, _whitelist) \
{ X86_VENDOR_##_vendor, _family, _model, X86_FEATURE_ANY, _whitelist }
@@ -1071,7 +1072,7 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
VULNWL_INTEL(ATOM_GOLDMONT, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
VULNWL_INTEL(ATOM_GOLDMONT_X, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
- VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/*
* Technically, swapgs isn't serializing on AMD (despite it previously
@@ -1081,7 +1082,9 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
* good enough for our purposes.
*/
- VULNWL_INTEL(ATOM_TREMONT_X, NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_TREMONT, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_L, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_X, NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/* AMD Family 0xf - 0x12 */
VULNWL_AMD(0x0f, NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT),
@@ -1242,6 +1245,11 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
!arch_cap_mmio_immune(ia32_cap))
setup_force_cpu_bug(X86_BUG_MMIO_STALE_DATA);
+ if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) &&
+ !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
+ !(ia32_cap & ARCH_CAP_PBRSB_NO))
+ setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
+
if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN))
return;
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 1869d1c4dcd0..7ab18b5a8e96 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -11008,6 +11008,9 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
#endif
);
+ /* Eliminate branch target predictions from guest mode */
+ vmexit_fill_RSB();
+
vmx_enable_fb_clear(vmx);
/*
@@ -11030,9 +11033,6 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
x86_spec_ctrl_restore_host(vmx->spec_ctrl, 0);
- /* Eliminate branch target predictions from guest mode */
- vmexit_fill_RSB();
-
/* All fields are clean at this point */
if (static_branch_unlikely(&enable_evmcs))
current_evmcs->hv_clean_fields |=
--
2.25.1
1
1
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patchset implements a sample BMC for Redis.
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
v4:
- Rebase
v3:
- Fix build warning
v2:
- Reimplement in XDP
Xu Kuohai (3):
bpf: Add helper bpf_tcp_udpate_seq to synchronize tcp seq/ack
bpf: Add xdp load and store helpers
samples: bpf: Add sample BMC for Redis
include/uapi/linux/bpf.h | 27 ++
net/core/filter.c | 98 +++++
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 485 +++++++++++++++++++++
samples/bpf/bmc/common.h | 21 +
samples/bpf/bmc/tool.c | 763 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 27 ++
7 files changed, 1424 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/tool.c
--
2.20.1
1
3

18 Aug '22
您好
Intel 第十代Core I CPU i7-10700 集成核心显卡Intel® UHD Graphics 630 安装openeuler 20.03 LTS SP3,图形界面安装UKUI,OS内核 linux 4.19.90-2206.3.0.0155.oel.x86_64 。外接DELL, ASUS, LG等多个不同厂商主流商用显示器,发现显示器型号不能识别,显示分辨率无法调节,安装OpenEuler21.09 图形界面UKUI,kernel版本5.10可以正常识别显示器型号,可以调整显示分辨率。请问openeuler 20.03 LTS SP3是否支持Intel® UHD Graphics 630显卡,是否有解决方案,盼复,谢谢!
1
0
您好!
Kernel SIG 邀请您参加 2022-08-19 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.arm64: add machine check safe support特性回合评审,PR78;
2.Add memory reliable feature特性回合评审,PR79;
会议链接:https://us06web.zoom.us/j/88345524477?pwd=WHAvcmcza0JnY1JhekNVdUJzUE04UT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-19 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.arm64: add machine check safe support特性回合评审,PR78;
2.Add memory reliable feature特性回合评审,PR79;
You can join the meeting at https://us06web.zoom.us/j/88345524477?pwd=WHAvcmcza0JnY1JhekNVdUJzUE04UT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0
This patch list and descript typical openEuler kernel header format.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
openeuler_patch_header.lg | 178 ++++++++++++++++++++++++++++++++++++++
1 file changed, 178 insertions(+)
create mode 100644 openeuler_patch_header.lg
diff --git a/openeuler_patch_header.lg b/openeuler_patch_header.lg
new file mode 100644
index 000000000000..a874d140cd1c
--- /dev/null
+++ b/openeuler_patch_header.lg
@@ -0,0 +1,178 @@
+Patch format definition
+
+[M] stands for “mandatory”
+[O] stands for “option”
+$category can be: bug preparation, bugfix, perf, feature, doc, other…
+
+If category is feature, then we also need to add feature name like below:
+category: feature
+feature: YYY (the feature name)
+
+If the patch is related to gitee issue, then we need add the corresponding tag
+like below.
+for example:
+bugzilla: https://gitee.com/openeuler/kernel/issues/I4OM1C
+
+Additional changelog should include at least one of the flollwing:
+1) Why we should apply this patch
+2) What real problem in product does this patch resolved
+3) How could we reproduce this bug or how to test
+4) Other useful information for help to understand this patch or problem
+
+The detail information is very useful for porting patch to another kenrel
+branch.
+
+stable patch header format:
+
+origin patch title
+
+stable inclusion [M]
+from $stable-version [M]
+commit $id [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [O]
+
+Reference: patch URLs
+
+additional changelog [O]
+
+------------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($stable-version would be stable-4.19.110, stable-4.19.111, etc…
+$id would be stable commit)
+
+mainline patch header format:
+
+origin patch title
+
+mainline inclusion [M]
+from $mainline-version [M]
+commit $id [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [M]
+
+Reference: patch URLs
+
+additional changelog [O]
+
+-------------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($mainline-version could be mainline-5.5, mainline-5.6, etc…)
+
+HULK patch header format:
+
+origin patch title
+
+hulk inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [M]
+
+------------------------------------------
+
+changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+distribution patch header format:
+
+origin patch title
+
+dist inclusion [M]
+from $dist-version [M]
+commit $id [O]
+category: $category [O]
+bugzilla: $gitee-issue-url [O]
+
+additional changelog [O]
+
+-----------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($dist-version could be centos-7.5, centos-7.7, etc…)
+
+EulerOS patch header format:
+
+origin patch title
+
+euleros inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [O]
+
+----------------------------------------
+
+changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+Driver patch header format:
+
+origin patch title
+
+driver inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [O]
+
+additional changelog [O]
+
+---------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+========
+
+Examples
+
+mm: introduce memmap_alloc() to unify memory map allocation
+
+mainline inclusion
+from mainline-v5.15-rc1
+commit c803b3c8b3b70f306ee6300bf8acdd70ffd1441a
+category: bugfix
+bugzilla: 186414, https://gitee.com/openeuler/kernel/issues/I5K7IY
+CVE: NA
+
+Reference:
+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c803b3c8b3b70f306ee6300bf8acdd70ffd1441a
+
+--------------------------------
+
+There are several places that allocate memory for the memory map:
+alloc_node_mem_map() for FLATMEM, sparse_buffer_init() and
+__populate_section_memmap() for SPARSEMEM.
+
+The memory allocated in the FLATMEM case is zeroed and it is never
+poisoned, regardless of CONFIG_PAGE_POISON setting.
+
+The memory allocated in the SPARSEMEM cases is not zeroed and it is
+implicitly poisoned inside memblock if CONFIG_PAGE_POISON is set.
+
+Introduce memmap_alloc() wrapper for memblock allocators that will be used
+for both FLATMEM and SPARSEMEM cases and will makei memory map zeroing and
+poisoning consistent for different memory models.
+
+Link: https://lkml.kernel.org/r/20210714123739.16493-4-rppt@kernel.org
+Signed-off-by: Mike Rapoport <rppt(a)linux.ibm.com>
+Cc: Michal Simek <monstr(a)monstr.eu>
+Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
+Conflicts:
+ mm/page_alloc.c
+Signed-off-by: Liu Shixin <liushixin2(a)huawei.com>
+Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
+Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] Revert "blk-mq: fix null pointer dereference in blk_mq_queue_tag_busy_ite"
by Yongqiang Liu 18 Aug '22
by Yongqiang Liu 18 Aug '22
18 Aug '22
From: Li Nan <linan122(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187497, https://gitee.com/openeuler/kernel/issues/I5MT95
CVE: NA
--------------------------------
This reverts commit 64ba823fd4272f7d624bbfb4bd6e3c89aa6f423c.
Commit fea9f92f1748 introduce the bug. It is a patch for performance
optimization and this version doesn't have to backport it.
blk_mq_queue_tag_busy_iter() won't access q->tag_set->flags or reference
other fields in q that is uninitialized at present. 64ba823fd427 will
make io hang for special scsi drivers(e.x. ata_piix). Revert it.
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-mq-tag.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index c24802fe6ab2..bee92ab06a5e 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -374,13 +374,6 @@ void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
struct blk_mq_hw_ctx *hctx;
int i;
- /*
- * For dm, it can run here after register_disk, but the queue has not
- * been initialized yet. Check QUEUE_FLAG_REGISTERED prevent null point
- * access.
- */
- if (!test_bit(QUEUE_FLAG_REGISTERED, &q->queue_flags))
- return;
/*
* __blk_mq_update_nr_hw_queues will update the nr_hw_queues and
* queue_hw_ctx after freeze the queue, so we use q_usage_counter
--
2.25.1
1
0

18 Aug '22
Memory reliable feature is a memory tiering mechanism. It is based on
kernel mirror feature, which splits memory into two sperate regions,
mirrored(reliable) region and non-mirrored (non-reliable) region.
for kernel mirror feature:
allocate kernel memory from mirrored region by default
allocate user memory from non-mirrored region by default
non-mirrored region will be arranged into ZONE_MOVABLE.
for kernel reliable feature, it has additional features below:
normal user tasks never alloc memory from mirrored region with userspace
apis(malloc, mmap, etc.)
special user tasks will allocate memory from mirrored region by default
tmpfs/pagecache allocate memory from mirrored region by default
upper limit of mirrored region allcated for user tasks, tmpfs and
pagecache
Support Reliable fallback mechanism which allows special user tasks, tmpfs
and pagecache can fallback to alloc non-mirrored region, it's the default
setting.
In order to fulfil the goal
___GFP_RELIABILITY flag added for alloc memory from mirrored region.
the high_zoneidx for special user tasks/tmpfs/pagecache is set to
ZONE_NORMAL.
normal user tasks could only alloc from ZONE_MOVABLE.
This patch is just the main framework, memory reliable support for special
user tasks, pagecache and tmpfs has own patches.
To enable this function, mirrored(reliable) memory is needed and
"kernelcore=reliable" should be added to kernel parameters.
Chen Wandun (4):
mm: Add cmdline for the reliable memory usage of page cache
proc/meminfo: Add "FileCache" item in /proc/meminfo
mm: add "ReliableFileCache" item in /proc/meminfo
mm: Add support for limiting the usage of reliable memory in pagecache
Ma Wupeng (17):
mm: Drop shmem reliable related log during startup
mm: Export static key mem_reliable
mm: Export mem_reliable_status() for checking memory reliable status
mm: Refactor code in reliable_report_meminfo()
mm: Count reliable memory info based on zone info
mm: Disable memory reliable when kdump is in progress
mm: Clear GFP_RELIABLE if the conditions are not met
mm: thp: Add memory reliable support for hugepaged collapse
mm: Add reliable memory use limit for user tasks
mm: Introduce fallback mechanism for memory reliable
mm: Introduce shmem mirrored memory limit for memory reliable
mm: Introduce reliable_debug=S to control shmem use mirrored memory
mm: Introduce proc interface to disable memory reliable features
mm: Show debug info about memory reliable if oom occurs
mm: Update reliable flag in memory allocaion for reliable task only in
task context
mm/memblock: Introduce ability to alloc memory from specify memory
reigon
mm/hugetlb: Hugetlb use non-mirrored memory if memory reliable is
enabled
Peng Wu (3):
mm: Add kernel param for memory reliable
mm: Add reliable_nr_page for accounting reliable memory
proc: Count reliable memory usage of reliable tasks
Yu Liao (1):
mm: Add sysctl to clear free list pages
Zhou Guanghui (1):
shmem: Count and show reliable shmem info
.../admin-guide/kernel-parameters.txt | 13 +
Documentation/admin-guide/sysctl/vm.rst | 13 +
Documentation/filesystems/proc.rst | 8 +
fs/proc/task_mmu.c | 1 +
include/linux/mem_reliable.h | 124 ++++-
include/linux/memblock.h | 5 +
include/linux/mm.h | 6 +-
include/linux/mm_inline.h | 4 +
include/linux/mm_types.h | 3 +-
include/linux/mmzone.h | 5 +
kernel/events/uprobes.c | 2 +
lib/show_mem.c | 1 +
mm/Kconfig | 13 +
mm/Makefile | 2 +
mm/clear_freelist_page.c | 187 +++++++
mm/filemap.c | 9 +-
mm/huge_memory.c | 8 +
mm/hugetlb.c | 17 +-
mm/khugepaged.c | 34 +-
mm/ksm.c | 2 +
mm/mem_reliable.c | 507 ++++++++++++++++--
mm/memblock.c | 107 ++++
mm/memory.c | 12 +
mm/migrate.c | 10 +
mm/mmap.c | 1 +
mm/page_alloc.c | 135 ++++-
mm/rmap.c | 5 +
mm/shmem.c | 21 +-
mm/swapfile.c | 2 +
mm/userfaultfd.c | 1 +
mm/vmscan.c | 2 +
31 files changed, 1183 insertions(+), 77 deletions(-)
create mode 100644 mm/clear_freelist_page.c
--
2.20.1
1
26
This set introduces CO-RE support in the kernel.
There are several reasons to add such support:
1.It's a step toward signed BPF programs.
2.It allows golang like languages that struggle to adopt libbpf to take advantage of CO-RE powers.
3.Currently the field accessed by 'ldx [R1 + 10]' insn is recognized by the verifier purely based on +10 offset.
If R1 points to a union the verifier picks one of the fields at this offset.
With CO-RE the kernel can disambiguate the field access.
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (55):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
selftests/bpf: Convert few tests to light skeleton.
selftests/bpf: Convert atomics test to light skeleton.
selftests/bpf: Convert test printk to use rodata.
selftests/bpf: Convert test trace_printk to lskel.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
selftests/bpf: Improve inner_map test coverage.
selftests/bpf: Convert map_ptr_kern test to use light skeleton.
selftests/bpf: Additional test for CO-RE in the kernel.
selftests/bpf: Add CO-RE relocations to verifier scale test.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (148):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
selftests/bpf: Fix GCC11 compiler warnings in -O2 mode
libbpf: Fix logic for finding matching program for CO-RE relocation
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (6):
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (5):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (6):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
libbpf: Use __BYTE_ORDER__
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (5):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
selftests/bpf: Add re-attach test to fentry_test
selftests/bpf: Add re-attach test to fexit_test
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (22):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
bpf: Introduce BPF support for kernel module function calls
bpf: Be conservative while processing invalid kfunc calls
bpf: btf: Introduce helpers for dynamic BTF set registration
tools: Allow specifying base BTF file in resolve_btfids
libbpf: Support kernel module function calls
libbpf: Resolve invalid weak kfunc calls with imm = 0, off = 0
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: selftests: Add selftests for module kfunc support
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
selftests/bpf: Add weak/typeless ksym test for light skeleton
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (10):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
bpf: selftests: Add kfunc_call test
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (3):
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (26):
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 153 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 48 +-
include/linux/bpfptr.h | 76 +
include/linux/btf.h | 143 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 257 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 29 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1457 ++++-
kernel/bpf/core.c | 157 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 4 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1676 +++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 321 +-
net/core/filter.c | 2 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 139 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 66 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 969 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 273 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2097 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5335 +++++++++--------
tools/lib/bpf/libbpf.h | 172 +-
tools/lib/bpf/libbpf.map | 50 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 302 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 2 +
tools/testing/selftests/bpf/Makefile | 200 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 76 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../selftests/bpf/prog_tests/core_kern.c | 14 +
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fentry_fexit.c | 22 +-
.../selftests/bpf/prog_tests/fentry_test.c | 58 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/fexit_test.c | 58 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/kfunc_call.c | 59 +
.../selftests/bpf/prog_tests/ksyms_btf.c | 65 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 62 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 21 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 27 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 53 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../selftests/bpf/prog_tests/trace_printk.c | 25 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
tools/testing/selftests/bpf/progs/core_kern.c | 104 +
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
.../selftests/bpf/progs/kfunc_call_test.c | 47 +
.../bpf/progs/kfunc_call_test_subprog.c | 42 +
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 20 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 50 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 5 +-
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/progs/test_verif_scale2.c | 4 +-
.../selftests/bpf/progs/trace_printk.c | 6 +-
.../selftests/bpf/test_bpftool_build.sh | 4 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 231 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 83 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 35 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
294 files changed, 25170 insertions(+), 6337 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_kern.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/kfunc_call.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/core_kern.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
391

17 Aug '22
With the increase of memory capacity and density, the probability of
memory error increases. The increasing size and density of server RAM
in the data center and cloud have shown increased uncorrectable memory
errors.
Currently, the kernel has a mechanism to recover from hardware memory
errors. This patchset provides an new recovery mechanism.
For arm64, the hardware memory error handling is do_sea() which divided
into two cases:
1. The user state consumed the memory errors, the solution is kill the
user process and isolate the error page.
2. The kernel state consumed the memory errors, the solution is panic.
For case 2, Undifferentiated panic maybe not the optimal choice, it can be
handled better, in some scenarios, we can avoid panic, such as uaccess, if
the uaccess fails due to memory error, only the user process will be affected,
kill the user process and isolate the user page with hardware memory errors
is a better choice.
Tong Tiangen (13):
Revert "arm64: ras: copy_from_user scenario support uce kernel
recovery"
Revert "arm64: config: enable CONFIG_ARM64_UCE_KERNEL_RECOVERY"
uaccess: add generic fallback version of copy_mc_to_user()
arm64: extable: add new extable type "__mc_ex_table"
arm64: add support for machine check error safe
arm64: copy_form/to_user support machine check safe
arm64: get/put_user support machine check safe
arm64: add cow to machine check safe
arm64: introduce copy_mc_to_kernel() implementation
arm64: add dump_user_range() to machine check safe
arm64: add machine check safe sysctl interface
arm64/__mc_ex_table: search_module_mc_extables should not use
num_exentries
arm64/__mc_ex_table: fix compile error when CONFIG_ARCH_HAS_COPY_MC=n
Documentation/admin-guide/sysctl/kernel.rst | 38 ++--
arch/arm64/Kconfig | 14 +-
arch/arm64/configs/openeuler_defconfig | 1 -
arch/arm64/include/asm/asm-uaccess.h | 5 +
arch/arm64/include/asm/assembler.h | 26 ++-
arch/arm64/include/asm/exception.h | 13 --
arch/arm64/include/asm/extable.h | 1 +
arch/arm64/include/asm/mte.h | 4 +
arch/arm64/include/asm/page.h | 10 +
arch/arm64/include/asm/processor.h | 2 +
arch/arm64/include/asm/string.h | 5 +
arch/arm64/include/asm/uaccess.h | 70 +++++--
arch/arm64/lib/Makefile | 10 +-
arch/arm64/lib/copy_from_user.S | 19 +-
arch/arm64/lib/copy_page_mc.S | 80 ++++++++
arch/arm64/lib/copy_to_user.S | 10 +-
arch/arm64/lib/memcpy_mc.S | 73 ++++++++
arch/arm64/lib/mte.S | 19 ++
arch/arm64/mm/Makefile | 2 -
arch/arm64/mm/copypage.c | 43 ++++-
arch/arm64/mm/extable.c | 12 ++
arch/arm64/mm/fault.c | 36 +++-
arch/arm64/mm/uce_kernel_recovery.c | 198 --------------------
arch/powerpc/include/asm/uaccess.h | 1 +
arch/x86/include/asm/uaccess.h | 1 +
fs/coredump.c | 2 +
include/asm-generic/vmlinux.lds.h | 19 +-
include/linux/extable.h | 23 +++
include/linux/highmem.h | 8 +
include/linux/module.h | 11 ++
include/linux/sched.h | 1 +
include/linux/uaccess.h | 9 +
kernel/extable.c | 29 +++
kernel/module.c | 38 ++++
kernel/sysctl.c | 11 ++
lib/iov_iter.c | 12 +-
mm/memory.c | 2 +-
scripts/sorttable.h | 29 +++
38 files changed, 589 insertions(+), 298 deletions(-)
create mode 100644 arch/arm64/lib/copy_page_mc.S
create mode 100644 arch/arm64/lib/memcpy_mc.S
delete mode 100644 arch/arm64/mm/uce_kernel_recovery.c
--
2.20.1
1
13

17 Aug '22
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
Chen Hui (11):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
samples/bpf: Update bpf loader for sched section names
bpf: sched: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add three hooks in select_task_rq_fair()
Guan Jing (2):
sched: programmable: Add hook for pick next task
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (5):
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
sched: programmable: add bpf_sched_tg_tag_of helper function
samples: bpf: Add bpf sched preempt sample program
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 +++++
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 151 +++++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 433 ++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 97 ++++++
kernel/sched/core.c | 103 ++++++
kernel/sched/fair.c | 64 +++-
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 56 ++++
samples/bpf/sched_pick_task_user.c | 94 ++++++
samples/bpf/sched_preempt_kern.c | 147 +++++++++
samples/bpf/sched_preempt_user.c | 140 ++++++++
samples/bpf/sched_select_core_kern.c | 259 +++++++++++++++
samples/bpf/sched_select_core_user.c | 125 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 151 +++++++++
tools/lib/bpf/libbpf_sched.h | 473 +++++++++++++++++++++++++++
25 files changed, 2555 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.20.1
1
21

[PATCH openEuler-5.10 01/31] io_uring:drop identity before creating a private one
by Zheng Zengkai 17 Aug '22
by Zheng Zengkai 17 Aug '22
17 Aug '22
From: Li Lingfeng <lilingfeng3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187387, https://gitee.com/openeuler/kernel/issues/I5KTEM
CVE: NA
--------------------------------
When we need to create a private copy of io_identity, we will
get the use of current task's private structs, whitch means we
should increase their reference counts. If we have grabed some
other structs before, we should drop them and clear related
flags. Otherwise, leak of old structs and uaf of new structs
may occur.
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/io_uring.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index faa81d48c812..257e4af176e6 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -1364,6 +1364,47 @@ static bool io_identity_cow(struct io_kiocb *req)
return true;
}
+static void io_drop_identity(struct io_kiocb *req)
+{
+ struct io_identity *id = req->work.identity;
+
+ if (req->work.flags & IO_WQ_WORK_MM) {
+ mmdrop(id->mm);
+ req->work.flags &= ~IO_WQ_WORK_MM;
+ }
+#ifdef CONFIG_BLK_CGROUP
+ if (req->work.flags & IO_WQ_WORK_BLKCG) {
+ css_put(id->blkcg_css);
+ req->work.flags &= ~IO_WQ_WORK_BLKCG;
+ }
+#endif
+ if (req->work.flags & IO_WQ_WORK_CREDS) {
+ put_cred(id->creds);
+ req->work.flags &= ~IO_WQ_WORK_CREDS;
+ }
+ if (req->work.flags & IO_WQ_WORK_FILES) {
+ put_files_struct(req->work.identity->files);
+ put_nsproxy(req->work.identity->nsproxy);
+ req->work.flags &= ~IO_WQ_WORK_FILES;
+ }
+ if (req->work.flags & IO_WQ_WORK_CANCEL)
+ req->work.flags &= ~IO_WQ_WORK_CANCEL;
+ if (req->work.flags & IO_WQ_WORK_FS) {
+ struct fs_struct *fs = id->fs;
+
+ spin_lock(&id->fs->lock);
+ if (--fs->users)
+ fs = NULL;
+ spin_unlock(&id->fs->lock);
+
+ if (fs)
+ free_fs_struct(fs);
+ req->work.flags &= ~IO_WQ_WORK_FS;
+ }
+ if (req->work.flags & IO_WQ_WORK_FSIZE)
+ req->work.flags &= ~IO_WQ_WORK_FSIZE;
+}
+
static bool io_grab_identity(struct io_kiocb *req)
{
const struct io_op_def *def = &io_op_defs[req->opcode];
@@ -1469,6 +1510,7 @@ static void io_prep_async_work(struct io_kiocb *req)
if (io_grab_identity(req))
return;
+ io_drop_identity(req);
if (!io_identity_cow(req))
return;
--
2.20.1
1
30
各位好,
我是移动丁强,目前在中国通信标准化协会(CCSA)中牵头做操作系统相关的行业规范,目前涉及到kernel的SYSCALL特性部分,想和各位学习交流一下,方便的话可以加我微信详谈,我的手机13575459962(微信同号),感谢大家!
丁强
中国移动通信集团浙江有限公司 云计算支撑中心
Mobile: 13575459962
E-mail: 13575459962(a)139.xn--com()-jt2hu4k
dingqiang5(a)zj.chinamobile.com
1
0
Backport 5.10.118 LTS patches from upstream.
git cherry-pick v5.10.117..v5.10.118~1 -s
Already merged(5):
911b36267855 floppy: use a statically allocated error counter
55c820c1b2b6 Revert "drm/i915/opregion: check port number bounds for SWSCI
display power state"
aca18bacdb71 ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in
unwind_frame()
f3f2247ac31c Reinstate some of "swiotlb: rework "fix info leak with
DMA_FROM_DEVICE""
3ee8e109c3c3 perf: Fix sys_perf_event_open() race against self
Context conflict:
00d8b06a4ed4 rtc: mc146818-lib: Fix the AltCentury for AMD platforms
Skiped(1):
e2cfa7b0935c Revert "swiotlb: fix info leak with DMA_FROM_DEVICE"
KABI changed(8):
633be494c3ca include/uapi/linux/xfrm.h: Fix XFRM_MSG_MAPPING ABI breakage
47f04f95edb1 xfrm: fix "disable_policy" flag use when arriving from different
devices
0d2e9d8000ef xfrm: rework default policy structure
57c1bbe7098b xfrm: fix dflt policy check when there is no policy configured
9856c3a129dd xfrm: notify default policy on update
20fd28df4049 xfrm: make user policy API complete
ab610ee1d1a1 net: xfrm: fix shift-out-of-bounce
5b7f84b1f9f4 xfrm: Add possibility to set the default to block if we have no
policy
Total patches: 96 - 5 - 1 - 8 = 82
Al Viro (1):
Fix double fget() in vhost_net_set_backend()
Alex Elder (1):
net: ipa: record proper RX transaction count
Andre Przywara (1):
rtc: sun6i: Fix time overflow handling
Andreas Gruenbacher (1):
gfs2: Disable page faults during lockless buffered reads
Andrew Lunn (1):
net: bridge: Clear offload_fwd_mark when passing frame up bridge
interface.
Anton Eidelman (1):
nvme-multipath: fix hang when disk goes live over reconnect
Ard Biesheuvel (2):
ARM: 9196/1: spectre-bhb: enable for Cortex-A15
ARM: 9197/1: spectre-bhb: fix loop8 sequence for Thumb2
Catalin Marinas (1):
arm64: mte: Ensure the cleared tags are visible before setting the PTE
Christophe JAILLET (2):
net: systemport: Fix an error handling path in bcm_sysport_probe()
net/qla3xxx: Fix a test in ql_reset_work()
Codrin Ciubotariu (1):
clk: at91: generated: consider range when calculating best rate
David Gow (1):
um: Cleanup syscall_handler_t definition/cast, fix warning
David Howells (1):
afs: Fix afs_getattr() to refetch file status if callback break
occurred
Duoming Zhou (1):
NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc
Felix Fietkau (1):
mac80211: fix rx reordering with non explicit / psmp ack policy
Gleb Chesnokov (1):
scsi: qla2xxx: Fix missed DMA unmap for aborted commands
Grant Grundler (4):
net: atlantic: fix "frag[0] not initialized"
net: atlantic: reduce scope of is_rsc_complete
net: atlantic: add check for MAX_SKB_FRAGS
net: atlantic: verify hw_head_ lies within TX buffer ring
Guo Xuenan (1):
fs: fix an infinite loop in iomap_fiemap
Haibo Chen (1):
gpio: gpio-vf610: do not touch other bits when set the target bit
Hangyu Hua (1):
drm/dp/mst: fix a possible memory leak in fetch_monitor_name()
Harini Katakam (1):
net: macb: Increment rx bd head after allocating skb and buffer
Hugo Villeneuve (1):
rtc: pcf2127: fix bug when reading alarm registers
Ilya Dryomov (1):
libceph: fix potential use-after-free on linger ping and resends
Jae Hyun Yoo (4):
ARM: dts: aspeed-g6: remove FWQSPID group in pinctrl dtsi
pinctrl: pinctrl-aspeed-g6: remove FWQSPID group in pinctrl
ARM: dts: aspeed-g6: fix SPI1/SPI2 quad pin group
dt-bindings: pinctrl: aspeed-g6: remove FWQSPID group
Jakob Koschel (1):
drbd: remove usage of list iterator variable after loop
Jeff LaBundy (1):
Input: add bounds checking to input_set_capability()
Jens Axboe (1):
io_uring: always grab file table for deferred statx
Jessica Yu (2):
module: treat exit sections the same as init sections when
!CONFIG_MODULE_UNLOAD
module: check for exit sections in layout_sections() instead of
module_init_section()
Jiasheng Jiang (1):
net: af_key: add check for pfkey_broadcast in function pfkey_process
Johannes Berg (1):
nl80211: fix locking in nl80211_set_tx_bitrate_mask()
Jérôme Pouiller (1):
dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace
Kai-Heng Feng (1):
ALSA: hda/realtek: Enable headset mic on Lenovo P360
Kevin Mitchell (1):
igb: skip phy status check where unavailable
Kieran Frewen (1):
nl80211: validate S1G channel width
Krzysztof Kozlowski (1):
riscv: dts: sifive: fu540-c000: align dma node name with dtschema
Marek Vasut (1):
Input: ili210x - fix reset timing
Mario Limonciello (1):
rtc: mc146818-lib: Fix the AltCentury for AMD platforms
Maxim Mikityanskiy (1):
net/mlx5e: Properly block LRO when XDP is enabled
Michael S. Tsirkin (1):
tools/virtio: compile with -pthread
Monish Kumar R (1):
nvme-pci: add quirks for Samsung X5 SSDs
Nicolas Dichtel (1):
selftests: add ping test with ping_group_range tuned
Niklas Schnelle (1):
s390/pci: improve zpci_dev reference counting
Ondrej Mosnacek (2):
selinux: fix bad cleanup on error in hashtab_duplicate()
crypto: qcom-rng - fix infinite loop on requests not multiple of
WORD_SZ
Paolo Abeni (1):
net/sched: act_pedit: sanitize shift argument before usage
Paul Greenwalt (1):
ice: fix possible under reporting of ethtool Tx and Rx statistics
Peter Zijlstra (1):
crypto: x86/chacha20 - Avoid spurious jumps to other functions
Prakruthi Deepak Heragu (1):
arm64: paravirt: Use RCU read locks to guard stolen_time
Rafael J. Wysocki (1):
PCI/PM: Avoid putting Elo i2 PCIe Ports in D3cold
Ryusuke Konishi (2):
nilfs2: fix lockdep warnings in page operations for btree nodes
nilfs2: fix lockdep warnings during disk space reclamation
Sasha Neftin (3):
igc: Remove _I_PHY_ID checking
igc: Remove phy->type checking
igc: Update I226_K device ID
Schspa Shi (1):
usb: gadget: fix race when gadget driver register via ioctl
Sean Christopherson (1):
KVM: x86/mmu: Update number of zapped pages even if page list is
stable
Shreyas K K (1):
arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs
Takashi Iwai (2):
ALSA: usb-audio: Restore Rane SL-1 quirk
ALSA: wavefront: Proper check of get_user() error
Thomas Richter (1):
perf bench numa: Address compiler error on s390
Tzung-Bi Shih (1):
platform/chrome: cros_ec_debugfs: detach log reader wq from devm
Uwe Kleine-König (1):
gpio: mvebu/pwm: Refuse requests with inverted polarity
Vincent Bernat (1):
net: evaluate net.ipvX.conf.all.disable_policy and disable_xfrm
Vincent Whitchurch (1):
rtc: fix use-after-free on device removal
Werner Sembach (1):
ALSA: hda/realtek: Add quirk for TongFang devices with pop noise
Xiaoke Wang (1):
MIPS: lantiq: check the return value of kzalloc()
Yang Yingliang (3):
ethernet: tulip: fix missing pci_disable_device() on error in
tulip_init_one()
net: stmmac: fix missing pci_disable_device() on error in
stmmac_pci_probe()
i2c: mt7621: fix missing clk_disable_unprepare() on error in
mtk_i2c_probe()
Zheng Yongjun (2):
Input: stmfts - fix reference leak in stmfts_input_open
crypto: stm32 - fix reference leak in stm32_crc_remove
Zhu Lingshan (1):
vhost_vdpa: don't setup irq offloading when irq_num < 0
Zixuan Fu (2):
net: vmxnet3: fix possible use-after-free bugs in
vmxnet3_rq_alloc_rx_buf()
net: vmxnet3: fix possible NULL pointer dereference in
vmxnet3_rq_cleanup()
Documentation/arm64/silicon-errata.rst | 3 +
.../pinctrl/aspeed,ast2600-pinctrl.yaml | 2 +-
arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi | 9 +-
arch/arm/kernel/entry-armv.S | 2 +-
arch/arm/mm/proc-v7-bugs.c | 1 +
arch/arm64/kernel/cpu_errata.c | 2 +
arch/arm64/kernel/mte.c | 3 +
arch/arm64/kernel/paravirt.c | 29 +-
arch/mips/lantiq/falcon/sysctrl.c | 2 +
arch/mips/lantiq/xway/gptu.c | 2 +
arch/mips/lantiq/xway/sysctrl.c | 46 ++-
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 2 +-
arch/s390/pci/pci.c | 1 +
arch/s390/pci/pci_bus.h | 3 +-
arch/s390/pci/pci_clp.c | 9 +-
arch/s390/pci/pci_event.c | 7 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 4 +-
arch/x86/kvm/mmu/mmu.c | 10 +-
arch/x86/um/shared/sysdep/syscalls_64.h | 5 +-
drivers/block/drbd/drbd_main.c | 7 +-
drivers/clk/at91/clk-generated.c | 4 +
drivers/crypto/qcom-rng.c | 1 +
drivers/crypto/stm32/stm32-crc32.c | 4 +-
drivers/gpio/gpio-mvebu.c | 3 +
drivers/gpio/gpio-vf610.c | 8 +-
drivers/gpu/drm/drm_dp_mst_topology.c | 1 +
drivers/i2c/busses/i2c-mt7621.c | 10 +-
drivers/input/input.c | 19 ++
drivers/input/touchscreen/ili210x.c | 4 +-
drivers/input/touchscreen/stmfts.c | 8 +-
.../net/ethernet/aquantia/atlantic/aq_ring.c | 20 +-
.../aquantia/atlantic/hw_atl/hw_atl_b0.c | 7 +
drivers/net/ethernet/broadcom/bcmsysport.c | 6 +-
drivers/net/ethernet/cadence/macb_main.c | 2 +-
drivers/net/ethernet/dec/tulip/tulip_core.c | 5 +-
drivers/net/ethernet/intel/ice/ice_main.c | 7 +-
drivers/net/ethernet/intel/igb/igb_main.c | 3 +-
drivers/net/ethernet/intel/igc/igc_base.c | 10 +-
drivers/net/ethernet/intel/igc/igc_hw.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 18 +-
drivers/net/ethernet/intel/igc/igc_phy.c | 6 +-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 7 +
drivers/net/ethernet/qlogic/qla3xxx.c | 3 +-
.../net/ethernet/stmicro/stmmac/stmmac_pci.c | 4 +-
drivers/net/ipa/gsi.c | 6 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 6 +
drivers/nvme/host/core.c | 1 +
drivers/nvme/host/multipath.c | 25 +-
drivers/nvme/host/nvme.h | 4 +
drivers/nvme/host/pci.c | 5 +-
drivers/pci/pci.c | 10 +
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c | 14 +-
drivers/platform/chrome/cros_ec_debugfs.c | 12 +-
drivers/rtc/class.c | 9 +
drivers/rtc/rtc-mc146818-lib.c | 16 +-
drivers/rtc/rtc-pcf2127.c | 3 +-
drivers/rtc/rtc-sun6i.c | 14 +-
drivers/scsi/qla2xxx/qla_target.c | 3 +
drivers/usb/gadget/legacy/raw_gadget.c | 2 +
drivers/vhost/net.c | 15 +-
drivers/vhost/vdpa.c | 5 +-
fs/afs/inode.c | 14 +-
fs/gfs2/file.c | 4 +-
fs/io_uring.c | 6 +-
fs/ioctl.c | 2 +-
fs/nilfs2/btnode.c | 23 +-
fs/nilfs2/btnode.h | 1 +
fs/nilfs2/btree.c | 27 +-
fs/nilfs2/dat.c | 4 +-
fs/nilfs2/gcinode.c | 7 +-
fs/nilfs2/inode.c | 159 ++++++++-
fs/nilfs2/mdt.c | 43 ++-
fs/nilfs2/mdt.h | 6 +-
fs/nilfs2/nilfs.h | 16 +-
fs/nilfs2/page.c | 7 +-
fs/nilfs2/segment.c | 9 +-
fs/nilfs2/super.c | 5 +-
include/linux/ceph/osd_client.h | 3 +
include/linux/mc146818rtc.h | 2 +
include/uapi/linux/dma-buf.h | 4 +-
kernel/module.c | 18 +-
net/bridge/br_input.c | 7 +
net/ceph/osd_client.c | 302 +++++++-----------
net/ipv4/route.c | 12 +-
net/key/af_key.c | 6 +-
net/mac80211/rx.c | 3 +-
net/nfc/nci/data.c | 2 +-
net/nfc/nci/hci.c | 4 +-
net/sched/act_pedit.c | 4 +
net/wireless/nl80211.c | 18 +-
security/selinux/ss/hashtab.c | 3 +-
sound/isa/wavefront/wavefront_synth.c | 3 +-
sound/pci/hda/patch_realtek.c | 9 +
sound/usb/quirks-table.h | 9 +
tools/perf/bench/numa.c | 2 +-
tools/testing/selftests/net/fcnal-test.sh | 12 +
tools/virtio/Makefile | 3 +-
97 files changed, 786 insertions(+), 433 deletions(-)
--
2.20.1
1
82
Backport 5.10.117 LTS patches from upstream.
git cherry-pick v5.10.116..v5.10.117~1 -s
Complicts:
Already merged(2):
e68b60ae29de1 SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()
29f077d07051 io_uring: always use original task when preparing req identity
Context conflict:
7e849dbe604d cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in
cpuset_init_smp()
Total patches: 68 - 2 = 66
Alexandra Winter (3):
s390/ctcm: fix variable dereferenced before check
s390/ctcm: fix potential memory leak
s390/lcs: fix variable dereferenced before check
Andreas Gruenbacher (1):
gfs2: Fix filesystem block deallocation for short writes
AngeloGioacchino Del Regno (2):
serial: 8250_mtk: Fix UART_EFR register address
serial: 8250_mtk: Fix register address for XON/XOFF character
Camel Guo (1):
hwmon: (tmp401) Add OF device ID table
ChiYuan Huang (1):
usb: typec: tcpci_mt6360: Update for BMC PHY setting
Christophe JAILLET (1):
drm/nouveau: Fix a potential theorical leak in
nouveau_get_backlight_name()
Dan Aloni (1):
nfs: fix broken handling of the softreval mount option
Dan Vacura (1):
usb: gadget: uvc: allow for application to cleanly shutdown
Daniel Starke (1):
tty: n_gsm: fix mux activation issues in gsm_config()
Eric Dumazet (2):
netlink: do not reset transport header in netlink_recvmsg()
tcp: resalt the secret every 10 seconds
Ethan Yang (1):
USB: serial: qcserial: add support for Sierra Wireless EM7590
Florian Fainelli (2):
net: bcmgenet: Check for Wake-on-LAN interrupt probe deferral
net: dsa: bcm_sf2: Fix Wake-on-LAN with mac_link_down()
Francesco Dolcini (1):
net: phy: Fix race condition on link status change
Guangguan Wang (1):
net/smc: non blocking recvmsg() return -EAGAIN when no data and
signal_pending
Guenter Roeck (1):
iwlwifi: iwl-dbg: Use del_timer_sync() before freeing
Gustavo A. R. Silva (1):
SUNRPC: Fix fall-through warnings for Clang
Jeff Layton (1):
ceph: fix setting of xattrs on async created inodes
Jesse Brandeburg (1):
dim: initialize all struct fields
Ji-Ze Hong (Peter Hong) (1):
hwmon: (f71882fg) Fix negative temperature
Jiapeng Chong (1):
sfc: Use swap() instead of open coding it
Joel Savitz (1):
selftests: vm: Makefile: rename TARGETS to VMTARGETS
Johannes Berg (1):
mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection
Lokesh Dhoundiyal (1):
ipv4: drop dst in multicast routing path
Manikanta Pubbisetty (1):
mac80211: Reset MBSSID parameters upon connection
Manuel Ullmann (1):
net: atlantic: always deep reset on pm op, fixing up my null deref
regression
Mark Brown (3):
ASoC: max98090: Reject invalid values in custom control put()
ASoC: max98090: Generate notifications on changes for custom control
ASoC: ops: Validate input values in snd_soc_put_volsw_range()
Matthew Hagan (1):
net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT
Maxim Mikityanskiy (1):
tls: Fix context leak on tls_device_down
Miaoqian Lin (1):
slimbus: qcom: Fix IRQ check in qcom_slim_probe
Michael Tretter (1):
usb: gadget: uvc: rename function to be more consistent
Mike Rapoport (1):
arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear
map
Nicolas Dichtel (1):
ping: fix address binding wrt vrf
Paolo Abeni (1):
net/sched: act_pedit: really ensure the skb is writable
Randy Dunlap (1):
hwmon: (ltq-cputemp) restrict it to SOC_XWAY
Robin Murphy (1):
drm/nouveau/tegra: Stop using iommu_present()
Scott Chen (1):
USB: serial: pl2303: add device id for HP LM930 Display
Sergey Ryazanov (1):
usb: cdc-wdm: fix reading stuck on device close
Shravya Kumbham (1):
net: emaclite: Don't advertise 1000BASE-T and do auto negotiation
Sven Eckelmann (1):
batman-adv: Don't skb_split skbuffs with frag_list
Sven Schnelle (1):
s390: disable -Warray-bounds
Sven Schwermer (2):
USB: serial: option: add Fibocom L610 modem
USB: serial: option: add Fibocom MA510 modem
Taehee Yoo (2):
net: sfc: fix memory leak due to ptp channel
net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe()
Tariq Toukan (1):
net: Fix features skip in for_each_netdev_feature()
Thiébaud Weksteen (1):
firmware_loader: use kernel credentials when reading firmware
Trond Myklebust (3):
SUNRPC: Clean up scheduling of autoclose
SUNRPC: Prevent immediate close+reconnect
SUNRPC: Don't call connect() more than once on a TCP socket
Uwe Kleine-König (1):
usb: typec: tcpci: Don't skip cleanup in .remove() on error
Vladimir Oltean (4):
net: mscc: ocelot: fix last VCAP IS1/IS2 filter persisting in hardware
when deleted
net: mscc: ocelot: fix VCAP IS2 filters matching on both lookups
net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0
net: mscc: ocelot: avoid corrupting hardware counters when moving VCAP
filters
Waiman Long (1):
cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in
cpuset_init_smp()
Xiaomeng Tong (1):
i40e: i40e_main: fix a missing check on list iterator
Yang Yingliang (2):
ionic: fix missing pci_release_regions() on error in ionic_probe()
tty/serial: digicolor: fix possible null-ptr-deref in
digicolor_uart_probe()
Zack Rusin (1):
drm/vmwgfx: Initialize drm_mode_fb_cmd2
arch/arm/include/asm/io.h | 3 ++
arch/arm/mm/ioremap.c | 8 ++++
arch/arm64/include/asm/io.h | 4 ++
arch/arm64/mm/ioremap.c | 9 ++++
arch/s390/Makefile | 10 +++++
drivers/base/firmware_loader/main.c | 17 +++++++
drivers/gpu/drm/nouveau/nouveau_backlight.c | 9 ++--
.../drm/nouveau/nvkm/engine/device/tegra.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 2 +-
drivers/hwmon/Kconfig | 2 +-
drivers/hwmon/f71882fg.c | 5 ++-
drivers/hwmon/tmp401.c | 11 +++++
drivers/net/dsa/bcm_sf2.c | 3 ++
.../ethernet/aquantia/atlantic/aq_pci_func.c | 4 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 ++
drivers/net/ethernet/intel/i40e/i40e_main.c | 27 +++++------
drivers/net/ethernet/mscc/ocelot_flower.c | 5 ++-
drivers/net/ethernet/mscc/ocelot_vcap.c | 9 +++-
.../ethernet/pensando/ionic/ionic_bus_pci.c | 3 +-
drivers/net/ethernet/sfc/ef10.c | 5 +++
drivers/net/ethernet/sfc/efx_channels.c | 21 +++++----
drivers/net/ethernet/sfc/ptp.c | 14 +++++-
drivers/net/ethernet/sfc/ptp.h | 1 +
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 -------
drivers/net/phy/phy.c | 45 ++++++++++++++++---
drivers/net/phy/sfp.c | 12 ++++-
.../net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 +-
drivers/net/wireless/mac80211_hwsim.c | 3 ++
drivers/s390/net/ctcm_mpc.c | 6 +--
drivers/s390/net/ctcm_sysfs.c | 5 ++-
drivers/s390/net/lcs.c | 7 +--
drivers/slimbus/qcom-ctrl.c | 4 +-
drivers/tty/n_gsm.c | 12 +++--
drivers/tty/serial/8250/8250_mtk.c | 22 +++++----
drivers/tty/serial/digicolor-usart.c | 5 +--
drivers/usb/class/cdc-wdm.c | 1 +
drivers/usb/gadget/function/f_uvc.c | 32 +++++++++++--
drivers/usb/gadget/function/uvc.h | 2 +
drivers/usb/gadget/function/uvc_v4l2.c | 3 +-
drivers/usb/serial/option.c | 4 ++
drivers/usb/serial/pl2303.c | 1 +
drivers/usb/serial/pl2303.h | 1 +
drivers/usb/serial/qcserial.c | 2 +
drivers/usb/typec/tcpm/tcpci.c | 2 +-
drivers/usb/typec/tcpm/tcpci_mt6360.c | 26 +++++++++++
fs/ceph/file.c | 16 +++++--
fs/gfs2/bmap.c | 11 +++--
fs/nfs/fs_context.c | 2 +-
include/linux/netdev_features.h | 4 +-
include/linux/sunrpc/xprtsock.h | 1 +
include/net/tc_act/tc_pedit.h | 1 +
kernel/cgroup/cpuset.c | 7 ++-
lib/dim/net_dim.c | 44 +++++++++---------
net/batman-adv/fragmentation.c | 11 +++++
net/core/secure_seq.c | 12 +++--
net/ipv4/ping.c | 15 ++++++-
net/ipv4/route.c | 1 +
net/mac80211/mlme.c | 6 +++
net/netlink/af_netlink.c | 1 -
net/sched/act_pedit.c | 26 +++++++++--
net/smc/smc_rx.c | 4 +-
net/sunrpc/rpc_pipe.c | 1 +
net/sunrpc/xprt.c | 29 +++++++-----
net/sunrpc/xprtsock.c | 21 +++++----
net/tls/tls_device.c | 3 ++
sound/soc/codecs/max98090.c | 5 ++-
sound/soc/soc-ops.c | 18 +++++++-
tools/testing/selftests/vm/Makefile | 10 ++---
68 files changed, 468 insertions(+), 171 deletions(-)
--
2.20.1
1
66

[PATCH openEuler-5.10-LTS 01/22] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
by Zheng Zengkai 16 Aug '22
by Zheng Zengkai 16 Aug '22
16 Aug '22
From: Qi Liu <liuqi115(a)huawei.com>
mainline inclusion
from mainline-v5.17-rc1
commit 8404b0fbc7fb
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5AZ87
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------------------------------------------------
PCIe PMU Root Complex Integrated End Point(RCiEP) device is supported
to sample bandwidth, latency, buffer occupation etc.
Each PMU RCiEP device monitors multiple Root Ports, and each RCiEP is
registered as a PMU in /sys/bus/event_source/devices, so users can
select target PMU, and use filter to do further sets.
Filtering options contains:
event - select the event.
port - select target Root Ports. Information of Root Ports are
shown under sysfs.
bdf - select requester_id of target EP device.
trig_len - set trigger condition for starting event statistics.
trig_mode - set trigger mode. 0 means starting to statistic when bigger
than trigger condition, and 1 means smaller.
thr_len - set threshold for statistics.
thr_mode - set threshold mode. 0 means count when bigger than threshold,
and 1 means smaller.
Acked-by: Krzysztof Wilczyński <kw(a)linux.com>
Reviewed-by: John Garry <john.garry(a)huawei.com>
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Reviewed-by: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
Link: https://lore.kernel.org/r/20211202080633.2919-3-liuqi115@huawei.com
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Wangming Shao <shaowangming(a)h-partners.com>
Reviewed-by: Junhao He <hejunhao3(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
MAINTAINERS | 2 +
drivers/perf/hisilicon/Kconfig | 9 +
drivers/perf/hisilicon/Makefile | 2 +
drivers/perf/hisilicon/hisi_pcie_pmu.c | 951 +++++++++++++++++++++++++
include/linux/cpuhotplug.h | 3 +
5 files changed, 967 insertions(+)
create mode 100644 drivers/perf/hisilicon/hisi_pcie_pmu.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 23a23bd94c00..d3d6cad63b94 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7976,8 +7976,10 @@ F: Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml
HISILICON PMU DRIVER
M: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
+M: Qi Liu <liuqi115(a)huawei.com>
S: Supported
W: http://www.hisilicon.com
+F: Documentation/admin-guide/perf/hisi-pcie-pmu.rst
F: Documentation/admin-guide/perf/hisi-pmu.rst
F: drivers/perf/hisilicon
diff --git a/drivers/perf/hisilicon/Kconfig b/drivers/perf/hisilicon/Kconfig
index c5d1b7019fff..5546218b5598 100644
--- a/drivers/perf/hisilicon/Kconfig
+++ b/drivers/perf/hisilicon/Kconfig
@@ -5,3 +5,12 @@ config HISI_PMU
help
Support for HiSilicon SoC L3 Cache performance monitor, Hydra Home
Agent performance monitor and DDR Controller performance monitor.
+
+config HISI_PCIE_PMU
+ tristate "HiSilicon PCIE PERF PMU"
+ depends on PCI && ARM64
+ help
+ Provide support for HiSilicon PCIe performance monitoring unit (PMU)
+ RCiEP devices.
+ Adds the PCIe PMU into perf events system for monitoring latency,
+ bandwidth etc.
diff --git a/drivers/perf/hisilicon/Makefile b/drivers/perf/hisilicon/Makefile
index 7643c9f93e36..506ed39e3266 100644
--- a/drivers/perf/hisilicon/Makefile
+++ b/drivers/perf/hisilicon/Makefile
@@ -2,3 +2,5 @@
obj-$(CONFIG_HISI_PMU) += hisi_uncore_pmu.o hisi_uncore_l3c_pmu.o \
hisi_uncore_hha_pmu.o hisi_uncore_ddrc_pmu.o hisi_uncore_sllc_pmu.o \
hisi_uncore_pa_pmu.o
+
+obj-$(CONFIG_HISI_PCIE_PMU) += hisi_pcie_pmu.o
diff --git a/drivers/perf/hisilicon/hisi_pcie_pmu.c b/drivers/perf/hisilicon/hisi_pcie_pmu.c
new file mode 100644
index 000000000000..2f18838754ec
--- /dev/null
+++ b/drivers/perf/hisilicon/hisi_pcie_pmu.c
@@ -0,0 +1,951 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * This driver adds support for PCIe PMU RCiEP device. Related
+ * perf events are bandwidth, latency etc.
+ *
+ * Copyright (C) 2021 HiSilicon Limited
+ * Author: Qi Liu <liuqi115(a)huawei.com>
+ */
+#include <linux/bitfield.h>
+#include <linux/bitmap.h>
+#include <linux/bug.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/perf_event.h>
+
+#define DRV_NAME "hisi_pcie_pmu"
+/* Define registers */
+#define HISI_PCIE_GLOBAL_CTRL 0x00
+#define HISI_PCIE_EVENT_CTRL 0x010
+#define HISI_PCIE_CNT 0x090
+#define HISI_PCIE_EXT_CNT 0x110
+#define HISI_PCIE_INT_STAT 0x150
+#define HISI_PCIE_INT_MASK 0x154
+#define HISI_PCIE_REG_BDF 0xfe0
+#define HISI_PCIE_REG_VERSION 0xfe4
+#define HISI_PCIE_REG_INFO 0xfe8
+
+/* Define command in HISI_PCIE_GLOBAL_CTRL */
+#define HISI_PCIE_GLOBAL_EN 0x01
+#define HISI_PCIE_GLOBAL_NONE 0
+
+/* Define command in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_EN BIT_ULL(20)
+#define HISI_PCIE_RESET_CNT BIT_ULL(22)
+#define HISI_PCIE_INIT_SET BIT_ULL(34)
+#define HISI_PCIE_THR_EN BIT_ULL(26)
+#define HISI_PCIE_TARGET_EN BIT_ULL(32)
+#define HISI_PCIE_TRIG_EN BIT_ULL(52)
+
+/* Define offsets in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_M GENMASK_ULL(15, 0)
+#define HISI_PCIE_THR_MODE_M GENMASK_ULL(27, 27)
+#define HISI_PCIE_THR_M GENMASK_ULL(31, 28)
+#define HISI_PCIE_TARGET_M GENMASK_ULL(52, 36)
+#define HISI_PCIE_TRIG_MODE_M GENMASK_ULL(53, 53)
+#define HISI_PCIE_TRIG_M GENMASK_ULL(59, 56)
+
+#define HISI_PCIE_MAX_COUNTERS 8
+#define HISI_PCIE_REG_STEP 8
+#define HISI_PCIE_THR_MAX_VAL 10
+#define HISI_PCIE_TRIG_MAX_VAL 10
+#define HISI_PCIE_MAX_PERIOD (GENMASK_ULL(63, 0))
+#define HISI_PCIE_INIT_VAL BIT_ULL(63)
+
+struct hisi_pcie_pmu {
+ struct perf_event *hw_events[HISI_PCIE_MAX_COUNTERS];
+ struct hlist_node node;
+ struct pci_dev *pdev;
+ struct pmu pmu;
+ void __iomem *base;
+ int irq;
+ u32 identifier;
+ /* Minimum and maximum BDF of root ports monitored by PMU */
+ u16 bdf_min;
+ u16 bdf_max;
+ int on_cpu;
+};
+
+struct hisi_pcie_reg_pair {
+ u16 lo;
+ u16 hi;
+};
+
+#define to_pcie_pmu(p) (container_of((p), struct hisi_pcie_pmu, pmu))
+#define GET_PCI_DEVFN(bdf) ((bdf) & 0xff)
+
+#define HISI_PCIE_PMU_FILTER_ATTR(_name, _config, _hi, _lo) \
+ static u64 hisi_pcie_get_##_name(struct perf_event *event) \
+ { \
+ return FIELD_GET(GENMASK(_hi, _lo), event->attr._config); \
+ } \
+
+HISI_PCIE_PMU_FILTER_ATTR(event, config, 16, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_len, config1, 3, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_mode, config1, 4, 4);
+HISI_PCIE_PMU_FILTER_ATTR(trig_len, config1, 8, 5);
+HISI_PCIE_PMU_FILTER_ATTR(trig_mode, config1, 9, 9);
+HISI_PCIE_PMU_FILTER_ATTR(port, config2, 15, 0);
+HISI_PCIE_PMU_FILTER_ATTR(bdf, config2, 31, 16);
+
+static ssize_t hisi_pcie_format_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct dev_ext_attribute *eattr;
+
+ eattr = container_of(attr, struct dev_ext_attribute, attr);
+
+ return sysfs_emit(buf, "%s\n", (char *)eattr->var);
+}
+
+static ssize_t hisi_pcie_event_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct perf_pmu_events_attr *pmu_attr =
+ container_of(attr, struct perf_pmu_events_attr, attr);
+
+ return sysfs_emit(buf, "config=0x%llx\n", pmu_attr->id);
+}
+
+#define HISI_PCIE_PMU_FORMAT_ATTR(_name, _format) \
+ (&((struct dev_ext_attribute[]){ \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_format_sysfs_show, \
+ NULL), \
+ .var = (void *)_format } \
+ })[0].attr.attr)
+
+#define HISI_PCIE_PMU_EVENT_ATTR(_name, _id) \
+ (&((struct perf_pmu_events_attr[]) { \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_event_sysfs_show, NULL), \
+ .id = _id, } \
+ })[0].attr.attr)
+
+static ssize_t cpumask_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return cpumap_print_to_pagebuf(true, buf, cpumask_of(pcie_pmu->on_cpu));
+}
+static DEVICE_ATTR_RO(cpumask);
+
+static ssize_t identifier_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#x\n", pcie_pmu->identifier);
+}
+static DEVICE_ATTR_RO(identifier);
+
+static ssize_t bus_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#04x\n", PCI_BUS_NUM(pcie_pmu->bdf_min));
+}
+static DEVICE_ATTR_RO(bus);
+
+static struct hisi_pcie_reg_pair
+hisi_pcie_parse_reg_value(struct hisi_pcie_pmu *pcie_pmu, u32 reg_off)
+{
+ u32 val = readl_relaxed(pcie_pmu->base + reg_off);
+ struct hisi_pcie_reg_pair regs = {
+ .lo = val,
+ .hi = val >> 16,
+ };
+
+ return regs;
+}
+
+/*
+ * Hardware counter and ext_counter work together for bandwidth, latency, bus
+ * utilization and buffer occupancy events. For example, RX memory write latency
+ * events(index = 0x0010), counter counts total delay cycles and ext_counter
+ * counts RX memory write PCIe packets number.
+ *
+ * As we don't want PMU driver to process these two data, "delay cycles" can
+ * be treated as an independent event(index = 0x0010), "RX memory write packets
+ * number" as another(index = 0x10010). BIT 16 is used to distinguish and 0-15
+ * bits are "real" event index, which can be used to set HISI_PCIE_EVENT_CTRL.
+ */
+#define EXT_COUNTER_IS_USED(idx) ((idx) & BIT(16))
+
+static u32 hisi_pcie_get_real_event(struct perf_event *event)
+{
+ return hisi_pcie_get_event(event) & GENMASK(15, 0);
+}
+
+static u32 hisi_pcie_pmu_get_offset(u32 offset, u32 idx)
+{
+ return offset + HISI_PCIE_REG_STEP * idx;
+}
+
+static u32 hisi_pcie_pmu_readl(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset,
+ u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readl_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writel(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u32 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writel_relaxed(val, pcie_pmu->base + offset);
+}
+
+static u64 hisi_pcie_pmu_readq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readq_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writeq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u64 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writeq_relaxed(val, pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_config_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ u64 reg = HISI_PCIE_INIT_SET;
+ u64 port, trig_len, thr_len;
+
+ /* Config HISI_PCIE_EVENT_CTRL according to event. */
+ reg |= FIELD_PREP(HISI_PCIE_EVENT_M, hisi_pcie_get_real_event(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to root port or EP device. */
+ port = hisi_pcie_get_port(event);
+ if (port)
+ reg |= FIELD_PREP(HISI_PCIE_TARGET_M, port);
+ else
+ reg |= HISI_PCIE_TARGET_EN |
+ FIELD_PREP(HISI_PCIE_TARGET_M, hisi_pcie_get_bdf(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to trigger condition. */
+ trig_len = hisi_pcie_get_trig_len(event);
+ if (trig_len) {
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_M, trig_len);
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_MODE_M, hisi_pcie_get_trig_mode(event));
+ reg |= HISI_PCIE_TRIG_EN;
+ }
+
+ /* Config HISI_PCIE_EVENT_CTRL according to threshold condition. */
+ thr_len = hisi_pcie_get_thr_len(event);
+ if (thr_len) {
+ reg |= FIELD_PREP(HISI_PCIE_THR_M, thr_len);
+ reg |= FIELD_PREP(HISI_PCIE_THR_MODE_M, hisi_pcie_get_thr_mode(event));
+ reg |= HISI_PCIE_THR_EN;
+ }
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, reg);
+}
+
+static void hisi_pcie_pmu_clear_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, HISI_PCIE_INIT_SET);
+}
+
+static bool hisi_pcie_pmu_valid_requester_id(struct hisi_pcie_pmu *pcie_pmu, u32 bdf)
+{
+ struct pci_dev *root_port, *pdev;
+ u16 rp_bdf;
+
+ pdev = pci_get_domain_bus_and_slot(pci_domain_nr(pcie_pmu->pdev->bus), PCI_BUS_NUM(bdf),
+ GET_PCI_DEVFN(bdf));
+ if (!pdev)
+ return false;
+
+ root_port = pcie_find_root_port(pdev);
+ if (!root_port) {
+ pci_dev_put(pdev);
+ return false;
+ }
+
+ pci_dev_put(pdev);
+ rp_bdf = pci_dev_id(root_port);
+ return rp_bdf >= pcie_pmu->bdf_min && rp_bdf <= pcie_pmu->bdf_max;
+}
+
+static bool hisi_pcie_pmu_valid_filter(struct perf_event *event,
+ struct hisi_pcie_pmu *pcie_pmu)
+{
+ u32 requester_id = hisi_pcie_get_bdf(event);
+
+ if (hisi_pcie_get_thr_len(event) > HISI_PCIE_THR_MAX_VAL)
+ return false;
+
+ if (hisi_pcie_get_trig_len(event) > HISI_PCIE_TRIG_MAX_VAL)
+ return false;
+
+ if (requester_id) {
+ if (!hisi_pcie_pmu_valid_requester_id(pcie_pmu, requester_id))
+ return false;
+ }
+
+ return true;
+}
+
+static bool hisi_pcie_pmu_cmp_event(struct perf_event *target,
+ struct perf_event *event)
+{
+ return hisi_pcie_get_real_event(target) == hisi_pcie_get_real_event(event);
+}
+
+static bool hisi_pcie_pmu_validate_event_group(struct perf_event *event)
+{
+ struct perf_event *sibling, *leader = event->group_leader;
+ struct perf_event *event_group[HISI_PCIE_MAX_COUNTERS];
+ int counters = 1;
+ int num;
+
+ event_group[0] = leader;
+ if (!is_software_event(leader)) {
+ if (leader->pmu != event->pmu)
+ return false;
+
+ if (leader != event && !hisi_pcie_pmu_cmp_event(leader, event))
+ event_group[counters++] = event;
+ }
+
+ for_each_sibling_event(sibling, event->group_leader) {
+ if (is_software_event(sibling))
+ continue;
+
+ if (sibling->pmu != event->pmu)
+ return false;
+
+ for (num = 0; num < counters; num++) {
+ if (hisi_pcie_pmu_cmp_event(event_group[num], sibling))
+ break;
+ }
+
+ if (num == counters)
+ event_group[counters++] = sibling;
+ }
+
+ return counters <= HISI_PCIE_MAX_COUNTERS;
+}
+
+static int hisi_pcie_pmu_event_init(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ event->cpu = pcie_pmu->on_cpu;
+
+ if (EXT_COUNTER_IS_USED(hisi_pcie_get_event(event)))
+ hwc->event_base = HISI_PCIE_EXT_CNT;
+ else
+ hwc->event_base = HISI_PCIE_CNT;
+
+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
+ /* Sampling is not supported. */
+ if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
+ return -EOPNOTSUPP;
+
+ if (!hisi_pcie_pmu_valid_filter(event, pcie_pmu))
+ return -EINVAL;
+
+ if (!hisi_pcie_pmu_validate_event_group(event))
+ return -EINVAL;
+
+ return 0;
+}
+
+static u64 hisi_pcie_pmu_read_counter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ u32 idx = event->hw.idx;
+
+ return hisi_pcie_pmu_readq(pcie_pmu, event->hw.event_base, idx);
+}
+
+static int hisi_pcie_pmu_find_related_event(struct hisi_pcie_pmu *pcie_pmu,
+ struct perf_event *event)
+{
+ struct perf_event *sibling;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ sibling = pcie_pmu->hw_events[idx];
+ if (!sibling)
+ continue;
+
+ if (!hisi_pcie_pmu_cmp_event(sibling, event))
+ continue;
+
+ /* Related events must be used in group */
+ if (sibling->group_leader == event->group_leader)
+ return idx;
+ else
+ return -EINVAL;
+ }
+
+ return idx;
+}
+
+static int hisi_pcie_pmu_get_event_idx(struct hisi_pcie_pmu *pcie_pmu)
+{
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ if (!pcie_pmu->hw_events[idx])
+ return idx;
+ }
+
+ return -EINVAL;
+}
+
+static void hisi_pcie_pmu_event_update(struct perf_event *event)
+{
+ struct hw_perf_event *hwc = &event->hw;
+ u64 new_cnt, prev_cnt, delta;
+
+ do {
+ prev_cnt = local64_read(&hwc->prev_count);
+ new_cnt = hisi_pcie_pmu_read_counter(event);
+ } while (local64_cmpxchg(&hwc->prev_count, prev_cnt,
+ new_cnt) != prev_cnt);
+
+ delta = (new_cnt - prev_cnt) & HISI_PCIE_MAX_PERIOD;
+ local64_add(delta, &event->count);
+}
+
+static void hisi_pcie_pmu_read(struct perf_event *event)
+{
+ hisi_pcie_pmu_event_update(event);
+}
+
+static void hisi_pcie_pmu_set_period(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+
+ local64_set(&hwc->prev_count, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_CNT, idx, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EXT_CNT, idx, HISI_PCIE_INIT_VAL);
+}
+
+static void hisi_pcie_pmu_enable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val |= HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_disable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val &= ~HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_enable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 0);
+}
+
+static void hisi_pcie_pmu_disable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 1);
+}
+
+static void hisi_pcie_pmu_reset_counter(struct hisi_pcie_pmu *pcie_pmu, int idx)
+{
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_RESET_CNT);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_INIT_SET);
+}
+
+static void hisi_pcie_pmu_start(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+ u64 prev_cnt;
+
+ if (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))
+ return;
+
+ WARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));
+ hwc->state = 0;
+
+ hisi_pcie_pmu_config_filter(event);
+ hisi_pcie_pmu_enable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_enable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_set_period(event);
+
+ if (flags & PERF_EF_RELOAD) {
+ prev_cnt = local64_read(&hwc->prev_count);
+ hisi_pcie_pmu_writeq(pcie_pmu, hwc->event_base, idx, prev_cnt);
+ }
+
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_stop(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_disable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_disable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_clear_filter(event);
+ WARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);
+ hwc->state |= PERF_HES_STOPPED;
+
+ if (hwc->state & PERF_HES_UPTODATE)
+ return;
+
+ hwc->state |= PERF_HES_UPTODATE;
+}
+
+static int hisi_pcie_pmu_add(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx;
+
+ hwc->state = PERF_HES_STOPPED | PERF_HES_UPTODATE;
+
+ /* Check all working events to find a related event. */
+ idx = hisi_pcie_pmu_find_related_event(pcie_pmu, event);
+ if (idx < 0)
+ return idx;
+
+ /* Current event shares an enabled counter with the related event */
+ if (idx < HISI_PCIE_MAX_COUNTERS) {
+ hwc->idx = idx;
+ goto start_count;
+ }
+
+ idx = hisi_pcie_pmu_get_event_idx(pcie_pmu);
+ if (idx < 0)
+ return idx;
+
+ hwc->idx = idx;
+ pcie_pmu->hw_events[idx] = event;
+ /* Reset Counter to avoid previous statistic interference. */
+ hisi_pcie_pmu_reset_counter(pcie_pmu, idx);
+
+start_count:
+ if (flags & PERF_EF_START)
+ hisi_pcie_pmu_start(event, PERF_EF_RELOAD);
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_del(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_stop(event, PERF_EF_UPDATE);
+ pcie_pmu->hw_events[hwc->idx] = NULL;
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_enable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+ int num;
+
+ for (num = 0; num < HISI_PCIE_MAX_COUNTERS; num++) {
+ if (pcie_pmu->hw_events[num])
+ break;
+ }
+
+ if (num == HISI_PCIE_MAX_COUNTERS)
+ return;
+
+ writel(HISI_PCIE_GLOBAL_EN, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static void hisi_pcie_pmu_disable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+
+ writel(HISI_PCIE_GLOBAL_NONE, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static irqreturn_t hisi_pcie_pmu_irq(int irq, void *data)
+{
+ struct hisi_pcie_pmu *pcie_pmu = data;
+ irqreturn_t ret = IRQ_NONE;
+ struct perf_event *event;
+ u32 overflown;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ overflown = hisi_pcie_pmu_readl(pcie_pmu, HISI_PCIE_INT_STAT, idx);
+ if (!overflown)
+ continue;
+
+ /* Clear status of interrupt. */
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_STAT, idx, 1);
+ event = pcie_pmu->hw_events[idx];
+ if (!event)
+ continue;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_set_period(event);
+ ret = IRQ_HANDLED;
+ }
+
+ return ret;
+}
+
+static int hisi_pcie_pmu_irq_register(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int irq, ret;
+
+ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to enable MSI vectors: %d\n", ret);
+ return ret;
+ }
+
+ irq = pci_irq_vector(pdev, 0);
+ ret = request_irq(irq, hisi_pcie_pmu_irq, IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
+ pcie_pmu);
+ if (ret) {
+ pci_err(pdev, "Failed to register IRQ: %d\n", ret);
+ pci_free_irq_vectors(pdev);
+ return ret;
+ }
+
+ pcie_pmu->irq = irq;
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_irq_unregister(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ free_irq(pcie_pmu->irq, pcie_pmu);
+ pci_free_irq_vectors(pdev);
+}
+
+static int hisi_pcie_pmu_online_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+
+ if (pcie_pmu->on_cpu == -1) {
+ pcie_pmu->on_cpu = cpu;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(cpu)));
+ }
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_offline_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+ unsigned int target;
+
+ /* Nothing to do if this CPU doesn't own the PMU */
+ if (pcie_pmu->on_cpu != cpu)
+ return 0;
+
+ pcie_pmu->on_cpu = -1;
+ /* Choose a new CPU from all online cpus. */
+ target = cpumask_first(cpu_online_mask);
+ if (target >= nr_cpu_ids) {
+ pci_err(pcie_pmu->pdev, "There is no CPU to set\n");
+ return 0;
+ }
+
+ perf_pmu_migrate_context(&pcie_pmu->pmu, cpu, target);
+ /* Use this CPU for event counting */
+ pcie_pmu->on_cpu = target;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(target)));
+
+ return 0;
+}
+
+static struct attribute *hisi_pcie_pmu_events_attr[] = {
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_latency, 0x0010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_cnt, 0x10010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_latency, 0x0210),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_cnt, 0x10210),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_latency, 0x0011),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_cnt, 0x10011),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_flux, 0x1005),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_time, 0x11005),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_flux, 0x2004),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_time, 0x12004),
+ NULL
+};
+
+static struct attribute_group hisi_pcie_pmu_events_group = {
+ .name = "events",
+ .attrs = hisi_pcie_pmu_events_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_format_attr[] = {
+ HISI_PCIE_PMU_FORMAT_ATTR(event, "config:0-16"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_len, "config1:0-3"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_mode, "config1:4"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_len, "config1:5-8"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_mode, "config1:9"),
+ HISI_PCIE_PMU_FORMAT_ATTR(port, "config2:0-15"),
+ HISI_PCIE_PMU_FORMAT_ATTR(bdf, "config2:16-31"),
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_format_group = {
+ .name = "format",
+ .attrs = hisi_pcie_pmu_format_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_bus_attrs[] = {
+ &dev_attr_bus.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_bus_attr_group = {
+ .attrs = hisi_pcie_pmu_bus_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_cpumask_attrs[] = {
+ &dev_attr_cpumask.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_cpumask_attr_group = {
+ .attrs = hisi_pcie_pmu_cpumask_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_identifier_attrs[] = {
+ &dev_attr_identifier.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_identifier_attr_group = {
+ .attrs = hisi_pcie_pmu_identifier_attrs,
+};
+
+static const struct attribute_group *hisi_pcie_pmu_attr_groups[] = {
+ &hisi_pcie_pmu_events_group,
+ &hisi_pcie_pmu_format_group,
+ &hisi_pcie_pmu_bus_attr_group,
+ &hisi_pcie_pmu_cpumask_attr_group,
+ &hisi_pcie_pmu_identifier_attr_group,
+ NULL
+};
+
+static int hisi_pcie_alloc_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ struct hisi_pcie_reg_pair regs;
+ u16 sicl_id, core_id;
+ char *name;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_BDF);
+ pcie_pmu->bdf_min = regs.lo;
+ pcie_pmu->bdf_max = regs.hi;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_INFO);
+ sicl_id = regs.hi;
+ core_id = regs.lo;
+
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "hisi_pcie%u_core%u", sicl_id, core_id);
+ if (!name)
+ return -ENOMEM;
+
+ pcie_pmu->pdev = pdev;
+ pcie_pmu->on_cpu = -1;
+ pcie_pmu->identifier = readl(pcie_pmu->base + HISI_PCIE_REG_VERSION);
+ pcie_pmu->pmu = (struct pmu) {
+ .name = name,
+ .module = THIS_MODULE,
+ .event_init = hisi_pcie_pmu_event_init,
+ .pmu_enable = hisi_pcie_pmu_enable,
+ .pmu_disable = hisi_pcie_pmu_disable,
+ .add = hisi_pcie_pmu_add,
+ .del = hisi_pcie_pmu_del,
+ .start = hisi_pcie_pmu_start,
+ .stop = hisi_pcie_pmu_stop,
+ .read = hisi_pcie_pmu_read,
+ .task_ctx_nr = perf_invalid_context,
+ .attr_groups = hisi_pcie_pmu_attr_groups,
+ .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
+ };
+
+ return 0;
+}
+
+static int hisi_pcie_init_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int ret;
+
+ pcie_pmu->base = pci_ioremap_bar(pdev, 2);
+ if (!pcie_pmu->base) {
+ pci_err(pdev, "Ioremap failed for pcie_pmu resource\n");
+ return -ENOMEM;
+ }
+
+ ret = hisi_pcie_alloc_pmu(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = hisi_pcie_pmu_irq_register(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = cpuhp_state_add_instance(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ if (ret) {
+ pci_err(pdev, "Failed to register hotplug: %d\n", ret);
+ goto err_irq_unregister;
+ }
+
+ ret = perf_pmu_register(&pcie_pmu->pmu, pcie_pmu->pmu.name, -1);
+ if (ret) {
+ pci_err(pdev, "Failed to register PCIe PMU: %d\n", ret);
+ goto err_hotplug_unregister;
+ }
+
+ return ret;
+
+err_hotplug_unregister:
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+
+err_irq_unregister:
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+
+err_iounmap:
+ iounmap(pcie_pmu->base);
+
+ return ret;
+}
+
+static void hisi_pcie_uninit_pmu(struct pci_dev *pdev)
+{
+ struct hisi_pcie_pmu *pcie_pmu = pci_get_drvdata(pdev);
+
+ perf_pmu_unregister(&pcie_pmu->pmu);
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+ iounmap(pcie_pmu->base);
+}
+
+static int hisi_pcie_init_dev(struct pci_dev *pdev)
+{
+ int ret;
+
+ ret = pcim_enable_device(pdev);
+ if (ret) {
+ pci_err(pdev, "Failed to enable PCI device: %d\n", ret);
+ return ret;
+ }
+
+ ret = pcim_iomap_regions(pdev, BIT(2), DRV_NAME);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to request PCI mem regions: %d\n", ret);
+ return ret;
+ }
+
+ pci_set_master(pdev);
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ struct hisi_pcie_pmu *pcie_pmu;
+ int ret;
+
+ pcie_pmu = devm_kzalloc(&pdev->dev, sizeof(*pcie_pmu), GFP_KERNEL);
+ if (!pcie_pmu)
+ return -ENOMEM;
+
+ ret = hisi_pcie_init_dev(pdev);
+ if (ret)
+ return ret;
+
+ ret = hisi_pcie_init_pmu(pdev, pcie_pmu);
+ if (ret)
+ return ret;
+
+ pci_set_drvdata(pdev, pcie_pmu);
+
+ return ret;
+}
+
+static void hisi_pcie_pmu_remove(struct pci_dev *pdev)
+{
+ hisi_pcie_uninit_pmu(pdev);
+ pci_set_drvdata(pdev, NULL);
+}
+
+static const struct pci_device_id hisi_pcie_pmu_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HUAWEI, 0xa12d) },
+ { 0, }
+};
+MODULE_DEVICE_TABLE(pci, hisi_pcie_pmu_ids);
+
+static struct pci_driver hisi_pcie_pmu_driver = {
+ .name = DRV_NAME,
+ .id_table = hisi_pcie_pmu_ids,
+ .probe = hisi_pcie_pmu_probe,
+ .remove = hisi_pcie_pmu_remove,
+};
+
+static int __init hisi_pcie_module_init(void)
+{
+ int ret;
+
+ ret = cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ "AP_PERF_ARM_HISI_PCIE_PMU_ONLINE",
+ hisi_pcie_pmu_online_cpu,
+ hisi_pcie_pmu_offline_cpu);
+ if (ret) {
+ pr_err("Failed to setup PCIe PMU hotplug: %d\n", ret);
+ return ret;
+ }
+
+ ret = pci_register_driver(&hisi_pcie_pmu_driver);
+ if (ret)
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+
+ return ret;
+}
+module_init(hisi_pcie_module_init);
+
+static void __exit hisi_pcie_module_exit(void)
+{
+ pci_unregister_driver(&hisi_pcie_pmu_driver);
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+}
+module_exit(hisi_pcie_module_exit);
+
+MODULE_DESCRIPTION("HiSilicon PCIe PMU driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Qi Liu <liuqi115(a)huawei.com>");
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index b98b9eb7d5f8..24e7be132046 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -178,6 +178,9 @@ enum cpuhp_state {
CPUHP_AP_PERF_ARM_HISI_L3_ONLINE,
CPUHP_AP_PERF_ARM_HISI_PA_ONLINE,
CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE,
+ #ifndef __GENKSYMS__
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ #endif
CPUHP_AP_PERF_ARM_L2X0_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,
--
2.20.1
1
21

[PATCH openEuler-1.0-LTS] blk-mq: fix null pointer dereference in blk_mq_queue_tag_busy_ite
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Li Nan <linan122(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187489, https://gitee.com/openeuler/kernel/issues/I5MKPP
CVE: NA
--------------------------------
The q->tag_set can be NULL in blk_mq_queue_tag_busy_ite() while queue
has not been initialized:
CPU0 CPU1
dm_mq_init_request_queue
md->tag_set = kzalloc_node
blk_mq_init_allocated_queue
q->mq_ops = set->ops;
diskstats_show
part_get_stat_info
if(q->mq_ops)
blk_mq_in_flight_with_stat
blk_mq_queue_tag_busy_ite
if (blk_mq_is_shared_tags(q->tag_set->flags))
//q->tag_set is null here
q->tag_set = set
blk_register_queue
blk_queue_flag_set(QUEUE_FLAG_REGISTERED, q)
There is same bug when cat /sys/block/[device]/inflight. Fix it by checking
the flag 'QUEUE_FLAG_REGISTERED'. Althrough this may cause some io not to
be counted temporarily, it doesn't hurt in real user case.
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-mq-tag.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index bee92ab06a5e..c24802fe6ab2 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -374,6 +374,13 @@ void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
struct blk_mq_hw_ctx *hctx;
int i;
+ /*
+ * For dm, it can run here after register_disk, but the queue has not
+ * been initialized yet. Check QUEUE_FLAG_REGISTERED prevent null point
+ * access.
+ */
+ if (!test_bit(QUEUE_FLAG_REGISTERED, &q->queue_flags))
+ return;
/*
* __blk_mq_update_nr_hw_queues will update the nr_hw_queues and
* queue_hw_ctx after freeze the queue, so we use q_usage_counter
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] arm64: Avoid premature usercopy failure for __arch_copy_to_user_generic_read
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5MJU8
CVE: NA
---------------------------------
Commit 1b1b4dede457 ("arm64: Avoid premature usercopy failure") fixes an
usercopy failure issues, it introduced a variable srcin and used it in
fixup routine, but the variable is not initialized in
__arch_copy_to_user_generic_read(), this will cause an illegal pointer
issue in fixup.
Fixes: 1b1b4dede457 ("arm64: Avoid premature usercopy failure")
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Tested-by: yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/arm64/lib/copy_to_user.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S
index 84b7a16e82b5..6214e4972141 100644
--- a/arch/arm64/lib/copy_to_user.S
+++ b/arch/arm64/lib/copy_to_user.S
@@ -77,6 +77,7 @@ ENDPROC(__arch_copy_to_user)
ENTRY(__arch_copy_to_user_generic_read)
uaccess_enable_not_uao x3, x4, x5
add end, x0, x2
+ mov srcin, x1
#include "copy_template_generic_read.S"
uaccess_disable_not_uao x3, x4
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] net_sched: cls_route: remove from list when handle is 0
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 9ad36309e2719a884f946678e0296be10f0bb4c1
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5LJLR
CVE: CVE-2022-2588
--------------------------------
When a route filter is replaced and the old filter has a 0 handle, the old
one won't be removed from the hashtable, while it will still be freed.
The test was there since before commit 1109c00547fc ("net: sched: RCU
cls_route"), when a new filter was not allocated when there was an old one.
The old filter was reused and the reinserting would only be necessary if an
old filter was replaced. That was still wrong for the same case where the
old handle was 0.
Remove the old filter from the list independently from its handle value.
This fixes CVE-2022-2588, also reported as ZDI-CAN-17440.
Reported-by: Zhenpeng Lin <zplin(a)u.northwestern.edu>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Reviewed-by: Kamal Mostafa <kamal(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Acked-by: Jamal Hadi Salim <jhs(a)mojatatu.com>
Link: https://lore.kernel.org/r/20220809170518.164662-1-cascardo@canonical.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/sched/cls_route.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c
index 0a0a22a0666d..c13903441ac1 100644
--- a/net/sched/cls_route.c
+++ b/net/sched/cls_route.c
@@ -528,7 +528,7 @@ static int route4_change(struct net *net, struct sk_buff *in_skb,
rcu_assign_pointer(f->next, f1);
rcu_assign_pointer(*fp, f);
- if (fold && fold->handle && f->handle != fold->handle) {
+ if (fold) {
th = to_hash(fold->handle);
h = from_hash(fold->handle >> 16);
b = rtnl_dereference(head->table[th]);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Revert "x86/unwind/orc: Change REG_SP_INDIRECT"
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Yipeng Zou <zouyipeng(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5MC71
CVE: NA
---------------------------------
This reverts commit 657a6bec17a04e9223a099608084ab5adc2582df.
This patch was backport from mainline and intend to fix REG_SP_INDIRECT
type in orc unwinder.The patch was fix an objtools problem on mainline,
which The upstream commit havn't been merged in hulk-4.19,and it led to
parse the sp value form orc data was wrong. So we need revert this patch.
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/kernel/unwind_orc.c | 5 +----
tools/objtool/orc_dump.c | 2 +-
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
index 3ff76f88e220..6c5d3b22ac61 100644
--- a/arch/x86/kernel/unwind_orc.c
+++ b/arch/x86/kernel/unwind_orc.c
@@ -450,7 +450,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
case ORC_REG_SP_INDIRECT:
- sp = state->sp;
+ sp = state->sp + orc->sp_offset;
indirect = true;
break;
@@ -500,9 +500,6 @@ bool unwind_next_frame(struct unwind_state *state)
if (indirect) {
if (!deref_stack_reg(state, sp, &sp))
goto err;
-
- if (orc->sp_reg == ORC_REG_SP_INDIRECT)
- sp += orc->sp_offset;
}
/* Find IP, SP and possibly regs: */
diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index ba28830aace2..faa444270ee3 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -64,7 +64,7 @@ static void print_reg(unsigned int reg, int offset)
if (reg == ORC_REG_BP_INDIRECT)
printf("(bp%+d)", offset);
else if (reg == ORC_REG_SP_INDIRECT)
- printf("(sp)%+d", offset);
+ printf("(sp%+d)", offset);
else if (reg == ORC_REG_UNDEFINED)
printf("(und)");
else
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/3] scsi: iscsi: Add helper functions to manage iscsi_cls_conn
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Wenchao Hao <haowenchao(a)huawei.com>
mainline inclusion
from mainline-v5.18-rc1
commit ad515cada7dac3cdf5e1ad77a0ed696f5f34e0ab
category: bugfix
bugzilla: 187381, https://gitee.com/openeuler/kernel/issues/I5LBFL
CVE: NA
--------------------------------
- iscsi_alloc_conn(): Allocate and initialize iscsi_cls_conn
- iscsi_add_conn(): Expose iscsi_cls_conn to userspace via sysfs
- iscsi_remove_conn(): Remove iscsi_cls_conn from sysfs
Link: https://lore.kernel.org/r/20220310015759.3296841-2-haowenchao@huawei.com
Reviewed-by: Mike Christie <michael.christie(a)oracle.com>
Signed-off-by: Wenchao Hao <haowenchao(a)huawei.com>
Signed-off-by: Wu Bo <wubo40(a)huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
Conflict: drivers/scsi/scsi_transport_iscsi.c
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/scsi_transport_iscsi.c | 89 +++++++++++++++++++++++++++++
include/scsi/scsi_transport_iscsi.h | 4 ++
2 files changed, 93 insertions(+)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index bd699906828f..eba74ac58735 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -2201,6 +2201,95 @@ void iscsi_free_session(struct iscsi_cls_session *session)
}
EXPORT_SYMBOL_GPL(iscsi_free_session);
+/**
+ * iscsi_alloc_conn - alloc iscsi class connection
+ * @session: iscsi cls session
+ * @dd_size: private driver data size
+ * @cid: connection id
+ */
+struct iscsi_cls_conn *
+iscsi_alloc_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
+{
+ struct iscsi_transport *transport = session->transport;
+ struct iscsi_cls_conn *conn;
+
+ conn = kzalloc(sizeof(*conn) + dd_size, GFP_KERNEL);
+ if (!conn)
+ return NULL;
+ if (dd_size)
+ conn->dd_data = &conn[1];
+
+ mutex_init(&conn->ep_mutex);
+ INIT_LIST_HEAD(&conn->conn_list);
+ conn->transport = transport;
+ conn->cid = cid;
+
+ /* this is released in the dev's release function */
+ if (!get_device(&session->dev))
+ goto free_conn;
+
+ dev_set_name(&conn->dev, "connection%d:%u", session->sid, cid);
+ device_initialize(&conn->dev);
+ conn->dev.parent = &session->dev;
+ conn->dev.release = iscsi_conn_release;
+
+ return conn;
+
+free_conn:
+ kfree(conn);
+ return NULL;
+}
+EXPORT_SYMBOL_GPL(iscsi_alloc_conn);
+
+/**
+ * iscsi_add_conn - add iscsi class connection
+ * @conn: iscsi cls connection
+ *
+ * This will expose iscsi_cls_conn to sysfs so make sure the related
+ * resources for sysfs attributes are initialized before calling this.
+ */
+int iscsi_add_conn(struct iscsi_cls_conn *conn)
+{
+ int err;
+ unsigned long flags;
+ struct iscsi_cls_session *session = iscsi_dev_to_session(conn->dev.parent);
+
+ err = device_add(&conn->dev);
+ if (err) {
+ iscsi_cls_session_printk(KERN_ERR, session,
+ "could not register connection's dev\n");
+ return err;
+ }
+ transport_register_device(&conn->dev);
+
+ spin_lock_irqsave(&connlock, flags);
+ list_add(&conn->conn_list, &connlist);
+ spin_unlock_irqrestore(&connlock, flags);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(iscsi_add_conn);
+
+/**
+ * iscsi_remove_conn - remove iscsi class connection from sysfs
+ * @conn: iscsi cls connection
+ *
+ * Remove iscsi_cls_conn from sysfs, and wait for previous
+ * read/write of iscsi_cls_conn's attributes in sysfs to finish.
+ */
+void iscsi_remove_conn(struct iscsi_cls_conn *conn)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&connlock, flags);
+ list_del(&conn->conn_list);
+ spin_unlock_irqrestore(&connlock, flags);
+
+ transport_unregister_device(&conn->dev);
+ device_del(&conn->dev);
+}
+EXPORT_SYMBOL_GPL(iscsi_remove_conn);
+
/**
* iscsi_create_conn - create iscsi class connection
* @session: iscsi cls session
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 848ba2822a21..105458b20cd8 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -446,6 +446,10 @@ extern struct iscsi_cls_session *iscsi_create_session(struct Scsi_Host *shost,
unsigned int target_id);
extern void iscsi_remove_session(struct iscsi_cls_session *session);
extern void iscsi_free_session(struct iscsi_cls_session *session);
+extern struct iscsi_cls_conn *iscsi_alloc_conn(struct iscsi_cls_session *sess,
+ int dd_size, uint32_t cid);
+extern int iscsi_add_conn(struct iscsi_cls_conn *conn);
+extern void iscsi_remove_conn(struct iscsi_cls_conn *conn);
extern struct iscsi_cls_conn *iscsi_create_conn(struct iscsi_cls_session *sess,
int dd_size, uint32_t cid);
extern void iscsi_put_conn(struct iscsi_cls_conn *conn);
--
2.25.1
1
2
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
phytium inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I41AUQ
--------------------------------------
Use CONFIG_ARCH_PHYTIUM to control phytium ACS quirks.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Hanjun Guo <guohanjun(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/pci/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 99657b9bc82e..c389cef5c7bd 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4646,10 +4646,12 @@ static const struct pci_dev_acs_enabled {
{ PCI_VENDOR_ID_ZHAOXIN, 0x9083, pci_quirk_mf_endpoint_acs },
/* Zhaoxin Root/Downstream Ports */
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
+#ifdef CONFIG_ARCH_PHYTIUM
/* because PLX switch Vendor id is 0x10b5 on phytium cpu */
{ 0x10b5, PCI_ANY_ID, pci_quirk_xgene_acs },
/* because rootcomplex Vendor id is 0x17cd on phytium cpu */
{ 0x17cd, PCI_ANY_ID, pci_quirk_xgene_acs },
+#endif
{ 0 }
};
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/2] sched: Fix null-ptr-deref in free_fair_sched_group
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187419, https://gitee.com/openeuler/kernel/issues/I5LIPL
CVE: NA
-------------------------------
do_el0_svc+0x50/0x11c arch/arm64/kernel/syscall.c:217
el0_svc+0x20/0x30 arch/arm64/kernel/entry-common.c:353
el0_sync_handler+0xe4/0x1e0 arch/arm64/kernel/entry-common.c:369
el0_sync+0x148/0x180 arch/arm64/kernel/entry.S:683
==================================================================
BUG: KASAN: null-ptr-deref in rq_of kernel/sched/sched.h:1118 [inline]
BUG: KASAN: null-ptr-deref in unthrottle_qos_sched_group kernel/sched/fair.c:7619 [inline]
BUG: KASAN: null-ptr-deref in free_fair_sched_group+0x124/0x320 kernel/sched/fair.c:12131
Read of size 8 at addr 0000000000000130 by task syz-executor100/223
CPU: 3 PID: 223 Comm: syz-executor100 Not tainted 5.10.0 #6
Hardware name: linux,dummy-virt (DT)
Call trace:
dump_backtrace+0x0/0x40c arch/arm64/kernel/stacktrace.c:132
show_stack+0x30/0x40 arch/arm64/kernel/stacktrace.c:196
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x1b4/0x248 lib/dump_stack.c:118
__kasan_report mm/kasan/report.c:551 [inline]
kasan_report+0x18c/0x210 mm/kasan/report.c:564
check_memory_region_inline mm/kasan/generic.c:187 [inline]
__asan_load8+0x98/0xc0 mm/kasan/generic.c:253
rq_of kernel/sched/sched.h:1118 [inline]
unthrottle_qos_sched_group kernel/sched/fair.c:7619 [inline]
free_fair_sched_group+0x124/0x320 kernel/sched/fair.c:12131
sched_free_group kernel/sched/core.c:7767 [inline]
sched_create_group+0x48/0xc0 kernel/sched/core.c:7798
cpu_cgroup_css_alloc+0x18/0x40 kernel/sched/core.c:7930
css_create+0x7c/0x4a0 kernel/cgroup/cgroup.c:5328
cgroup_apply_control_enable+0x288/0x340 kernel/cgroup/cgroup.c:3135
cgroup_apply_control kernel/cgroup/cgroup.c:3217 [inline]
cgroup_subtree_control_write+0x668/0x8b0 kernel/cgroup/cgroup.c:3375
cgroup_file_write+0x1a8/0x37c kernel/cgroup/cgroup.c:3909
kernfs_fop_write_iter+0x220/0x2f4 fs/kernfs/file.c:296
call_write_iter include/linux/fs.h:1960 [inline]
new_sync_write+0x260/0x370 fs/read_write.c:515
vfs_write+0x3dc/0x4ac fs/read_write.c:602
ksys_write+0xfc/0x200 fs/read_write.c:655
__do_sys_write fs/read_write.c:667 [inline]
__se_sys_write fs/read_write.c:664 [inline]
__arm64_sys_write+0x50/0x60 fs/read_write.c:664
__invoke_syscall arch/arm64/kernel/syscall.c:36 [inline]
invoke_syscall arch/arm64/kernel/syscall.c:48 [inline]
el0_svc_common.constprop.0+0xf4/0x414 arch/arm64/kernel/syscall.c:155
do_el0_svc+0x50/0x11c arch/arm64/kernel/syscall.c:217
el0_svc+0x20/0x30 arch/arm64/kernel/entry-common.c:353
el0_sync_handler+0xe4/0x1e0 arch/arm64/kernel/entry-common.c:369
el0_sync+0x148/0x180 arch/arm64/kernel/entry.S:683
So add check for tg->cfs_rq[i] before unthrottle_qos_sched_group() called.
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
Reviewed-by: Zhang Qiao <zhangqiao22(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/sched/fair.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index bcc72537b6fa..a34ca843bf0a 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -10878,7 +10878,7 @@ void free_fair_sched_group(struct task_group *tg)
for_each_possible_cpu(i) {
#ifdef CONFIG_QOS_SCHED
- if (tg->cfs_rq)
+ if (tg->cfs_rq && tg->cfs_rq[i])
unthrottle_qos_sched_group(tg->cfs_rq[i]);
#endif
if (tg->cfs_rq)
--
2.25.1
1
1
Backport BPF CO-RE support patches for openEuler-22.09
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (47):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (149):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
selftests/bpf: Add fentry/fexit/fmod_ret selftest for kernel module
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
selftests/bpf: Work-around EBUSY errors from hashmap update/delete
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Deprecate bpf_program__load() API
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (7):
bpf: Be less specific about socket cookies guarantees
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (8):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Deprecate bpf_object__unload() API since v0.6
libbpf: Deprecate bpf_{map,program}__{prev,next} APIs since v0.7
selftests/bpf: Switch to new bpf_object__next_{map,program} APIs
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (5):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (3):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (14):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (9):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (5):
bpf: Use separate lockdep class for each hashtab
bpf: Avoid hashtab deadlock with map_locked
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (27):
bpf: Permit cond_resched for some iterators
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 150 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 46 +-
include/linux/bpfptr.h | 75 +
include/linux/btf.h | 106 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 265 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 43 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1403 ++++-
kernel/bpf/core.c | 153 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 130 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/task_iter.c | 2 +
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1508 ++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 290 +-
net/core/filter.c | 1 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
samples/bpf/xdp1_user.c | 2 +-
samples/bpf/xdp_sample_pkts_user.c | 2 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/iter.c | 2 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 141 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 38 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 977 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 272 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2085 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5436 +++++++++--------
tools/lib/bpf/libbpf.h | 212 +-
tools/lib/bpf/libbpf.map | 54 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 299 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 1 +
tools/testing/selftests/bpf/Makefile | 183 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 55 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/ksyms_btf.c | 34 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 31 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 15 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/module_attach.c | 53 +
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 17 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 55 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/tcp_rtt.c | 2 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 4 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 26 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_module_attach.c | 66 +
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 1 -
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/test_bpftool_build.sh | 4 +
tools/testing/selftests/bpf/test_btf.h | 3 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 279 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 72 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 12 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/bpf/xdping.c | 2 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
292 files changed, 24645 insertions(+), 6370 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/module_attach.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_module_attach.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
379

12 Aug '22
From: Xu Kuohai <xukuohai(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5M05G
CVE: NA
-------------------------------------------------------
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patch implements a sample BMC for Redis. Paper [1] implements BMC
in XDP, bypassing the kernel network stack totally. Since Redis is based
on TCP protocol, and it's almost impossible to fully process TCP traffic
in XDP, so this patch implements BMC in sockmap, which locates at the
top of kernel network stack. Since kernel network stack is not bypassed,
the speedup is not significant. Any way, this is only a sample
implementation, and performance improvements can be continuously
optimized.
See [2] for details on how to build samples/bpf.
Output files:
samples/bpf/bmctool
samples/bpf/bmc/bpf.o
Sample usage:
bmctool prog load -p 6379 ./bmc/bpf.o # load bmc bpf prog and attach it
# to sockets with listen port 6379
bmctool stat # dump bmc status
bmctool prog unload # detach and unload bmc prog
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
[2] https://www.kernel.org/doc/readme/samples-bpf-README.rst
Signed-off-by: Xu Kuohai <xukuohai(a)huawei.com>
Reviewed-by: Yang Jihong <yangjihong1(a)huawei.com>
---
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 144 ++++++++
samples/bpf/bmc/common.h | 21 ++
samples/bpf/bmc/redis.h | 648 ++++++++++++++++++++++++++++++++++
samples/bpf/bmc/tool.c | 733 +++++++++++++++++++++++++++++++++++++++
5 files changed, 1549 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/redis.h
create mode 100644 samples/bpf/bmc/tool.c
diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
index aeebf5d12f32..f9bb6bdad6ce 100644
--- a/samples/bpf/Makefile
+++ b/samples/bpf/Makefile
@@ -54,6 +54,7 @@ tprogs-y += task_fd_query
tprogs-y += xdp_sample_pkts
tprogs-y += ibumad
tprogs-y += hbm
+tprogs-y += bmctool
# Libbpf dependencies
LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a
@@ -111,6 +112,7 @@ task_fd_query-objs := bpf_load.o task_fd_query_user.o $(TRACE_HELPERS)
xdp_sample_pkts-objs := xdp_sample_pkts_user.o $(TRACE_HELPERS)
ibumad-objs := bpf_load.o ibumad_user.o $(TRACE_HELPERS)
hbm-objs := bpf_load.o hbm.o $(CGROUP_HELPERS)
+bmctool-objs := bmc/tool.o
# Tell kbuild to always build the programs
always-y := $(tprogs-y)
@@ -172,6 +174,7 @@ always-y += ibumad_kern.o
always-y += hbm_out_kern.o
always-y += hbm_edt_kern.o
always-y += xdpsock_kern.o
+always-y += bmc/bpf.o
ifeq ($(ARCH), arm)
# Strip all except -D__LINUX_ARM_ARCH__ option needed to handle linux
diff --git a/samples/bpf/bmc/bpf.c b/samples/bpf/bmc/bpf.c
new file mode 100644
index 000000000000..127260c611f8
--- /dev/null
+++ b/samples/bpf/bmc/bpf.c
@@ -0,0 +1,144 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ *
+ * Description: BPF program to accelerate Redis. The idea is to add a kernel
+ * cache for Redis data. When new Redis request is received, the kernel cache
+ * is checked, and if the requested data is found in the cache, a Redis reply
+ * message is constructed and sent back directly.
+ */
+
+#include <uapi/linux/in.h>
+#include <uapi/linux/if_ether.h>
+#include <uapi/linux/ip.h>
+#include <uapi/linux/tcp.h>
+#include <uapi/linux/bpf.h>
+#include <uapi/linux/pkt_cls.h>
+
+#include <bpf/bpf_helpers.h>
+
+#define debug(fmt, ...) \
+do { \
+ char ___fmt[] = fmt; \
+ bpf_trace_printk(___fmt, sizeof(___fmt), ##__VA_ARGS__); \
+} while (0)
+
+struct tcp_key {
+ __u32 family;
+ __be32 local_ip4;
+ __be32 remote_ip4;
+ __be32 local_port;
+ __be32 remote_port;
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_SOCKHASH);
+ __uint(key_size, sizeof(struct tcp_key));
+ __uint(value_size, sizeof(u64));
+ __uint(max_entries, 1024);
+} bmc_socks SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_HASH);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(u32));
+ __uint(max_entries, 16);
+} bmc_ports SEC(".maps");
+
+SEC("bmc/sock_parser")
+int sock_parser(struct __sk_buff *skb)
+{
+ return skb->len;
+}
+
+static void init_tcp_key(struct tcp_key *key, struct bpf_sock *sk)
+{
+ if (sk != NULL) {
+ key->family = sk->family;
+ key->local_ip4 = sk->src_ip4;
+ key->remote_ip4 = sk->dst_ip4;
+ key->local_port = htonl(sk->src_port);
+ key->remote_port = htonl((u32)ntohs(sk->dst_port));
+ }
+}
+
+static int sock_redirect(struct __sk_buff *skb)
+{
+ struct tcp_key key;
+ struct bpf_sock *sk;
+
+ sk = skb->sk;
+ if (sk == NULL)
+ return SK_PASS;
+
+ init_tcp_key(&key, sk);
+ return bpf_sk_redirect_hash(skb, &bmc_socks, &key, 0);
+}
+
+#include "redis.h"
+
+SEC("bmc/sock_verdict")
+int sock_verdict(struct __sk_buff *skb)
+{
+ return bmc_process(skb);
+}
+
+static bool is_bmc_port(u32 port)
+{
+ u32 *val = bpf_map_lookup_elem(&bmc_ports, &port);
+
+ return val != NULL && *val != 0;
+}
+
+static void add_bmc_sock(struct bpf_sock_ops *skops, struct bpf_sock *sk)
+{
+ struct tcp_key key;
+
+ init_tcp_key(&key, sk);
+ bpf_sock_hash_update(skops, &bmc_socks, &key, BPF_ANY);
+}
+
+static void delete_bmc_sock(struct bpf_sock_ops *skops, struct bpf_sock *sk)
+{
+ struct tcp_key key;
+
+ init_tcp_key(&key, sk);
+ bpf_map_delete_elem(&bmc_socks, &key);
+}
+
+SEC("bmc/sock_ops")
+int sock_ops(struct bpf_sock_ops *skops)
+{
+ int op;
+ u16 local_port;
+ struct tcp_key key;
+ struct bpf_sock *sk;
+
+ sk = skops->sk;
+ if (skops->family != AF_INET || sk == NULL)
+ return 0;
+
+ local_port = ntohs((u16)sk->src_port);
+
+ switch ((int)skops->op) {
+ case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB:
+ case BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB:
+ if (is_bmc_port(local_port)) {
+ bpf_sock_ops_cb_flags_set(skops, BPF_SOCK_OPS_STATE_CB_FLAG);
+ add_bmc_sock(skops, sk);
+ }
+ break;
+
+ case BPF_SOCK_OPS_STATE_CB:
+ if ((int)skops->args[1] == BPF_TCP_CLOSE)
+ delete_bmc_sock(skops, sk);
+ break;
+
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+char _license[] SEC("license") = "GPL";
diff --git a/samples/bpf/bmc/common.h b/samples/bpf/bmc/common.h
new file mode 100644
index 000000000000..51c8623ab4f8
--- /dev/null
+++ b/samples/bpf/bmc/common.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ * Description: common header for both user prog and bpf kernel prog
+ */
+#ifndef __REDIS_BMC_COMMON_H__
+#define __REDIS_BMC_COMMON_H__
+
+#define REDIS_GET_PROG_INDEX 0
+#define REDIS_SET_PROG_INDEX 1
+
+struct redis_bmc_stat {
+ __u64 total_get_requests;
+ __u64 hit_get_requests;
+ __u64 drop_get_requests;
+ __u64 total_set_requests;
+ __u64 hit_set_requests;
+ __u64 drop_set_requests;
+};
+
+#endif
diff --git a/samples/bpf/bmc/redis.h b/samples/bpf/bmc/redis.h
new file mode 100644
index 000000000000..6e739ce3d81a
--- /dev/null
+++ b/samples/bpf/bmc/redis.h
@@ -0,0 +1,648 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ *
+ * Description: This file parses REDIS commands. When SET command is received,
+ * the KEY and VALUE fields are extracted from the message and are stored to
+ * bmc_storage. When GET command is received, we lookup bmc_storage with the
+ * KEY received, and if success we fill the reply message with the found VALUE
+ * and send it back to the client.
+ *
+ * Here is a sample redis SET and GET session:
+ * (C: is the client, S: the server)
+ *
+ * C: "*3\r\n$3\r\nset\r\n$5\r\nkey01\r\n$5\r\nval01\r\n"
+ * S: "+OK\r\n"
+ * C: "*2\r\n$3\r\nget\r\n$5\r\nkey01\r\n"
+ * S: "$5\r\nval01\r\n"
+ *
+ * See [0] for RESP protocol details.
+ * [0] https://redis.io/docs/reference/protocol-spec/
+ */
+
+#include "common.h"
+
+#define BMC_MAX_REDIS_KEY_LEN 448 /* total key size should be less than 512 */
+#define BMC_MAX_REDIS_VALUE_LEN 2048
+#define BMC_MAX_CPUS 512 // NR_CPUS
+
+struct redis_key {
+ u32 len;
+ u8 data[BMC_MAX_REDIS_KEY_LEN];
+};
+
+struct redis_value {
+ u32 len;
+ u8 data[BMC_MAX_REDIS_VALUE_LEN];
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_LRU_HASH);
+ __uint(key_size, sizeof(struct redis_key));
+ __uint(value_size, sizeof(struct redis_value));
+ __uint(max_entries, 10000);
+} bmc_storage SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(u32));
+ __uint(max_entries, 2);
+} bmc_jump_table SEC(".maps");
+
+struct redis_ctx {
+ struct redis_key key;
+ struct redis_value value;
+ u32 offset;
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(struct redis_ctx));
+ __uint(max_entries, BMC_MAX_CPUS);
+} ctxmap SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(struct redis_bmc_stat));
+ __uint(max_entries, BMC_MAX_CPUS);
+} bmc_stats SEC(".maps");
+
+static int bmc_copy_from_skb(void *dst, void *dend,
+ struct __sk_buff *skb,
+ u32 skb_off, u32 len)
+{
+ u32 i;
+ u32 off = 0;
+ void *data = (void *)(long)skb->data;
+ void *data_end = (void *)(long)skb->data_end;
+
+ if (len > 2047)
+ return -1;
+
+ if (len >= 1024 && dst + off + 1024 < dend &&
+ data + skb_off + off + 1024 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 1024))
+ return -1;
+ off += 1024;
+ len -= 1024;
+ }
+ if (len >= 512 && dst + off + 512 < dend &&
+ data + skb_off + off + 512 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 512))
+ return -1;
+ off += 512;
+ len -= 512;
+ }
+ if (len >= 256 && dst + off + 256 < dend &&
+ data + skb_off + off + 256 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 256))
+ return -1;
+ off += 256;
+ len -= 256;
+ }
+ if (len >= 128 && dst + off + 128 < dend &&
+ data + skb_off + off + 128 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 128))
+ return -1;
+ off += 128;
+ len -= 128;
+ }
+ if (len >= 64 && dst + off + 64 < dend &&
+ data + skb_off + off + 64 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 64))
+ return -1;
+ off += 64;
+ len -= 64;
+ }
+ if (len >= 32 && dst + off + 32 < dend &&
+ data + skb_off + off + 32 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 32))
+ return -1;
+ off += 32;
+ len -= 32;
+ }
+ if (len >= 16 && dst + off + 16 < dend &&
+ data + skb_off + off + 16 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 16))
+ return -1;
+ off += 16;
+ len -= 16;
+ }
+
+ if (len >= 8 && dst + off + 8 < dend &&
+ data + skb_off + off + 8 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 8))
+ return -1;
+ off += 8;
+ len -= 8;
+ }
+
+ if (len >= 4 && dst + off + 4 < dend &&
+ data + skb_off + off + 4 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 4))
+ return -1;
+ off += 4;
+ len -= 4;
+ }
+
+ if (len >= 2 && dst + off + 2 < dend &&
+ data + skb_off + off + 2 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 2))
+ return -1;
+ off += 2;
+ len -= 2;
+ }
+
+ if (len >= 1 && dst + off + 1 < dend &&
+ data + skb_off + off + 1 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 1))
+ return -1;
+ off += 1;
+ len -= 1;
+ }
+
+ return len == 0 ? 0 : -1;
+}
+
+static int bmc_copy_to_skb(struct __sk_buff *skb, u32 skb_off,
+ void *dst, void *dend, u32 len)
+{
+ u32 i;
+ u32 off = 0;
+ void *data = (void *)(long)skb->data;
+ void *data_end = (void *)(long)skb->data_end;
+
+ if (len > 2047)
+ return -1;
+
+ if (len >= 1024 && dst + off + 1024 < dend &&
+ data + skb_off + off + 1024 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 1024, 0))
+ return -1;
+ off += 1024;
+ len -= 1024;
+ }
+ if (len >= 512 && dst + off + 512 < dend &&
+ data + skb_off + off + 512 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 512, 0))
+ return -1;
+ off += 512;
+ len -= 512;
+ }
+ if (len >= 256 && dst + off + 256 < dend &&
+ data + skb_off + off + 256 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 256, 0))
+ return -1;
+ off += 256;
+ len -= 256;
+ }
+ if (len >= 128 && dst + off + 128 < dend &&
+ data + skb_off + off + 128 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 128, 0))
+ return -1;
+ off += 128;
+ len -= 128;
+ }
+ if (len >= 64 && dst + off + 64 < dend &&
+ data + skb_off + off + 64 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 64, 0))
+ return -1;
+ off += 64;
+ len -= 64;
+ }
+ if (len >= 32 && dst + off + 32 < dend &&
+ data + skb_off + off + 32 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 32, 0))
+ return -1;
+ off += 32;
+ len -= 32;
+ }
+ if (len >= 16 && dst + off + 16 < dend &&
+ data + skb_off + off + 16 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 16, 0))
+ return -1;
+ off += 16;
+ len -= 16;
+ }
+
+ if (len >= 8 && dst + off + 8 < dend &&
+ data + skb_off + off + 8 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 8, 0))
+ return -1;
+ off += 8;
+ len -= 8;
+ }
+
+ if (len >= 4 && dst + off + 4 < dend &&
+ data + skb_off + off + 4 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 4, 0))
+ return -1;
+ off += 4;
+ len -= 4;
+ }
+
+ if (len >= 2 && dst + off + 2 < dend &&
+ data + skb_off + off + 2 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 2, 0))
+ return -1;
+ off += 2;
+ len -= 2;
+ }
+
+ if (len >= 1 && dst + off + 1 < dend &&
+ data + skb_off + off + 1 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 1, 0))
+ return -1;
+ off += 1;
+ len -= 1;
+ }
+
+ return len == 0 ? 0 : -1;
+}
+
+static inline struct redis_ctx *get_ctx(void)
+{
+ u32 cpu = bpf_get_smp_processor_id();
+
+ if (cpu >= BMC_MAX_CPUS)
+ return NULL;
+ return bpf_map_lookup_elem(&ctxmap, &cpu);
+}
+
+static inline struct redis_bmc_stat *get_stat(void)
+{
+ u32 cpu = bpf_get_smp_processor_id();
+
+ if (cpu >= BMC_MAX_CPUS)
+ return NULL;
+ return bpf_map_lookup_elem(&bmc_stats, &cpu);
+}
+
+static int do_redis_get_handler(struct __sk_buff *skb, struct redis_ctx *ctx)
+{
+ int i;
+ u32 n;
+ int err;
+ char *p;
+ char *data;
+ char *data_end;
+ char buf[5];
+ struct redis_value *val;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return BPF_OK;
+
+ val = bpf_map_lookup_elem(&bmc_storage, &ctx->key);
+ if (val == NULL || val->len == 0 || val->len > sizeof(val->data))
+ return BPF_OK;
+
+ n = val->len;
+
+ i = 0;
+ while (i < 5) {
+ buf[i] = '0' + n % 10;
+ n = n / 10;
+ i++;
+ if (n == 0)
+ break;
+ }
+
+ if (i >= 5)
+ return BPF_OK;
+
+ /* $ LEN \r \n VALUE \r \n */
+ n = 1 + i + 2 + val->len + 2;
+
+ if (n > skb->len)
+ /* extend head space */
+ err = bpf_skb_change_head(skb, n - skb->len, 0);
+ else if (n < skb->len)
+ /* shrink head space */
+ err = bpf_skb_adjust_room(skb, -(skb->len - n), 0, 0);
+
+ if (err)
+ return BPF_DROP;
+
+ data = (char *)(long)skb->data;
+ data_end = (char *)(long)skb->data_end;
+ p = data;
+ /* 3 is '$' and "\r\n"*/
+ if (p + i + 3 > data_end)
+ return BPF_DROP;
+
+ *p++ = '$';
+ while (p < data_end && --i >= 0)
+ *p++ = buf[i];
+ *p++ = '\r';
+ *p++ = '\n';
+
+ n = val->len;
+ if (n == 0 || n > sizeof(val->data) || p + n + 2 > data_end)
+ return BPF_DROP;
+
+ if (bmc_copy_to_skb(skb, p - data, val->data,
+ val->data + sizeof(val->data), n))
+ return BPF_DROP;
+
+ p += n;
+ char end_mark[] = { '\r', '\n'};
+
+ bpf_skb_store_bytes(skb, p - data, end_mark, sizeof(end_mark), 0);
+
+ return BPF_REDIRECT;
+}
+
+static int do_redis_set_handler(struct __sk_buff *skb, struct redis_ctx *ctx)
+{
+ int err;
+ u32 off = 0;
+ u32 value_len;
+ char *data = (char *)(long)skb->data;
+ char *data_end = (char *)(long)skb->data_end;
+
+ if (data + 1 > data_end || data[0] != '$')
+ return BPF_OK;
+ off++;
+ data++;
+
+ value_len = 0;
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+
+ if (data + 2 > data_end || data[0] != '\r' || data[1] != '\n')
+ return BPF_OK;
+ off += 2;
+ data += 2;
+
+ if (data > data_end)
+ return BPF_OK;
+
+ /* format error */
+ if (value_len <= 0 || value_len > sizeof(ctx->value.data) ||
+ value_len >= data_end - data) {
+ return BPF_OK;
+ }
+
+ if (bmc_copy_from_skb(ctx->value.data,
+ ctx->value.data + sizeof(ctx->value.data),
+ skb, off, value_len))
+ return BPF_OK;
+
+ ctx->value.len = value_len;
+
+ if (bpf_map_update_elem(&bmc_storage, &ctx->key, &ctx->value, BPF_ANY)) {
+ bpf_map_delete_elem(&bmc_storage, &ctx->key);
+ return BPF_OK;
+ }
+
+ char reply[] = { '+', 'O', 'K', '\r', '\n'};
+
+ if (skb->len < sizeof(reply))
+ /* extend head space */
+ err = bpf_skb_change_head(skb, sizeof(reply) - skb->len, 0);
+ else
+ /* shrink head space */
+ err = bpf_skb_adjust_room(skb, -(skb->len - sizeof(reply)), 0, 0);
+
+ if (err)
+ return BPF_OK;
+
+ bpf_skb_store_bytes(skb, 0, reply, sizeof(reply), 0);
+
+ return BPF_REDIRECT;
+}
+
+SEC("bmc/redis_get_handler")
+int redis_get_handler(struct __sk_buff *skb)
+{
+ int err;
+ struct redis_bmc_stat *stat;
+ struct redis_ctx *ctx;
+
+ stat = get_stat();
+ if (!stat)
+ return SK_PASS;
+
+ stat->total_get_requests++;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return SK_PASS;
+
+ err = do_redis_get_handler(skb, ctx);
+ if (err == BPF_REDIRECT) {
+ stat->hit_get_requests++;
+ return sock_redirect(skb);
+ }
+
+ if (err == BPF_DROP) {
+ stat->drop_get_requests++;
+ return SK_DROP;
+ }
+
+ return SK_PASS;
+}
+
+SEC("bmc/redis_set_handler")
+int redis_set_handler(struct __sk_buff *skb)
+{
+ int err;
+ struct redis_bmc_stat *stat;
+ struct redis_ctx *ctx;
+
+ stat = get_stat();
+ if (!stat)
+ return SK_PASS;
+
+ stat->total_set_requests++;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return SK_PASS;
+
+ err = do_redis_set_handler(skb, ctx);
+ if (err == BPF_REDIRECT) {
+ stat->hit_set_requests++;
+ return sock_redirect(skb);
+ }
+
+ if (err == BPF_DROP) {
+ stat->drop_set_requests++;
+ return SK_DROP;
+ }
+
+ err = bpf_skb_adjust_room(skb, ctx->offset, 0, 0);
+ if (!err)
+ return SK_PASS;
+
+ stat->drop_set_requests++;
+ return SK_DROP;
+}
+
+static inline int bmc_process(struct __sk_buff *skb)
+{
+ u32 off;
+ int err;
+ u32 key_len;
+ char *data;
+ char *data_end;
+ int expect_get = 0;
+ int is_get = 0;
+ struct redis_ctx *ctx;
+
+ ctx = get_ctx();
+ if (ctx == NULL)
+ return SK_PASS;
+
+ err = bpf_skb_pull_data(skb, skb->len);
+ if (err)
+ return SK_PASS;
+
+ off = 0;
+ data = (char *)(long)skb->data;
+ data_end = (char *)(long)skb->data_end;
+
+ /*
+ * SET message format:
+ * "*3\r\n" // this is an array with 3 elements
+ * "$3\r\n" // the first element is a string with 3 characters
+ * "set\r\n" // the string is "set"
+ * "$5\r\n" // the second element is a string with 5 characters
+ * "key01\r\n" // the string is "key01"
+ * "$5\r\n" // the third element is a string with 5 characters
+ * "val01\r\n" // the string is "valu01"
+ *
+ * GET message format:
+ * "*2\r\n" // this is an array with 3 elements
+ * "$3\r\n" // the first element is a string with 3 characters
+ * "get\r\n" // the string is "get"
+ * "$5\r\n" // the second element is a string with 5 characters
+ * "key01\r\n" // the string is "key01"
+ */
+ if (data + 4 > data_end)
+ return SK_PASS;
+
+ /* Not GET, Not SET */
+ if (data[0] != '*' || (data[1] != '2' && data[1] != '3') ||
+ data[2] != '\r' || data[3] != '\n')
+ return SK_PASS;
+
+ expect_get = (data[1] == '2');
+ off += 4;
+ data += 4;
+
+ if (data + 4 > data_end)
+ return SK_PASS;
+
+ if (data[0] != '$' || data[1] != '3' || data[2] != '\r' ||
+ data[3] != '\n')
+ return SK_PASS;
+
+ off += 4;
+ data += 4;
+
+ if (data + 5 > data_end)
+ return SK_PASS;
+
+ switch (data[0]) {
+ case 'g':
+ is_get = 1;
+ case 's':
+ if (data[1] != 'e' || data[2] != 't' ||
+ data[3] != '\r' || data[4] != '\n')
+ return SK_PASS;
+ break;
+ case 'G':
+ is_get = 1;
+ case 'S':
+ if (data[1] != 'E' || data[2] != 'T' ||
+ data[3] != '\r' || data[4] != '\n')
+ return SK_PASS;
+ break;
+ default:
+ return SK_PASS;
+ }
+ off += 5;
+ data += 5;
+
+ if (expect_get != is_get)
+ return SK_PASS;
+
+ if (data + 1 > data_end || data[0] != '$')
+ return SK_PASS;
+ off++;
+ data++;
+
+ key_len = 0;
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data + 2 > data_end || data[0] != '\r' || data[1] != '\n')
+ return SK_PASS;
+ off += 2;
+ data += 2;
+
+ if (data > data_end)
+ return SK_PASS;
+
+ if (key_len == 0 || key_len > sizeof(ctx->key.data) ||
+ key_len >= data_end - data)
+ return SK_PASS;
+
+ ctx->offset = off + key_len + 2;
+ ctx->key.len = key_len;
+
+ if (bmc_copy_from_skb(ctx->key.data,
+ ctx->key.data + sizeof(ctx->key.data),
+ skb, off, key_len))
+ return SK_PASS;
+
+ if (is_get) {
+ bpf_tail_call(skb, &bmc_jump_table, REDIS_GET_PROG_INDEX);
+ } else {
+ err = bpf_skb_adjust_room(skb, -ctx->offset, 0, 0);
+ if (err)
+ return SK_PASS;
+ bpf_tail_call(skb, &bmc_jump_table, REDIS_SET_PROG_INDEX);
+ }
+ return SK_PASS;
+}
diff --git a/samples/bpf/bmc/tool.c b/samples/bpf/bmc/tool.c
new file mode 100644
index 000000000000..e45be64a2819
--- /dev/null
+++ b/samples/bpf/bmc/tool.c
@@ -0,0 +1,733 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/select.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+
+#include <bpf/bpf.h>
+#include <bpf/libbpf.h>
+
+#include "common.h"
+
+#define DEFAULT_CGROUP_PATH "/sys/fs/cgroup"
+#define DEFAULT_REDIS_PORT 6379
+
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#endif
+
+struct {
+ char *cgroup_path;
+ char *bpf_path;
+ int cgroup_fd;
+ int map_socks_fd;
+ int map_ports_fd;
+ int map_storage_fd;
+ int map_jump_table_fd;
+ int map_stats_fd;
+ int sock_parser_prog_fd;
+ int sock_verdict_prog_fd;
+ int sock_ops_prog_fd;
+ int redis_get_prog_fd;
+ int redis_set_prog_fd;
+ uint16_t listen_port;
+} bmc;
+
+struct bmc_prog_info {
+ const char *sec_name;
+ enum bpf_prog_type prog_type;
+ enum bpf_attach_type attach_type;
+ int *p_prog_fd;
+ int *p_attach_fd;
+ unsigned int attach_flags;
+ const char *pin_path;
+ struct bpf_program *prog;
+};
+
+struct bmc_map_info {
+ const char *map_name;
+ int *p_map_fd;
+ char *pin_path;
+ struct bpf_map *map;
+ bool is_stat_map;
+};
+
+static struct bmc_prog_info prog_infos[] = {
+ {
+ .sec_name = "bmc/sock_parser",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .attach_type = BPF_SK_SKB_STREAM_PARSER,
+ .p_prog_fd = &bmc.sock_parser_prog_fd,
+ .p_attach_fd = &bmc.map_socks_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_parser"
+ },
+ {
+ .sec_name = "bmc/sock_verdict",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .attach_type = BPF_SK_SKB_STREAM_VERDICT,
+ .p_prog_fd = &bmc.sock_verdict_prog_fd,
+ .p_attach_fd = &bmc.map_socks_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_verdict"
+ },
+ {
+ .sec_name = "bmc/sock_ops",
+ .prog_type = BPF_PROG_TYPE_SOCK_OPS,
+ .attach_type = BPF_CGROUP_SOCK_OPS,
+ .p_prog_fd = &bmc.sock_ops_prog_fd,
+ .p_attach_fd = &bmc.cgroup_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_ops"
+ },
+ {
+ .sec_name = "bmc/redis_get_handler",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .p_prog_fd = &bmc.redis_get_prog_fd,
+ .p_attach_fd = NULL,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_redis_get_handler"
+
+ },
+ {
+ .sec_name = "bmc/redis_set_handler",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .p_prog_fd = &bmc.redis_set_prog_fd,
+ .p_attach_fd = NULL,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_redis_set_handler"
+
+ }
+};
+
+static struct bmc_map_info map_infos[] = {
+ {
+ .map_name = "bmc_socks",
+ .p_map_fd = &bmc.map_socks_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_socks"
+ },
+ {
+ .map_name = "bmc_ports",
+ .p_map_fd = &bmc.map_ports_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_ports"
+ },
+ {
+ .map_name = "bmc_storage",
+ .p_map_fd = &bmc.map_storage_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_storage"
+ },
+ {
+ .map_name = "bmc_jump_table",
+ .p_map_fd = &bmc.map_jump_table_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_jump_table"
+ },
+ {
+ .map_name = "bmc_stats",
+ .p_map_fd = &bmc.map_stats_fd,
+ .pin_path = "/sys/fs/bpf/bmc/stats",
+ .is_stat_map = true,
+ },
+};
+
+static int find_type_by_sec_name(const char *sec_name,
+ enum bpf_prog_type *p_prog_type,
+ enum bpf_attach_type *p_attach_type)
+{
+ int i;
+
+ if (sec_name == NULL) {
+ fprintf(stderr, "sec_name is NULL\n");
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ if (!strcmp(prog_infos[i].sec_name, sec_name)) {
+ *p_prog_type = prog_infos[i].prog_type;
+ *p_attach_type = prog_infos[i].attach_type;
+ return 0;
+ }
+ }
+
+ fprintf(stderr, "unknown prog %s\n", sec_name);
+
+ return -1;
+}
+
+static int set_prog_type(struct bpf_object *obj)
+{
+ const char *sec_name;
+ struct bpf_program *prog;
+ enum bpf_prog_type prog_type;
+ enum bpf_attach_type attach_type;
+
+ bpf_object__for_each_program(prog, obj) {
+ sec_name = bpf_program__section_name(prog);
+ if (find_type_by_sec_name(sec_name, &prog_type, &attach_type))
+ return -1;
+ bpf_program__set_type(prog, prog_type);
+ bpf_program__set_expected_attach_type(prog, attach_type);
+ }
+
+ return 0;
+}
+
+static struct bpf_object *load_bpf_file(const char *bpf_file)
+{
+ int err;
+ char err_buf[256];
+ struct bpf_object *obj;
+
+ obj = bpf_object__open(bpf_file);
+ err = libbpf_get_error(obj);
+ if (err) {
+ libbpf_strerror(err, err_buf, sizeof(err_buf));
+ fprintf(stderr, "unable to open bpf file %s : %s\n", bpf_file,
+ err_buf);
+ return NULL;
+ }
+
+ if (set_prog_type(obj)) {
+ bpf_object__close(obj);
+ return NULL;
+ }
+
+ err = bpf_object__load(obj);
+ if (err) {
+ fprintf(stderr, "load bpf object failed\n");
+ bpf_object__close(obj);
+ return NULL;
+ }
+
+ return obj;
+}
+
+static int find_prog(struct bpf_object *obj, const char *sec_name,
+ struct bpf_program **p_prog, int *p_prog_fd)
+{
+ int fd;
+ struct bpf_program *prog;
+
+ prog = bpf_object__find_program_by_title(obj, sec_name);
+ if (!prog) {
+ fprintf(stderr, "failed to find prog %s\n", sec_name);
+ return -1;
+ }
+
+ fd = bpf_program__fd(prog);
+ if (fd < 0) {
+ fprintf(stderr, "failed to get fd of prog %s\n", sec_name);
+ return -1;
+ }
+
+
+ *p_prog = prog;
+ *p_prog_fd = fd;
+
+ return 0;
+}
+
+static void unpin_progs(int n)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ bpf_program__unpin(prog_infos[i].prog, prog_infos[i].pin_path);
+}
+
+static int find_progs(struct bpf_object *obj)
+{
+ int i;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ info = &prog_infos[i];
+
+ if (find_prog(obj, info->sec_name, &info->prog, info->p_prog_fd))
+ goto error_find_prog;
+
+ if (bpf_program__pin(info->prog, info->pin_path))
+ goto error_find_prog;
+ }
+
+ return 0;
+
+error_find_prog:
+ unpin_progs(i);
+ return -1;
+}
+
+static int find_map(struct bpf_object *obj, const char *map_name,
+ struct bpf_map **p_map, int *p_map_fd)
+{
+ int fd;
+ struct bpf_map *map;
+
+ map = bpf_object__find_map_by_name(obj, map_name);
+ if (!map) {
+ fprintf(stderr, "failed to find map %s\n", map_name);
+ return -1;
+ }
+
+ fd = bpf_map__fd(map);
+ if (fd < 0) {
+ fprintf(stderr, "failed to get fd of map %s\n", map_name);
+ return -1;
+ }
+
+
+ *p_map = map;
+ *p_map_fd = fd;
+
+ return 0;
+}
+
+static void unpin_maps(int n)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ bpf_map__unpin(map_infos[i].map, map_infos[i].pin_path);
+}
+
+static int find_maps(struct bpf_object *obj)
+{
+ int i;
+ struct bmc_map_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++) {
+ info = &map_infos[i];
+
+ if (find_map(obj, info->map_name, &info->map, info->p_map_fd))
+ goto error_find_map;
+
+ if (bpf_map__pin(info->map, info->pin_path)) {
+ fprintf(stderr, "failed to pin map %s to path %s\n",
+ info->map_name, info->pin_path);
+ goto error_find_map;
+ }
+ }
+
+ return 0;
+
+error_find_map:
+ unpin_maps(i);
+ return -1;
+}
+
+static void detach_progs(int n)
+{
+ int i;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < n; i++) {
+ info = &prog_infos[i];
+ bpf_prog_detach(*info->p_prog_fd, info->attach_type);
+ }
+}
+
+static int attach_progs(struct bpf_object *obj)
+{
+ int i;
+ int prog_fd;
+ int attach_fd;
+ unsigned int flags;
+ enum bpf_attach_type type;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ info = &prog_infos[i];
+ if (!info->p_attach_fd)
+ continue;
+ prog_fd = *info->p_prog_fd;
+ attach_fd = *info->p_attach_fd;
+ type = info->attach_type;
+ flags = info->attach_flags;
+
+ if (bpf_prog_attach(prog_fd, attach_fd, type, flags)) {
+ fprintf(stderr, "attach prog %s failed!\n",
+ info->sec_name);
+ goto error_attach_prog;
+ }
+ }
+
+ return 0;
+
+error_attach_prog:
+ detach_progs(i);
+
+ return -1;
+}
+
+static int add_bmc_port(void)
+{
+ int ret;
+ int map_fd = bmc.map_ports_fd;
+ uint16_t port = htons(bmc.listen_port);
+ uint32_t key = (uint32_t)port;
+ uint32_t value = 1;
+
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret)
+ fprintf(stderr, "failed to add port %u\n", port);
+
+ return ret;
+}
+
+static int add_tail_call(void)
+{
+ int ret;
+ int map_fd = bmc.map_jump_table_fd;
+ __u32 key;
+ __u32 value;
+
+ key = REDIS_GET_PROG_INDEX;
+ value = bmc.redis_get_prog_fd;
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret) {
+ fprintf(stderr, "failed to add redis get tail call prog\n");
+ return -1;
+ }
+
+ key = REDIS_SET_PROG_INDEX;
+ value = bmc.redis_set_prog_fd;
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret) {
+ fprintf(stderr, "failed to add redis set tail call prog\n");
+ key = REDIS_GET_PROG_INDEX;
+ bpf_map_delete_elem(map_fd, &key);
+ }
+
+ return ret;
+}
+
+static int setup_bpf(void)
+{
+ struct bpf_object *obj;
+
+ bmc.cgroup_fd = open(bmc.cgroup_path, O_DIRECTORY, O_RDONLY);
+ if (bmc.cgroup_fd < 0) {
+ fprintf(stderr, "failed to open cgroup %s: %s\n",
+ bmc.cgroup_path, strerror(errno));
+ return -1;
+ }
+
+ obj = load_bpf_file(bmc.bpf_path);
+ if (!obj)
+ goto error_load_object;
+
+ if (find_progs(obj))
+ goto error_load_object;
+
+ if (find_maps(obj))
+ goto error_find_maps;
+
+ if (attach_progs(obj))
+ goto error_attach_progs;
+
+ if (add_bmc_port())
+ goto error_add_port;
+
+ if (add_tail_call())
+ goto error_attach_progs;
+
+ return 0;
+
+error_add_port:
+ detach_progs(ARRAY_SIZE(prog_infos));
+error_attach_progs:
+ unpin_maps(ARRAY_SIZE(map_infos));
+error_find_maps:
+ unpin_progs(ARRAY_SIZE(prog_infos));
+error_load_object:
+ bpf_object__close(obj);
+ close(bmc.cgroup_fd);
+ return -1;
+}
+
+static int parse_load_args(int argc, char *argv[])
+{
+ int opt;
+ int port;
+
+ bmc.cgroup_path = DEFAULT_CGROUP_PATH;
+ bmc.listen_port = DEFAULT_REDIS_PORT;
+
+ while ((opt = getopt(argc, argv, "c:p:")) != -1) {
+ switch (opt) {
+ case 'c':
+ bmc.cgroup_path = optarg;
+ break;
+ case 'p':
+ port = atoi(optarg);
+ if (port <= 0 || port >= USHRT_MAX) {
+ fprintf(stderr, "invalid port: %s\n", optarg);
+ return -1;
+ }
+ bmc.listen_port = port;
+ break;
+ default:
+ fprintf(stderr, "unknown option %c\n", opt);
+ return -1;
+ }
+ }
+
+ if (optind >= argc) {
+ fprintf(stderr, "no bpf prog file found\n");
+ return -1;
+ }
+
+ bmc.bpf_path = argv[optind];
+
+ printf("bpf file: %s\n", bmc.bpf_path);
+ printf("cgroup path: %s\n", bmc.cgroup_path);
+ printf("listen port: %d\n", bmc.listen_port);
+
+ return 0;
+}
+
+struct cmd {
+ const char *name;
+ int (*func)(int argc, char *argv[]);
+};
+
+static int do_prog(int argc, char *argv[]);
+static int do_stat(int argc, char *argv[]);
+
+static int do_prog_load(int argc, char *argv[]);
+static int do_prog_unload(int argc, char *argv[]);
+
+static struct cmd main_cmds[] = {
+ { "prog", do_prog },
+ { "stat", do_stat },
+};
+
+static struct cmd prog_cmds[] = {
+ { "load", do_prog_load },
+ { "unload", do_prog_unload },
+};
+
+static char *elf_name;
+
+static int dispatch_cmd(struct cmd cmds[], int ncmd, int argc,
+ char *argv[], void (*help)(void))
+{
+ int i;
+ int ret;
+
+ if (argc <= 0) {
+ help();
+ return -1;
+ }
+
+ for (i = 0; i < ncmd; i++) {
+ if (!strcmp(argv[0], cmds[i].name)) {
+ ret = cmds[i].func(argc - 1, argv + 1);
+ if (ret == -2) {
+ help();
+ ret = -1;
+ }
+ return ret;
+ }
+ }
+
+ help();
+
+ return -1;
+}
+
+static int do_prog_load(int argc, char *argv[])
+{
+ if (parse_load_args(argc + 1, argv - 1) < 0)
+ return -2;
+
+ if (setup_bpf())
+ return -1;
+
+ return 0;
+}
+
+static int do_prog_unload(int argc, char *argv[])
+{
+ int i;
+ int prog_fd;
+ int cgroup_fd;
+ char *cgroup_path = DEFAULT_CGROUP_PATH;
+
+ if (argc > 1)
+ cgroup_path = argv[0];
+
+ cgroup_fd = open(cgroup_path, O_DIRECTORY, O_RDONLY);
+ if (cgroup_fd < 0) {
+ fprintf(stderr, "failed to open cgroup path: %s\n",
+ cgroup_path);
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ if (prog_infos[i].attach_type == BPF_CGROUP_SOCK_OPS) {
+ prog_fd = bpf_obj_get(prog_infos[i].pin_path);
+ if (prog_fd >= 0)
+ bpf_prog_detach2(prog_fd, cgroup_fd,
+ BPF_CGROUP_SOCK_OPS);
+ }
+ unlink(prog_infos[i].pin_path);
+ }
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++)
+ unlink(map_infos[i].pin_path);
+
+ return 0;
+}
+
+static void do_prog_help(void)
+{
+ fprintf(stderr,
+ "Usage: %s prog load [-c CGROUP_PATH] [-p LISTEN_PORT] {BPF_FILE}\n"
+ " %s prog unload [CGROUP_PATH]\n",
+ elf_name, elf_name);
+}
+
+static int do_prog(int argc, char *argv[])
+{
+ return dispatch_cmd(prog_cmds, ARRAY_SIZE(prog_cmds),
+ argc, argv, do_prog_help);
+}
+
+static int do_stat(int argc, char *argv[])
+{
+ int i;
+ int fd;
+ int err;
+ int ncpu;
+ bool found = false;
+ struct bmc_map_info *info;
+ struct bpf_map_info map = {};
+ struct redis_bmc_stat stat = {};
+ __u32 len = sizeof(map);
+
+ ncpu = sysconf(_SC_NPROCESSORS_ONLN);
+ if (ncpu < 0) {
+ fprintf(stderr, "sysconf failed: %s\n", strerror(errno));
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++) {
+ info = &map_infos[i];
+ if (info->is_stat_map) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ fprintf(stderr, "no stats map found\n");
+ return -1;
+ }
+
+ fd = bpf_obj_get(info->pin_path);
+ if (fd < 0) {
+ fprintf(stderr, "failed to open %s\n",
+ info->pin_path);
+ return -1;
+ }
+
+ err = bpf_obj_get_info_by_fd(fd, &map, &len);
+ if (err) {
+ fprintf(stderr, "failed to get map info\n");
+ goto error;
+ }
+
+ if (map.type != BPF_MAP_TYPE_ARRAY) {
+ fprintf(stderr, "unexpected map type: %d\n", map.type);
+ goto error;
+ }
+
+ if (map.key_size != sizeof(__u32)) {
+ fprintf(stderr, "unexpected map key_size: %u\n", map.key_size);
+ goto error;
+ }
+
+ if (map.value_size != sizeof(struct redis_bmc_stat)) {
+ fprintf(stderr, "unexpected map key_size: %u\n", map.key_size);
+ goto error;
+ }
+
+ for (int i = 0; i < ncpu; i++) {
+ __u32 key = i;
+ struct redis_bmc_stat value;
+
+ err = bpf_map_lookup_elem(fd, &key, &value);
+ if (err) {
+ fprintf(stderr, "lookup cpu stat failed, cpu=%u\n", i);
+ goto error;
+ }
+ stat.total_get_requests += value.total_get_requests;
+ stat.hit_get_requests += value.hit_get_requests;
+ stat.drop_get_requests += value.drop_get_requests;
+ stat.total_set_requests += value.total_set_requests;
+ stat.hit_set_requests += value.hit_set_requests;
+ stat.drop_set_requests += value.drop_set_requests;
+ }
+
+ printf("Total GET Requests: %llu\n", stat.total_get_requests);
+ printf("Hit GET Requests: %llu (%.2f%%)\n", stat.hit_get_requests,
+ stat.total_get_requests == 0 ? 0 :
+ (double)stat.hit_get_requests /
+ (double)stat.total_get_requests *
+ 100);
+ printf("Dropped GET Requests: %llu (%.2lf%%)\n", stat.drop_get_requests,
+ stat.total_get_requests == 0 ? 0 :
+ (double)stat.drop_get_requests /
+ (double)stat.total_get_requests *
+ 100);
+
+ printf("Total SET Requests: %llu\n", stat.total_set_requests);
+ printf("Hit SET Requests: %llu (%.2f%%)\n", stat.hit_set_requests,
+ stat.total_set_requests == 0 ? 0 :
+ (double)stat.hit_set_requests /
+ (double)stat.total_set_requests *
+ 100);
+ printf("Dropped SET Requests: %llu (%.2lf%%)\n", stat.drop_set_requests,
+ stat.total_set_requests == 0 ? 0 :
+ (double)stat.drop_set_requests /
+ (double)stat.total_set_requests *
+ 100);
+
+ close(fd);
+
+ return 0;
+
+error:
+ close(fd);
+ return -1;
+}
+
+static void do_main_help(void)
+{
+ fprintf(stderr,
+ "Usage: %s OBJECT { COMMAND | help }\n"
+ " OBJECT := { prog | stat }\n",
+ elf_name);
+}
+
+int main(int argc, char *argv[])
+{
+ elf_name = argv[0];
+
+ return dispatch_cmd(main_cmds, ARRAY_SIZE(main_cmds),
+ argc - 1, argv + 1, do_main_help);
+}
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS 1/2] mm/slub: add missing TID updates on slab deactivation
by Yongqiang Liu 12 Aug '22
by Yongqiang Liu 12 Aug '22
12 Aug '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-4.19.252
commit e2b2f0e2e34d71ae6c2a1114fd3c525930e84bc7
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5LJH1
CVE: NA
--------------------------------
commit eeaa345e128515135ccb864c04482180c08e3259 upstream.
The fastpath in slab_alloc_node() assumes that c->slab is stable as long as
the TID stays the same. However, two places in __slab_alloc() currently
don't update the TID when deactivating the CPU slab.
If multiple operations race the right way, this could lead to an object
getting lost; or, in an even more unlikely situation, it could even lead to
an object being freed onto the wrong slab's freelist, messing up the
`inuse` counter and eventually causing a page to be freed to the page
allocator while it still contains slab objects.
(I haven't actually tested these cases though, this is just based on
looking at the code. Writing testcases for this stuff seems like it'd be
a pain...)
The race leading to state inconsistency is (all operations on the same CPU
and kmem_cache):
- task A: begin do_slab_free():
- read TID
- read pcpu freelist (==NULL)
- check `slab == c->slab` (true)
- [PREEMPT A->B]
- task B: begin slab_alloc_node():
- fastpath fails (`c->freelist` is NULL)
- enter __slab_alloc()
- slub_get_cpu_ptr() (disables preemption)
- enter ___slab_alloc()
- take local_lock_irqsave()
- read c->freelist as NULL
- get_freelist() returns NULL
- write `c->slab = NULL`
- drop local_unlock_irqrestore()
- goto new_slab
- slub_percpu_partial() is NULL
- get_partial() returns NULL
- slub_put_cpu_ptr() (enables preemption)
- [PREEMPT B->A]
- task A: finish do_slab_free():
- this_cpu_cmpxchg_double() succeeds()
- [CORRUPT STATE: c->slab==NULL, c->freelist!=NULL]
From there, the object on c->freelist will get lost if task B is allowed to
continue from here: It will proceed to the retry_load_slab label,
set c->slab, then jump to load_freelist, which clobbers c->freelist.
But if we instead continue as follows, we get worse corruption:
- task A: run __slab_free() on object from other struct slab:
- CPU_PARTIAL_FREE case (slab was on no list, is now on pcpu partial)
- task A: run slab_alloc_node() with NUMA node constraint:
- fastpath fails (c->slab is NULL)
- call __slab_alloc()
- slub_get_cpu_ptr() (disables preemption)
- enter ___slab_alloc()
- c->slab is NULL: goto new_slab
- slub_percpu_partial() is non-NULL
- set c->slab to slub_percpu_partial(c)
- [CORRUPT STATE: c->slab points to slab-1, c->freelist has objects
from slab-2]
- goto redo
- node_match() fails
- goto deactivate_slab
- existing c->freelist is passed into deactivate_slab()
- inuse count of slab-1 is decremented to account for object from
slab-2
At this point, the inuse count of slab-1 is 1 lower than it should be.
This means that if we free all allocated objects in slab-1 except for one,
SLUB will think that slab-1 is completely unused, and may free its page,
leading to use-after-free.
Fixes: c17dda40a6a4e ("slub: Separate out kmem_cache_cpu processing from deactivate_slab")
Fixes: 03e404af26dc2 ("slub: fast release on full slab")
Cc: stable(a)vger.kernel.org
Signed-off-by: Jann Horn <jannh(a)google.com>
Acked-by: Christoph Lameter <cl(a)linux.com>
Acked-by: David Rientjes <rientjes(a)google.com>
Reviewed-by: Muchun Song <songmuchun(a)bytedance.com>
Tested-by: Hyeonggon Yoo <42.hyeyoo(a)gmail.com>
Signed-off-by: Vlastimil Babka <vbabka(a)suse.cz>
Link: https://lore.kernel.org/r/20220608182205.2945720-1-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/slub.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/slub.c b/mm/slub.c
index 7b5630ca9274..4bc29bcd0d5d 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2168,6 +2168,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page,
c->page = NULL;
c->freelist = NULL;
+ c->tid = next_tid(c->tid);
}
/*
@@ -2301,8 +2302,6 @@ static inline void flush_slab(struct kmem_cache *s, struct kmem_cache_cpu *c)
{
stat(s, CPUSLAB_FLUSH);
deactivate_slab(s, c->page, c->freelist, c);
-
- c->tid = next_tid(c->tid);
}
/*
@@ -2589,6 +2588,7 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
if (!freelist) {
c->page = NULL;
+ c->tid = next_tid(c->tid);
stat(s, DEACTIVATE_BYPASS);
goto new_slab;
}
--
2.25.1
1
1
您好!
Kernel SIG 邀请您参加 2022-08-12 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.英特尔Sapphire Rapids平台PMU新特性介绍
2.基于BPF内核缓存的Redis加速特性评审
3.BPF CO-RE(Compile Once-Run Everywhere)特性评审
会议链接:https://us06web.zoom.us/j/89836175849?pwd=ODlUNVhldkdndnN0b21VRUIxNkg0dz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-12 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.英特尔Sapphire Rapids平台PMU新特性介绍
2.基于BPF内核缓存的Redis加速特性评审
3.BPF CO-RE(Compile Once-Run Everywhere)特性评审
You can join the meeting at https://us06web.zoom.us/j/89836175849?pwd=ODlUNVhldkdndnN0b21VRUIxNkg0dz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

10 Aug '22
From: Juergen Gross <jgross(a)suse.com>
stable inclusion
from stable-v5.10.132
commit 136d7987fcfdeca73ee3c6a29e48f99fdd0f4d87
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5JTYM
CVE: CVE-2022-36123
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 38fa5479b41376dc9d7f57e71c83514285a25ca0 ]
The .brk section has the same properties as .bss: it is an alloc-only
section and should be cleared before being used.
Not doing so is especially a problem for Xen PV guests, as the
hypervisor will validate page tables (check for writable page tables
and hypervisor private bits) before accepting them to be used.
Make sure .brk is initially zero by letting clear_bss() clear the brk
area, too.
Signed-off-by: Juergen Gross <jgross(a)suse.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Link: https://lore.kernel.org/r/20220630071441.28576-3-jgross@suse.com
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: GONG, Ruiqi <gongruiqi1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/x86/kernel/head64.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 05e117137b45..efe13ab366f4 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -419,6 +419,8 @@ static void __init clear_bss(void)
{
memset(__bss_start, 0,
(unsigned long) __bss_stop - (unsigned long) __bss_start);
+ memset(__brk_base, 0,
+ (unsigned long) __brk_limit - (unsigned long) __brk_base);
}
static unsigned long get_cmd_line_ptr(void)
--
2.20.1
1
0

[PATCH openEuler-5.10 01/15] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
by Zheng Zengkai 09 Aug '22
by Zheng Zengkai 09 Aug '22
09 Aug '22
From: Qi Liu <liuqi115(a)huawei.com>
mainline inclusion
from mainline-v5.17-rc1
commit 8404b0fbc7fb
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5AZ87
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------------------------------------------------
PCIe PMU Root Complex Integrated End Point(RCiEP) device is supported
to sample bandwidth, latency, buffer occupation etc.
Each PMU RCiEP device monitors multiple Root Ports, and each RCiEP is
registered as a PMU in /sys/bus/event_source/devices, so users can
select target PMU, and use filter to do further sets.
Filtering options contains:
event - select the event.
port - select target Root Ports. Information of Root Ports are
shown under sysfs.
bdf - select requester_id of target EP device.
trig_len - set trigger condition for starting event statistics.
trig_mode - set trigger mode. 0 means starting to statistic when bigger
than trigger condition, and 1 means smaller.
thr_len - set threshold for statistics.
thr_mode - set threshold mode. 0 means count when bigger than threshold,
and 1 means smaller.
Acked-by: Krzysztof Wilczyński <kw(a)linux.com>
Reviewed-by: John Garry <john.garry(a)huawei.com>
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Reviewed-by: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
Link: https://lore.kernel.org/r/20211202080633.2919-3-liuqi115@huawei.com
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Wangming Shao <shaowangming(a)h-partners.com>
Reviewed-by: Junhao He <hejunhao3(a)huawei.com>
Reviewed-by: Yang Jihong <yangjihong1(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
MAINTAINERS | 2 +
drivers/perf/hisilicon/Kconfig | 9 +
drivers/perf/hisilicon/Makefile | 2 +
drivers/perf/hisilicon/hisi_pcie_pmu.c | 951 +++++++++++++++++++++++++
include/linux/cpuhotplug.h | 3 +
5 files changed, 967 insertions(+)
create mode 100644 drivers/perf/hisilicon/hisi_pcie_pmu.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 466b1c599848..9908e5442110 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7976,8 +7976,10 @@ F: Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml
HISILICON PMU DRIVER
M: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
+M: Qi Liu <liuqi115(a)huawei.com>
S: Supported
W: http://www.hisilicon.com
+F: Documentation/admin-guide/perf/hisi-pcie-pmu.rst
F: Documentation/admin-guide/perf/hisi-pmu.rst
F: drivers/perf/hisilicon
diff --git a/drivers/perf/hisilicon/Kconfig b/drivers/perf/hisilicon/Kconfig
index c5d1b7019fff..5546218b5598 100644
--- a/drivers/perf/hisilicon/Kconfig
+++ b/drivers/perf/hisilicon/Kconfig
@@ -5,3 +5,12 @@ config HISI_PMU
help
Support for HiSilicon SoC L3 Cache performance monitor, Hydra Home
Agent performance monitor and DDR Controller performance monitor.
+
+config HISI_PCIE_PMU
+ tristate "HiSilicon PCIE PERF PMU"
+ depends on PCI && ARM64
+ help
+ Provide support for HiSilicon PCIe performance monitoring unit (PMU)
+ RCiEP devices.
+ Adds the PCIe PMU into perf events system for monitoring latency,
+ bandwidth etc.
diff --git a/drivers/perf/hisilicon/Makefile b/drivers/perf/hisilicon/Makefile
index 22e384cdfd53..ad0e8110f373 100644
--- a/drivers/perf/hisilicon/Makefile
+++ b/drivers/perf/hisilicon/Makefile
@@ -4,3 +4,5 @@ obj-$(CONFIG_HISI_PMU) += hisi_uncore_pmu.o hisi_uncore_l3c_pmu.o \
hisi_uncore_pa_pmu.o \
hisi_uncore_l3t_pmu.o \
hisi_uncore_lpddrc_pmu.o
+
+obj-$(CONFIG_HISI_PCIE_PMU) += hisi_pcie_pmu.o
diff --git a/drivers/perf/hisilicon/hisi_pcie_pmu.c b/drivers/perf/hisilicon/hisi_pcie_pmu.c
new file mode 100644
index 000000000000..2f18838754ec
--- /dev/null
+++ b/drivers/perf/hisilicon/hisi_pcie_pmu.c
@@ -0,0 +1,951 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * This driver adds support for PCIe PMU RCiEP device. Related
+ * perf events are bandwidth, latency etc.
+ *
+ * Copyright (C) 2021 HiSilicon Limited
+ * Author: Qi Liu <liuqi115(a)huawei.com>
+ */
+#include <linux/bitfield.h>
+#include <linux/bitmap.h>
+#include <linux/bug.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/perf_event.h>
+
+#define DRV_NAME "hisi_pcie_pmu"
+/* Define registers */
+#define HISI_PCIE_GLOBAL_CTRL 0x00
+#define HISI_PCIE_EVENT_CTRL 0x010
+#define HISI_PCIE_CNT 0x090
+#define HISI_PCIE_EXT_CNT 0x110
+#define HISI_PCIE_INT_STAT 0x150
+#define HISI_PCIE_INT_MASK 0x154
+#define HISI_PCIE_REG_BDF 0xfe0
+#define HISI_PCIE_REG_VERSION 0xfe4
+#define HISI_PCIE_REG_INFO 0xfe8
+
+/* Define command in HISI_PCIE_GLOBAL_CTRL */
+#define HISI_PCIE_GLOBAL_EN 0x01
+#define HISI_PCIE_GLOBAL_NONE 0
+
+/* Define command in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_EN BIT_ULL(20)
+#define HISI_PCIE_RESET_CNT BIT_ULL(22)
+#define HISI_PCIE_INIT_SET BIT_ULL(34)
+#define HISI_PCIE_THR_EN BIT_ULL(26)
+#define HISI_PCIE_TARGET_EN BIT_ULL(32)
+#define HISI_PCIE_TRIG_EN BIT_ULL(52)
+
+/* Define offsets in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_M GENMASK_ULL(15, 0)
+#define HISI_PCIE_THR_MODE_M GENMASK_ULL(27, 27)
+#define HISI_PCIE_THR_M GENMASK_ULL(31, 28)
+#define HISI_PCIE_TARGET_M GENMASK_ULL(52, 36)
+#define HISI_PCIE_TRIG_MODE_M GENMASK_ULL(53, 53)
+#define HISI_PCIE_TRIG_M GENMASK_ULL(59, 56)
+
+#define HISI_PCIE_MAX_COUNTERS 8
+#define HISI_PCIE_REG_STEP 8
+#define HISI_PCIE_THR_MAX_VAL 10
+#define HISI_PCIE_TRIG_MAX_VAL 10
+#define HISI_PCIE_MAX_PERIOD (GENMASK_ULL(63, 0))
+#define HISI_PCIE_INIT_VAL BIT_ULL(63)
+
+struct hisi_pcie_pmu {
+ struct perf_event *hw_events[HISI_PCIE_MAX_COUNTERS];
+ struct hlist_node node;
+ struct pci_dev *pdev;
+ struct pmu pmu;
+ void __iomem *base;
+ int irq;
+ u32 identifier;
+ /* Minimum and maximum BDF of root ports monitored by PMU */
+ u16 bdf_min;
+ u16 bdf_max;
+ int on_cpu;
+};
+
+struct hisi_pcie_reg_pair {
+ u16 lo;
+ u16 hi;
+};
+
+#define to_pcie_pmu(p) (container_of((p), struct hisi_pcie_pmu, pmu))
+#define GET_PCI_DEVFN(bdf) ((bdf) & 0xff)
+
+#define HISI_PCIE_PMU_FILTER_ATTR(_name, _config, _hi, _lo) \
+ static u64 hisi_pcie_get_##_name(struct perf_event *event) \
+ { \
+ return FIELD_GET(GENMASK(_hi, _lo), event->attr._config); \
+ } \
+
+HISI_PCIE_PMU_FILTER_ATTR(event, config, 16, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_len, config1, 3, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_mode, config1, 4, 4);
+HISI_PCIE_PMU_FILTER_ATTR(trig_len, config1, 8, 5);
+HISI_PCIE_PMU_FILTER_ATTR(trig_mode, config1, 9, 9);
+HISI_PCIE_PMU_FILTER_ATTR(port, config2, 15, 0);
+HISI_PCIE_PMU_FILTER_ATTR(bdf, config2, 31, 16);
+
+static ssize_t hisi_pcie_format_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct dev_ext_attribute *eattr;
+
+ eattr = container_of(attr, struct dev_ext_attribute, attr);
+
+ return sysfs_emit(buf, "%s\n", (char *)eattr->var);
+}
+
+static ssize_t hisi_pcie_event_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct perf_pmu_events_attr *pmu_attr =
+ container_of(attr, struct perf_pmu_events_attr, attr);
+
+ return sysfs_emit(buf, "config=0x%llx\n", pmu_attr->id);
+}
+
+#define HISI_PCIE_PMU_FORMAT_ATTR(_name, _format) \
+ (&((struct dev_ext_attribute[]){ \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_format_sysfs_show, \
+ NULL), \
+ .var = (void *)_format } \
+ })[0].attr.attr)
+
+#define HISI_PCIE_PMU_EVENT_ATTR(_name, _id) \
+ (&((struct perf_pmu_events_attr[]) { \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_event_sysfs_show, NULL), \
+ .id = _id, } \
+ })[0].attr.attr)
+
+static ssize_t cpumask_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return cpumap_print_to_pagebuf(true, buf, cpumask_of(pcie_pmu->on_cpu));
+}
+static DEVICE_ATTR_RO(cpumask);
+
+static ssize_t identifier_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#x\n", pcie_pmu->identifier);
+}
+static DEVICE_ATTR_RO(identifier);
+
+static ssize_t bus_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#04x\n", PCI_BUS_NUM(pcie_pmu->bdf_min));
+}
+static DEVICE_ATTR_RO(bus);
+
+static struct hisi_pcie_reg_pair
+hisi_pcie_parse_reg_value(struct hisi_pcie_pmu *pcie_pmu, u32 reg_off)
+{
+ u32 val = readl_relaxed(pcie_pmu->base + reg_off);
+ struct hisi_pcie_reg_pair regs = {
+ .lo = val,
+ .hi = val >> 16,
+ };
+
+ return regs;
+}
+
+/*
+ * Hardware counter and ext_counter work together for bandwidth, latency, bus
+ * utilization and buffer occupancy events. For example, RX memory write latency
+ * events(index = 0x0010), counter counts total delay cycles and ext_counter
+ * counts RX memory write PCIe packets number.
+ *
+ * As we don't want PMU driver to process these two data, "delay cycles" can
+ * be treated as an independent event(index = 0x0010), "RX memory write packets
+ * number" as another(index = 0x10010). BIT 16 is used to distinguish and 0-15
+ * bits are "real" event index, which can be used to set HISI_PCIE_EVENT_CTRL.
+ */
+#define EXT_COUNTER_IS_USED(idx) ((idx) & BIT(16))
+
+static u32 hisi_pcie_get_real_event(struct perf_event *event)
+{
+ return hisi_pcie_get_event(event) & GENMASK(15, 0);
+}
+
+static u32 hisi_pcie_pmu_get_offset(u32 offset, u32 idx)
+{
+ return offset + HISI_PCIE_REG_STEP * idx;
+}
+
+static u32 hisi_pcie_pmu_readl(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset,
+ u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readl_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writel(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u32 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writel_relaxed(val, pcie_pmu->base + offset);
+}
+
+static u64 hisi_pcie_pmu_readq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readq_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writeq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u64 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writeq_relaxed(val, pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_config_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ u64 reg = HISI_PCIE_INIT_SET;
+ u64 port, trig_len, thr_len;
+
+ /* Config HISI_PCIE_EVENT_CTRL according to event. */
+ reg |= FIELD_PREP(HISI_PCIE_EVENT_M, hisi_pcie_get_real_event(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to root port or EP device. */
+ port = hisi_pcie_get_port(event);
+ if (port)
+ reg |= FIELD_PREP(HISI_PCIE_TARGET_M, port);
+ else
+ reg |= HISI_PCIE_TARGET_EN |
+ FIELD_PREP(HISI_PCIE_TARGET_M, hisi_pcie_get_bdf(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to trigger condition. */
+ trig_len = hisi_pcie_get_trig_len(event);
+ if (trig_len) {
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_M, trig_len);
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_MODE_M, hisi_pcie_get_trig_mode(event));
+ reg |= HISI_PCIE_TRIG_EN;
+ }
+
+ /* Config HISI_PCIE_EVENT_CTRL according to threshold condition. */
+ thr_len = hisi_pcie_get_thr_len(event);
+ if (thr_len) {
+ reg |= FIELD_PREP(HISI_PCIE_THR_M, thr_len);
+ reg |= FIELD_PREP(HISI_PCIE_THR_MODE_M, hisi_pcie_get_thr_mode(event));
+ reg |= HISI_PCIE_THR_EN;
+ }
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, reg);
+}
+
+static void hisi_pcie_pmu_clear_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, HISI_PCIE_INIT_SET);
+}
+
+static bool hisi_pcie_pmu_valid_requester_id(struct hisi_pcie_pmu *pcie_pmu, u32 bdf)
+{
+ struct pci_dev *root_port, *pdev;
+ u16 rp_bdf;
+
+ pdev = pci_get_domain_bus_and_slot(pci_domain_nr(pcie_pmu->pdev->bus), PCI_BUS_NUM(bdf),
+ GET_PCI_DEVFN(bdf));
+ if (!pdev)
+ return false;
+
+ root_port = pcie_find_root_port(pdev);
+ if (!root_port) {
+ pci_dev_put(pdev);
+ return false;
+ }
+
+ pci_dev_put(pdev);
+ rp_bdf = pci_dev_id(root_port);
+ return rp_bdf >= pcie_pmu->bdf_min && rp_bdf <= pcie_pmu->bdf_max;
+}
+
+static bool hisi_pcie_pmu_valid_filter(struct perf_event *event,
+ struct hisi_pcie_pmu *pcie_pmu)
+{
+ u32 requester_id = hisi_pcie_get_bdf(event);
+
+ if (hisi_pcie_get_thr_len(event) > HISI_PCIE_THR_MAX_VAL)
+ return false;
+
+ if (hisi_pcie_get_trig_len(event) > HISI_PCIE_TRIG_MAX_VAL)
+ return false;
+
+ if (requester_id) {
+ if (!hisi_pcie_pmu_valid_requester_id(pcie_pmu, requester_id))
+ return false;
+ }
+
+ return true;
+}
+
+static bool hisi_pcie_pmu_cmp_event(struct perf_event *target,
+ struct perf_event *event)
+{
+ return hisi_pcie_get_real_event(target) == hisi_pcie_get_real_event(event);
+}
+
+static bool hisi_pcie_pmu_validate_event_group(struct perf_event *event)
+{
+ struct perf_event *sibling, *leader = event->group_leader;
+ struct perf_event *event_group[HISI_PCIE_MAX_COUNTERS];
+ int counters = 1;
+ int num;
+
+ event_group[0] = leader;
+ if (!is_software_event(leader)) {
+ if (leader->pmu != event->pmu)
+ return false;
+
+ if (leader != event && !hisi_pcie_pmu_cmp_event(leader, event))
+ event_group[counters++] = event;
+ }
+
+ for_each_sibling_event(sibling, event->group_leader) {
+ if (is_software_event(sibling))
+ continue;
+
+ if (sibling->pmu != event->pmu)
+ return false;
+
+ for (num = 0; num < counters; num++) {
+ if (hisi_pcie_pmu_cmp_event(event_group[num], sibling))
+ break;
+ }
+
+ if (num == counters)
+ event_group[counters++] = sibling;
+ }
+
+ return counters <= HISI_PCIE_MAX_COUNTERS;
+}
+
+static int hisi_pcie_pmu_event_init(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ event->cpu = pcie_pmu->on_cpu;
+
+ if (EXT_COUNTER_IS_USED(hisi_pcie_get_event(event)))
+ hwc->event_base = HISI_PCIE_EXT_CNT;
+ else
+ hwc->event_base = HISI_PCIE_CNT;
+
+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
+ /* Sampling is not supported. */
+ if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
+ return -EOPNOTSUPP;
+
+ if (!hisi_pcie_pmu_valid_filter(event, pcie_pmu))
+ return -EINVAL;
+
+ if (!hisi_pcie_pmu_validate_event_group(event))
+ return -EINVAL;
+
+ return 0;
+}
+
+static u64 hisi_pcie_pmu_read_counter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ u32 idx = event->hw.idx;
+
+ return hisi_pcie_pmu_readq(pcie_pmu, event->hw.event_base, idx);
+}
+
+static int hisi_pcie_pmu_find_related_event(struct hisi_pcie_pmu *pcie_pmu,
+ struct perf_event *event)
+{
+ struct perf_event *sibling;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ sibling = pcie_pmu->hw_events[idx];
+ if (!sibling)
+ continue;
+
+ if (!hisi_pcie_pmu_cmp_event(sibling, event))
+ continue;
+
+ /* Related events must be used in group */
+ if (sibling->group_leader == event->group_leader)
+ return idx;
+ else
+ return -EINVAL;
+ }
+
+ return idx;
+}
+
+static int hisi_pcie_pmu_get_event_idx(struct hisi_pcie_pmu *pcie_pmu)
+{
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ if (!pcie_pmu->hw_events[idx])
+ return idx;
+ }
+
+ return -EINVAL;
+}
+
+static void hisi_pcie_pmu_event_update(struct perf_event *event)
+{
+ struct hw_perf_event *hwc = &event->hw;
+ u64 new_cnt, prev_cnt, delta;
+
+ do {
+ prev_cnt = local64_read(&hwc->prev_count);
+ new_cnt = hisi_pcie_pmu_read_counter(event);
+ } while (local64_cmpxchg(&hwc->prev_count, prev_cnt,
+ new_cnt) != prev_cnt);
+
+ delta = (new_cnt - prev_cnt) & HISI_PCIE_MAX_PERIOD;
+ local64_add(delta, &event->count);
+}
+
+static void hisi_pcie_pmu_read(struct perf_event *event)
+{
+ hisi_pcie_pmu_event_update(event);
+}
+
+static void hisi_pcie_pmu_set_period(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+
+ local64_set(&hwc->prev_count, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_CNT, idx, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EXT_CNT, idx, HISI_PCIE_INIT_VAL);
+}
+
+static void hisi_pcie_pmu_enable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val |= HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_disable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val &= ~HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_enable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 0);
+}
+
+static void hisi_pcie_pmu_disable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 1);
+}
+
+static void hisi_pcie_pmu_reset_counter(struct hisi_pcie_pmu *pcie_pmu, int idx)
+{
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_RESET_CNT);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_INIT_SET);
+}
+
+static void hisi_pcie_pmu_start(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+ u64 prev_cnt;
+
+ if (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))
+ return;
+
+ WARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));
+ hwc->state = 0;
+
+ hisi_pcie_pmu_config_filter(event);
+ hisi_pcie_pmu_enable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_enable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_set_period(event);
+
+ if (flags & PERF_EF_RELOAD) {
+ prev_cnt = local64_read(&hwc->prev_count);
+ hisi_pcie_pmu_writeq(pcie_pmu, hwc->event_base, idx, prev_cnt);
+ }
+
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_stop(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_disable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_disable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_clear_filter(event);
+ WARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);
+ hwc->state |= PERF_HES_STOPPED;
+
+ if (hwc->state & PERF_HES_UPTODATE)
+ return;
+
+ hwc->state |= PERF_HES_UPTODATE;
+}
+
+static int hisi_pcie_pmu_add(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx;
+
+ hwc->state = PERF_HES_STOPPED | PERF_HES_UPTODATE;
+
+ /* Check all working events to find a related event. */
+ idx = hisi_pcie_pmu_find_related_event(pcie_pmu, event);
+ if (idx < 0)
+ return idx;
+
+ /* Current event shares an enabled counter with the related event */
+ if (idx < HISI_PCIE_MAX_COUNTERS) {
+ hwc->idx = idx;
+ goto start_count;
+ }
+
+ idx = hisi_pcie_pmu_get_event_idx(pcie_pmu);
+ if (idx < 0)
+ return idx;
+
+ hwc->idx = idx;
+ pcie_pmu->hw_events[idx] = event;
+ /* Reset Counter to avoid previous statistic interference. */
+ hisi_pcie_pmu_reset_counter(pcie_pmu, idx);
+
+start_count:
+ if (flags & PERF_EF_START)
+ hisi_pcie_pmu_start(event, PERF_EF_RELOAD);
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_del(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_stop(event, PERF_EF_UPDATE);
+ pcie_pmu->hw_events[hwc->idx] = NULL;
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_enable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+ int num;
+
+ for (num = 0; num < HISI_PCIE_MAX_COUNTERS; num++) {
+ if (pcie_pmu->hw_events[num])
+ break;
+ }
+
+ if (num == HISI_PCIE_MAX_COUNTERS)
+ return;
+
+ writel(HISI_PCIE_GLOBAL_EN, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static void hisi_pcie_pmu_disable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+
+ writel(HISI_PCIE_GLOBAL_NONE, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static irqreturn_t hisi_pcie_pmu_irq(int irq, void *data)
+{
+ struct hisi_pcie_pmu *pcie_pmu = data;
+ irqreturn_t ret = IRQ_NONE;
+ struct perf_event *event;
+ u32 overflown;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ overflown = hisi_pcie_pmu_readl(pcie_pmu, HISI_PCIE_INT_STAT, idx);
+ if (!overflown)
+ continue;
+
+ /* Clear status of interrupt. */
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_STAT, idx, 1);
+ event = pcie_pmu->hw_events[idx];
+ if (!event)
+ continue;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_set_period(event);
+ ret = IRQ_HANDLED;
+ }
+
+ return ret;
+}
+
+static int hisi_pcie_pmu_irq_register(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int irq, ret;
+
+ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to enable MSI vectors: %d\n", ret);
+ return ret;
+ }
+
+ irq = pci_irq_vector(pdev, 0);
+ ret = request_irq(irq, hisi_pcie_pmu_irq, IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
+ pcie_pmu);
+ if (ret) {
+ pci_err(pdev, "Failed to register IRQ: %d\n", ret);
+ pci_free_irq_vectors(pdev);
+ return ret;
+ }
+
+ pcie_pmu->irq = irq;
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_irq_unregister(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ free_irq(pcie_pmu->irq, pcie_pmu);
+ pci_free_irq_vectors(pdev);
+}
+
+static int hisi_pcie_pmu_online_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+
+ if (pcie_pmu->on_cpu == -1) {
+ pcie_pmu->on_cpu = cpu;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(cpu)));
+ }
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_offline_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+ unsigned int target;
+
+ /* Nothing to do if this CPU doesn't own the PMU */
+ if (pcie_pmu->on_cpu != cpu)
+ return 0;
+
+ pcie_pmu->on_cpu = -1;
+ /* Choose a new CPU from all online cpus. */
+ target = cpumask_first(cpu_online_mask);
+ if (target >= nr_cpu_ids) {
+ pci_err(pcie_pmu->pdev, "There is no CPU to set\n");
+ return 0;
+ }
+
+ perf_pmu_migrate_context(&pcie_pmu->pmu, cpu, target);
+ /* Use this CPU for event counting */
+ pcie_pmu->on_cpu = target;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(target)));
+
+ return 0;
+}
+
+static struct attribute *hisi_pcie_pmu_events_attr[] = {
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_latency, 0x0010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_cnt, 0x10010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_latency, 0x0210),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_cnt, 0x10210),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_latency, 0x0011),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_cnt, 0x10011),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_flux, 0x1005),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_time, 0x11005),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_flux, 0x2004),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_time, 0x12004),
+ NULL
+};
+
+static struct attribute_group hisi_pcie_pmu_events_group = {
+ .name = "events",
+ .attrs = hisi_pcie_pmu_events_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_format_attr[] = {
+ HISI_PCIE_PMU_FORMAT_ATTR(event, "config:0-16"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_len, "config1:0-3"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_mode, "config1:4"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_len, "config1:5-8"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_mode, "config1:9"),
+ HISI_PCIE_PMU_FORMAT_ATTR(port, "config2:0-15"),
+ HISI_PCIE_PMU_FORMAT_ATTR(bdf, "config2:16-31"),
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_format_group = {
+ .name = "format",
+ .attrs = hisi_pcie_pmu_format_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_bus_attrs[] = {
+ &dev_attr_bus.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_bus_attr_group = {
+ .attrs = hisi_pcie_pmu_bus_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_cpumask_attrs[] = {
+ &dev_attr_cpumask.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_cpumask_attr_group = {
+ .attrs = hisi_pcie_pmu_cpumask_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_identifier_attrs[] = {
+ &dev_attr_identifier.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_identifier_attr_group = {
+ .attrs = hisi_pcie_pmu_identifier_attrs,
+};
+
+static const struct attribute_group *hisi_pcie_pmu_attr_groups[] = {
+ &hisi_pcie_pmu_events_group,
+ &hisi_pcie_pmu_format_group,
+ &hisi_pcie_pmu_bus_attr_group,
+ &hisi_pcie_pmu_cpumask_attr_group,
+ &hisi_pcie_pmu_identifier_attr_group,
+ NULL
+};
+
+static int hisi_pcie_alloc_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ struct hisi_pcie_reg_pair regs;
+ u16 sicl_id, core_id;
+ char *name;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_BDF);
+ pcie_pmu->bdf_min = regs.lo;
+ pcie_pmu->bdf_max = regs.hi;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_INFO);
+ sicl_id = regs.hi;
+ core_id = regs.lo;
+
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "hisi_pcie%u_core%u", sicl_id, core_id);
+ if (!name)
+ return -ENOMEM;
+
+ pcie_pmu->pdev = pdev;
+ pcie_pmu->on_cpu = -1;
+ pcie_pmu->identifier = readl(pcie_pmu->base + HISI_PCIE_REG_VERSION);
+ pcie_pmu->pmu = (struct pmu) {
+ .name = name,
+ .module = THIS_MODULE,
+ .event_init = hisi_pcie_pmu_event_init,
+ .pmu_enable = hisi_pcie_pmu_enable,
+ .pmu_disable = hisi_pcie_pmu_disable,
+ .add = hisi_pcie_pmu_add,
+ .del = hisi_pcie_pmu_del,
+ .start = hisi_pcie_pmu_start,
+ .stop = hisi_pcie_pmu_stop,
+ .read = hisi_pcie_pmu_read,
+ .task_ctx_nr = perf_invalid_context,
+ .attr_groups = hisi_pcie_pmu_attr_groups,
+ .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
+ };
+
+ return 0;
+}
+
+static int hisi_pcie_init_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int ret;
+
+ pcie_pmu->base = pci_ioremap_bar(pdev, 2);
+ if (!pcie_pmu->base) {
+ pci_err(pdev, "Ioremap failed for pcie_pmu resource\n");
+ return -ENOMEM;
+ }
+
+ ret = hisi_pcie_alloc_pmu(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = hisi_pcie_pmu_irq_register(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = cpuhp_state_add_instance(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ if (ret) {
+ pci_err(pdev, "Failed to register hotplug: %d\n", ret);
+ goto err_irq_unregister;
+ }
+
+ ret = perf_pmu_register(&pcie_pmu->pmu, pcie_pmu->pmu.name, -1);
+ if (ret) {
+ pci_err(pdev, "Failed to register PCIe PMU: %d\n", ret);
+ goto err_hotplug_unregister;
+ }
+
+ return ret;
+
+err_hotplug_unregister:
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+
+err_irq_unregister:
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+
+err_iounmap:
+ iounmap(pcie_pmu->base);
+
+ return ret;
+}
+
+static void hisi_pcie_uninit_pmu(struct pci_dev *pdev)
+{
+ struct hisi_pcie_pmu *pcie_pmu = pci_get_drvdata(pdev);
+
+ perf_pmu_unregister(&pcie_pmu->pmu);
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+ iounmap(pcie_pmu->base);
+}
+
+static int hisi_pcie_init_dev(struct pci_dev *pdev)
+{
+ int ret;
+
+ ret = pcim_enable_device(pdev);
+ if (ret) {
+ pci_err(pdev, "Failed to enable PCI device: %d\n", ret);
+ return ret;
+ }
+
+ ret = pcim_iomap_regions(pdev, BIT(2), DRV_NAME);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to request PCI mem regions: %d\n", ret);
+ return ret;
+ }
+
+ pci_set_master(pdev);
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ struct hisi_pcie_pmu *pcie_pmu;
+ int ret;
+
+ pcie_pmu = devm_kzalloc(&pdev->dev, sizeof(*pcie_pmu), GFP_KERNEL);
+ if (!pcie_pmu)
+ return -ENOMEM;
+
+ ret = hisi_pcie_init_dev(pdev);
+ if (ret)
+ return ret;
+
+ ret = hisi_pcie_init_pmu(pdev, pcie_pmu);
+ if (ret)
+ return ret;
+
+ pci_set_drvdata(pdev, pcie_pmu);
+
+ return ret;
+}
+
+static void hisi_pcie_pmu_remove(struct pci_dev *pdev)
+{
+ hisi_pcie_uninit_pmu(pdev);
+ pci_set_drvdata(pdev, NULL);
+}
+
+static const struct pci_device_id hisi_pcie_pmu_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HUAWEI, 0xa12d) },
+ { 0, }
+};
+MODULE_DEVICE_TABLE(pci, hisi_pcie_pmu_ids);
+
+static struct pci_driver hisi_pcie_pmu_driver = {
+ .name = DRV_NAME,
+ .id_table = hisi_pcie_pmu_ids,
+ .probe = hisi_pcie_pmu_probe,
+ .remove = hisi_pcie_pmu_remove,
+};
+
+static int __init hisi_pcie_module_init(void)
+{
+ int ret;
+
+ ret = cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ "AP_PERF_ARM_HISI_PCIE_PMU_ONLINE",
+ hisi_pcie_pmu_online_cpu,
+ hisi_pcie_pmu_offline_cpu);
+ if (ret) {
+ pr_err("Failed to setup PCIe PMU hotplug: %d\n", ret);
+ return ret;
+ }
+
+ ret = pci_register_driver(&hisi_pcie_pmu_driver);
+ if (ret)
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+
+ return ret;
+}
+module_init(hisi_pcie_module_init);
+
+static void __exit hisi_pcie_module_exit(void)
+{
+ pci_unregister_driver(&hisi_pcie_pmu_driver);
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+}
+module_exit(hisi_pcie_module_exit);
+
+MODULE_DESCRIPTION("HiSilicon PCIe PMU driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Qi Liu <liuqi115(a)huawei.com>");
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index b98b9eb7d5f8..24e7be132046 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -178,6 +178,9 @@ enum cpuhp_state {
CPUHP_AP_PERF_ARM_HISI_L3_ONLINE,
CPUHP_AP_PERF_ARM_HISI_PA_ONLINE,
CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE,
+ #ifndef __GENKSYMS__
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ #endif
CPUHP_AP_PERF_ARM_L2X0_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,
--
2.20.1
1
14
d1ac096f8869 mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and
_mcopy_atomic()
c6cbf5431a62 mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
308ff6a6e768 mm: fix missing cache flush for all tail pages of compound page
185fa5984d7a Bluetooth: Fix the creation of hdev->name
9ff4a6b80642 arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
dfb55dcf9d39 nfp: bpf: silence bitwise vs. logical OR warning
f89f76f4b0e7 drm/amd/display/dc/gpio/gpio_service: Pass around correct
dce{version, environment} types
efd1429fa99b block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code'
explicit
a71658c7db0b regulator: consumer: Add missing stubs to regulator/consumer.h
7648f42d1a62 MIPS: Use address-of operator on section symbols
Total patches: 10
Dmitry Osipenko (1):
regulator: consumer: Add missing stubs to regulator/consumer.h
Itay Iellin (1):
Bluetooth: Fix the creation of hdev->name
Lee Jones (2):
block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code' explicit
drm/amd/display/dc/gpio/gpio_service: Pass around correct
dce_{version, environment} types
Mike Rapoport (1):
arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
Muchun Song (3):
mm: fix missing cache flush for all tail pages of compound page
mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and
__mcopy_atomic()
Nathan Chancellor (2):
MIPS: Use address-of operator on section symbols
nfp: bpf: silence bitwise vs. logical OR warning
Documentation/vm/memory-model.rst | 3 +-
arch/arm/Kconfig | 8 ++---
arch/arm/mach-bcm/Kconfig | 1 -
arch/arm/mach-davinci/Kconfig | 1 -
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-highbank/Kconfig | 1 -
arch/arm/mach-omap2/Kconfig | 1 -
arch/arm/mach-s5pv210/Kconfig | 1 -
arch/arm/mach-tango/Kconfig | 1 -
arch/mips/bmips/setup.c | 2 +-
arch/mips/lantiq/prom.c | 2 +-
arch/mips/pic32/pic32mzda/init.c | 2 +-
arch/mips/ralink/of.c | 2 +-
drivers/block/drbd/drbd_nl.c | 13 +++++---
.../drm/amd/display/dc/gpio/gpio_service.c | 12 +++----
.../display/include/gpio_service_interface.h | 4 +--
drivers/net/ethernet/netronome/nfp/nfp_asm.c | 4 +--
fs/proc/kcore.c | 2 --
include/linux/mmzone.h | 31 -------------------
include/linux/regulator/consumer.h | 30 ++++++++++++++++++
include/net/bluetooth/hci_core.h | 3 ++
mm/memory.c | 2 ++
mm/migrate.c | 7 +++--
mm/mmzone.c | 14 ---------
mm/userfaultfd.c | 3 ++
mm/vmstat.c | 4 ---
net/bluetooth/hci_core.c | 6 ++--
27 files changed, 71 insertions(+), 90 deletions(-)
--
2.20.1
1
10

[PATCH openEuler-5.10-LTS 1/6] coresight: etm4x: Workaround CPU hung bug on HiSilicon ETM
by Zheng Zengkai 09 Aug '22
by Zheng Zengkai 09 Aug '22
09 Aug '22
From: Junhao He <hejunhao3(a)huawei.com>
driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EZY2
------------------------------------------------------------------
In FIFO mode, when the state of sink buffer is full, the sink device will
continuously backpressures the ETM, so that the ETM cannot switch to the
idle state. In this case, the WFx instruction cannot be executed because
the CPU detects that the ETM is not in the idle state which that will
cause CPU hung.
We workaround this issue on HiSilicon ETM by setting bit 13 of TRCAUXCTLR
which is used to indicate that the ETM is in the idle state.
The call trace is shown below:
rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
rcu: 10-...0: (1 ticks this GP) idle=5b6/1/0x4000000000000000 softirq=12309/12318 fqs=114196
(detected by 67, t=330041 jiffies, g=309253, q=453663)
Task dump for CPU 10:
task:ksoftirqd/10 state:R running task stack: 0 pid: 64 ppid: 2 flags:0x0000000a
Call trace:
__switch_to+0xbc/0xfc
irqtime_account_irq+0x58/0xc4
__do_softirq+0x6c/0x358
run_ksoftirqd+0x68/0x90
smpboot_thread_fn+0x15c/0x1a0
kthread+0x108/0x13c
ret_from_fork+0x10/0x18
watchdog: BUG: soft lockup - CPU#35 stuck for 22s! [bash:133345]
...
Call trace:
smp_call_function_single+0x178/0x190
etm4_disable_sysfs+0x74/0xfc [coresight_etm4x]
etm4_disable+0x6c/0x70 [coresight_etm4x]
coresight_disable_source+0x7c/0xa0 [coresight]
coresight_disable+0x6c/0x13c [coresight]
enable_source_store+0x88/0xa0 [coresight]
dev_attr_store+0x20/0x34
sysfs_kf_write+0x4c/0x5c
kernfs_fop_write_iter+0x130/0x1c0
new_sync_write+0xec/0x18c
vfs_write+0x214/0x2ac
ksys_write+0x70/0xfc
__arm64_sys_write+0x24/0x30
el0_svc_common.constprop.0+0x7c/0x1bc
do_el0_svc+0x2c/0x94
el0_svc+0x20/0x30
el0_sync_handler+0xb0/0xb4
el0_sync+0x160/0x180
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Signed-off-by: Junhao He <hejunhao3(a)huawei.com>
Reviewed-by: Jay Fang <f.fangjian(a)huawei.com>
Acked-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
.../coresight/coresight-etm4x-core.c | 37 +++++++++++++++----
drivers/hwtracing/coresight/coresight-etm4x.h | 1 +
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index d4d9c8bb88ca..881da29cbd5a 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -116,8 +116,10 @@ struct etm4_enable_arg {
#define HISI_HIP08_CORE_COMMIT_LVL_1 0b01
#define HISI_HIP08_CORE_COMMIT_REG sys_reg(3, 1, 15, 2, 5)
+#define HISI_HIP08_AUXCTRL_CHICKEN_BIT BIT(13)
+
struct etm4_arch_features {
- void (*arch_callback)(bool enable);
+ void (*arch_callback)(void *info);
};
static bool etm4_hisi_match_pid(unsigned int id)
@@ -125,8 +127,9 @@ static bool etm4_hisi_match_pid(unsigned int id)
return (id & ETM4_AMBA_MASK) == HISI_HIP08_AMBA_ID;
}
-static void etm4_hisi_config_core_commit(bool enable)
+static void etm4_hisi_config_core_commit(void *info)
{
+ bool enable = *(bool *)info;
u8 commit = enable ? HISI_HIP08_CORE_COMMIT_LVL_1 :
HISI_HIP08_CORE_COMMIT_FULL;
u64 val;
@@ -143,48 +146,67 @@ static void etm4_hisi_config_core_commit(bool enable)
write_sysreg_s(val, HISI_HIP08_CORE_COMMIT_REG);
}
+static void etm4_hisi_config_auxctrlr(void *info)
+{
+ struct etmv4_drvdata *drvdata = info;
+
+ /* Switch the ETM to idle state */
+ writel_relaxed(HISI_HIP08_AUXCTRL_CHICKEN_BIT, drvdata->base + TRCAUXCTLR);
+}
+
static struct etm4_arch_features etm4_features[] = {
[ETM4_IMPDEF_HISI_CORE_COMMIT] = {
.arch_callback = etm4_hisi_config_core_commit,
},
+ [ETM4_IMPDEF_HISI_SET_AUXCTRLR] = {
+ .arch_callback = etm4_hisi_config_auxctrlr,
+ },
{},
};
static void etm4_enable_arch_specific(struct etmv4_drvdata *drvdata)
{
struct etm4_arch_features *ftr;
+ bool enable = true;
int bit;
for_each_set_bit(bit, drvdata->arch_features, ETM4_IMPDEF_FEATURE_MAX) {
ftr = &etm4_features[bit];
- if (ftr->arch_callback)
- ftr->arch_callback(true);
+ if (bit == ETM4_IMPDEF_HISI_CORE_COMMIT && ftr->arch_callback)
+ ftr->arch_callback(&enable);
+
+ if (bit == ETM4_IMPDEF_HISI_SET_AUXCTRLR && ftr->arch_callback)
+ ftr->arch_callback(drvdata);
}
}
static void etm4_disable_arch_specific(struct etmv4_drvdata *drvdata)
{
struct etm4_arch_features *ftr;
+ bool enable = false;
int bit;
for_each_set_bit(bit, drvdata->arch_features, ETM4_IMPDEF_FEATURE_MAX) {
ftr = &etm4_features[bit];
- if (ftr->arch_callback)
- ftr->arch_callback(false);
+ if (bit == ETM4_IMPDEF_HISI_CORE_COMMIT && ftr->arch_callback)
+ ftr->arch_callback(&enable);
}
}
static void etm4_check_arch_features(struct etmv4_drvdata *drvdata,
unsigned int id)
{
- if (etm4_hisi_match_pid(id))
+ if (etm4_hisi_match_pid(id)) {
set_bit(ETM4_IMPDEF_HISI_CORE_COMMIT, drvdata->arch_features);
+ set_bit(ETM4_IMPDEF_HISI_SET_AUXCTRLR, drvdata->arch_features);
+ }
}
#else
static void etm4_enable_arch_specific(struct etmv4_drvdata *drvdata)
{
+ writel_relaxed(0x0, drvdata->base + TRCAUXCTLR);
}
static void etm4_disable_arch_specific(struct etmv4_drvdata *drvdata)
@@ -223,7 +245,6 @@ static int etm4_enable_hw(struct etmv4_drvdata *drvdata)
writel_relaxed(config->pe_sel, drvdata->base + TRCPROCSELR);
writel_relaxed(config->cfg, drvdata->base + TRCCONFIGR);
/* nothing specific implemented */
- writel_relaxed(0x0, drvdata->base + TRCAUXCTLR);
writel_relaxed(config->eventctrl0, drvdata->base + TRCEVENTCTL0R);
writel_relaxed(config->eventctrl1, drvdata->base + TRCEVENTCTL1R);
if (drvdata->stallctl)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h
index 3dd3e0633328..ef9d7365c2da 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x.h
+++ b/drivers/hwtracing/coresight/coresight-etm4x.h
@@ -206,6 +206,7 @@
enum etm_impdef_type {
ETM4_IMPDEF_HISI_CORE_COMMIT,
+ ETM4_IMPDEF_HISI_SET_AUXCTRLR,
ETM4_IMPDEF_FEATURE_MAX,
};
--
2.20.1
1
5

09 Aug '22
From: Peter Zijlstra <peterz(a)infradead.org>
mainline inclusion
from mainline-v5.12-rc1
commit 87ccc826bf1c9e5ab4c2f649b404e02c63e47622
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5LCHG
CVE: NA
--------------------------------
Currently REG_SP_INDIRECT is unused but means (%rsp + offset),
change it to mean (%rsp) + offset.
The reason is that we're going to swizzle stack in the middle of a C
function with non-trivial stack footprint. This means that when the
unwinder finds the ToS, it needs to dereference it (%rsp) and then add
the offset to the next frame, resulting in: (%rsp) + offset
This is somewhat unfortunate, since REG_BP_INDIRECT is used (by DRAP)
and thus needs to retain the current (%rbp + offset).
Signed-off-by: Peter Zijlstra (Intel) <peterz(a)infradead.org>
Reviewed-by: Miroslav Benes <mbenes(a)suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe(a)redhat.com>
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Liao Chang <liaochang1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/kernel/unwind_orc.c | 5 ++++-
tools/objtool/orc_dump.c | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
index bafe953f5d7f..eea8ec5eca3b 100644
--- a/arch/x86/kernel/unwind_orc.c
+++ b/arch/x86/kernel/unwind_orc.c
@@ -450,7 +450,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
case ORC_REG_SP_INDIRECT:
- sp = state->sp + orc->sp_offset;
+ sp = state->sp;
indirect = true;
break;
@@ -500,6 +500,9 @@ bool unwind_next_frame(struct unwind_state *state)
if (indirect) {
if (!deref_stack_reg(state, sp, &sp))
goto err;
+
+ if (orc->sp_reg == ORC_REG_SP_INDIRECT)
+ sp += orc->sp_offset;
}
/* Find IP, SP and possibly regs: */
diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index faa444270ee3..ba28830aace2 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -64,7 +64,7 @@ static void print_reg(unsigned int reg, int offset)
if (reg == ORC_REG_BP_INDIRECT)
printf("(bp%+d)", offset);
else if (reg == ORC_REG_SP_INDIRECT)
- printf("(sp%+d)", offset);
+ printf("(sp)%+d", offset);
else if (reg == ORC_REG_UNDEFINED)
printf("(und)");
else
--
2.25.1
1
6

[PATCH openEuler-1.0-LTS] netfilter: nf_queue: do not allow packet truncation below transport header offset
by Yongqiang Liu 09 Aug '22
by Yongqiang Liu 09 Aug '22
09 Aug '22
From: Florian Westphal <fw(a)strlen.de>
mainline inclusion
from mainline-v5.19-rc3
commit 99a63d36cb3ed5ca3aa6fcb64cffbeaf3b0fb164
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5J9R4
CVE: CVE-2022-36946
--------------------------------
Domingo Dirutigliano and Nicola Guerrera report kernel panic when
sending nf_queue verdict with 1-byte nfta_payload attribute.
The IP/IPv6 stack pulls the IP(v6) header from the packet after the
input hook.
If user truncates the packet below the header size, this skb_pull() will
result in a malformed skb (skb->len < 0).
Fixes: 7af4cc3fa158 ("[NETFILTER]: Add "nfnetlink_queue" netfilter queue handler over nfnetlink")
Reported-by: Domingo Dirutigliano <pwnzer0tt1(a)proton.me>
Signed-off-by: Florian Westphal <fw(a)strlen.de>
Reviewed-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nfnetlink_queue.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index a5aff2834bd6..cd496b074a71 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -850,11 +850,16 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned int queuenum)
}
static int
-nfqnl_mangle(void *data, int data_len, struct nf_queue_entry *e, int diff)
+nfqnl_mangle(void *data, unsigned int data_len, struct nf_queue_entry *e, int diff)
{
struct sk_buff *nskb;
if (diff < 0) {
+ unsigned int min_len = skb_transport_offset(e->skb);
+
+ if (data_len < min_len)
+ return -EINVAL;
+
if (pskb_trim(e->skb, data_len))
return -ENOMEM;
} else if (diff > 0) {
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] openvswitch: fix OOB access in reserve_sfa_size()
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: Paolo Valerio <pvalerio(a)redhat.com>
stable inclusion
from stable-v4.19.240
commit bbbf059337f9a74285c1cf088ff85ee92d149e64
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5KKF2
CVE: CVE-2022-2639
-------------------------------------------------
commit cefa91b2332d7009bc0be5d951d6cbbf349f90f8 upstream.
Given a sufficiently large number of actions, while copying and
reserving memory for a new action of a new flow, if next_offset is
greater than MAX_ACTIONS_BUFSIZE, the function reserve_sfa_size() does
not return -EMSGSIZE as expected, but it allocates MAX_ACTIONS_BUFSIZE
bytes increasing actions_len by req_size. This can then lead to an OOB
write access, especially when further actions need to be copied.
Fix it by rearranging the flow action size check.
KASAN splat below:
==================================================================
BUG: KASAN: slab-out-of-bounds in reserve_sfa_size+0x1ba/0x380 [openvswitch]
Write of size 65360 at addr ffff888147e4001c by task handler15/836
CPU: 1 PID: 836 Comm: handler15 Not tainted 5.18.0-rc1+ #27
...
Call Trace:
<TASK>
dump_stack_lvl+0x45/0x5a
print_report.cold+0x5e/0x5db
? __lock_text_start+0x8/0x8
? reserve_sfa_size+0x1ba/0x380 [openvswitch]
kasan_report+0xb5/0x130
? reserve_sfa_size+0x1ba/0x380 [openvswitch]
kasan_check_range+0xf5/0x1d0
memcpy+0x39/0x60
reserve_sfa_size+0x1ba/0x380 [openvswitch]
__add_action+0x24/0x120 [openvswitch]
ovs_nla_add_action+0xe/0x20 [openvswitch]
ovs_ct_copy_action+0x29d/0x1130 [openvswitch]
? __kernel_text_address+0xe/0x30
? unwind_get_return_address+0x56/0xa0
? create_prof_cpu_mask+0x20/0x20
? ovs_ct_verify+0xf0/0xf0 [openvswitch]
? prep_compound_page+0x198/0x2a0
? __kasan_check_byte+0x10/0x40
? kasan_unpoison+0x40/0x70
? ksize+0x44/0x60
? reserve_sfa_size+0x75/0x380 [openvswitch]
__ovs_nla_copy_actions+0xc26/0x2070 [openvswitch]
? __zone_watermark_ok+0x420/0x420
? validate_set.constprop.0+0xc90/0xc90 [openvswitch]
? __alloc_pages+0x1a9/0x3e0
? __alloc_pages_slowpath.constprop.0+0x1da0/0x1da0
? unwind_next_frame+0x991/0x1e40
? __mod_node_page_state+0x99/0x120
? __mod_lruvec_page_state+0x2e3/0x470
? __kasan_kmalloc_large+0x90/0xe0
ovs_nla_copy_actions+0x1b4/0x2c0 [openvswitch]
ovs_flow_cmd_new+0x3cd/0xb10 [openvswitch]
...
Cc: stable(a)vger.kernel.org
Fixes: f28cd2af22a0 ("openvswitch: fix flow actions reallocation")
Signed-off-by: Paolo Valerio <pvalerio(a)redhat.com>
Acked-by: Eelco Chaudron <echaudro(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/openvswitch/flow_netlink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index eab5e8eaddaa..217c64fbc659 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -2316,7 +2316,7 @@ static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
new_acts_size = max(next_offset + req_size, ksize(*sfa) * 2);
if (new_acts_size > MAX_ACTIONS_BUFSIZE) {
- if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size) {
+ if ((next_offset + req_size) > MAX_ACTIONS_BUFSIZE) {
OVS_NLERR(log, "Flow action size exceeds max %u",
MAX_ACTIONS_BUFSIZE);
return ERR_PTR(-EMSGSIZE);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] dm thin: use refcount_t for thin_c reference counting
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: John Pittman <jpittman(a)redhat.com>
mainline inclusion
from mainline-v4.20-rc1
commit 22d4c291f58752d14efb8a185b772a3fc3e947d2
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KSEX
CVE: NA
--------------------------------
The API surrounding refcount_t should be used in place of atomic_t
when variables are being used as reference counters. It can
potentially prevent reference counter overflows and use-after-free
conditions. In the dm thin layer, one such example is tc->refcount.
Change this from the atomic_t API to the refcount_t API to prevent
mentioned conditions.
Signed-off-by: John Pittman <jpittman(a)redhat.com>
Signed-off-by: Mike Snitzer <snitzer(a)redhat.com>
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/dm-thin.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 2b6dd7a275eb..e352aa3fdfb0 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -355,7 +355,7 @@ struct thin_c {
* Ensures the thin is not destroyed until the worker has finished
* iterating the active_thins list.
*/
- atomic_t refcount;
+ refcount_t refcount;
struct completion can_destroy;
};
@@ -4100,12 +4100,12 @@ static struct target_type pool_target = {
*--------------------------------------------------------------*/
static void thin_get(struct thin_c *tc)
{
- atomic_inc(&tc->refcount);
+ refcount_inc(&tc->refcount);
}
static void thin_put(struct thin_c *tc)
{
- if (atomic_dec_and_test(&tc->refcount))
+ if (refcount_dec_and_test(&tc->refcount))
complete(&tc->can_destroy);
}
@@ -4255,7 +4255,7 @@ static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv)
r = -EINVAL;
goto bad;
}
- atomic_set(&tc->refcount, 1);
+ refcount_set(&tc->refcount, 1);
init_completion(&tc->can_destroy);
list_add_tail_rcu(&tc->list, &tc->pool->active_thins);
spin_unlock_irqrestore(&tc->pool->lock, flags);
--
2.25.1
1
0
议题:英特尔Sapphire Rapids平台PMU新特性
简介:主要介绍一下英特尔的新一代Sapphire Rapids平台上的PMU新特性,
以及Linux的支持情况。
1
0

[PATCH openEuler-1.0-LTS 01/29] ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: Sergey Shtylyov <s.shtylyov(a)omp.ru>
stable inclusion
from stable-4.19.249
commit a810bd5af06977a847d1f202b22d7defd5c62497
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5I4FP
CVE: NA
--------------------------------
[ Upstream commit bf476fe22aa1851bab4728e0c49025a6a0bea307 ]
In an unlikely (and probably wrong?) case that the 'ppi' parameter of
ata_host_alloc_pinfo() points to an array starting with a NULL pointer,
there's going to be a kernel oops as the 'pi' local variable won't get
reassigned from the initial value of NULL. Initialize 'pi' instead to
'&ata_dummy_port_info' to fix the possible kernel oops for good...
Found by Linux Verification Center (linuxtesting.org) with the SVACE static
analysis tool.
Signed-off-by: Sergey Shtylyov <s.shtylyov(a)omp.ru>
Signed-off-by: Damien Le Moal <damien.lemoal(a)opensource.wdc.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/ata/libata-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 290ff99bf1d8..0bcdc5261480 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6240,7 +6240,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
const struct ata_port_info * const * ppi,
int n_ports)
{
- const struct ata_port_info *pi;
+ const struct ata_port_info *pi = &ata_dummy_port_info;
struct ata_host *host;
int i, j;
@@ -6248,7 +6248,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
if (!host)
return NULL;
- for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) {
+ for (i = 0, j = 0; i < host->n_ports; i++) {
struct ata_port *ap = host->ports[i];
if (ppi[j])
--
2.25.1
1
28

[PATCH openEuler-1.0-LTS] ipv6/addrconf: fix a null-ptr-deref bug for ip6_ptr
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Ziyang Xuan <william.xuanziyang(a)huawei.com>
mainline inclusion
from mainline-v5.19
commit 85f0173df35e5462d89947135a6a5599c6c3ef6f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JW9C
CVE: NA
-------------------------------
Change net device's MTU to smaller than IPV6_MIN_MTU or unregister
device while matching route. That may trigger null-ptr-deref bug
for ip6_ptr probability as following.
=========================================================
BUG: KASAN: null-ptr-deref in find_match.part.0+0x70/0x134
Read of size 4 at addr 0000000000000308 by task ping6/263
CPU: 2 PID: 263 Comm: ping6 Not tainted 5.19.0-rc7+ #14
Call trace:
dump_backtrace+0x1a8/0x230
show_stack+0x20/0x70
dump_stack_lvl+0x68/0x84
print_report+0xc4/0x120
kasan_report+0x84/0x120
__asan_load4+0x94/0xd0
find_match.part.0+0x70/0x134
__find_rr_leaf+0x408/0x470
fib6_table_lookup+0x264/0x540
ip6_pol_route+0xf4/0x260
ip6_pol_route_output+0x58/0x70
fib6_rule_lookup+0x1a8/0x330
ip6_route_output_flags_noref+0xd8/0x1a0
ip6_route_output_flags+0x58/0x160
ip6_dst_lookup_tail+0x5b4/0x85c
ip6_dst_lookup_flow+0x98/0x120
rawv6_sendmsg+0x49c/0xc70
inet_sendmsg+0x68/0x94
Reproducer as following:
Firstly, prepare conditions:
$ip netns add ns1
$ip netns add ns2
$ip link add veth1 type veth peer name veth2
$ip link set veth1 netns ns1
$ip link set veth2 netns ns2
$ip netns exec ns1 ip -6 addr add 2001:0db8:0:f101::1/64 dev veth1
$ip netns exec ns2 ip -6 addr add 2001:0db8:0:f101::2/64 dev veth2
$ip netns exec ns1 ifconfig veth1 up
$ip netns exec ns2 ifconfig veth2 up
$ip netns exec ns1 ip -6 route add 2000::/64 dev veth1 metric 1
$ip netns exec ns2 ip -6 route add 2001::/64 dev veth2 metric 1
Secondly, execute the following two commands in two ssh windows
respectively:
$ip netns exec ns1 sh
$while true; do ip -6 addr add 2001:0db8:0:f101::1/64 dev veth1; ip -6 route add 2000::/64 dev veth1 metric 1; ping6 2000::2; done
$ip netns exec ns1 sh
$while true; do ip link set veth1 mtu 1000; ip link set veth1 mtu 1500; sleep 5; done
It is because ip6_ptr has been assigned to NULL in addrconf_ifdown() firstly,
then ip6_ignore_linkdown() accesses ip6_ptr directly without NULL check.
cpu0 cpu1
fib6_table_lookup
__find_rr_leaf
addrconf_notify [ NETDEV_CHANGEMTU ]
addrconf_ifdown
RCU_INIT_POINTER(dev->ip6_ptr, NULL)
find_match
ip6_ignore_linkdown
So we can add NULL check for ip6_ptr before using in ip6_ignore_linkdown() to
fix the null-ptr-deref bug.
Fixes: dcd1f572954f ("net/ipv6: Remove fib6_idev")
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: David Ahern <dsahern(a)kernel.org>
Link: https://lore.kernel.org/r/20220728013307.656257-1-william.xuanziyang@huawei…
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Conflicts:
include/net/addrconf.h
net/ipv6/route.c
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/ipv6/route.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 8efb03cc6f24..31c285d0f8c3 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -655,6 +655,9 @@ static inline bool fib6_ignore_linkdown(const struct fib6_info *f6i)
if (dev) {
const struct inet6_dev *idev = __in6_dev_get(dev);
+ if (unlikely(!idev))
+ return true;
+
rc = !!idev->cnf.ignore_routes_with_linkdown;
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] io_uring: add missing item types for various requests
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Jens Axboe <axboe(a)kernel.dk>
stable inclusion
from stable-v5.10.125
commit df3f3bb5059d20ef094d6b2f0256c4bf4127a859
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5IM3T
CVE: CVE-2022-2327
--------------------------------
Any read/write should grab current->nsproxy, denoted by IO_WQ_WORK_FILES
as it refers to current->files as well, and connect and recv/recvmsg,
send/sendmsg should grab current->fs which is denoted by IO_WQ_WORK_FS.
No upstream commit exists for this issue.
Reported-by: Bing-Jhong Billy Jheng <billy(a)starlabs.sg>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Conflicts:
1. read/write already grab current->nsproxy, thus don't modified
read/write related ops.
2. 'work_flags' doesn't exist, io_op_def is using field 'needs_fs' to
decide if 'current->fs' should be grabbed.
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io_uring.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 8a96b7df4112..d4e430b51098 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -816,6 +816,7 @@ static const struct io_op_def io_op_defs[] = {
.async_ctx = 1,
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollout = 1,
},
@@ -864,12 +865,14 @@ static const struct io_op_def io_op_defs[] = {
[IORING_OP_SEND] = {
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollout = 1,
},
[IORING_OP_RECV] = {
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollin = 1,
.buffer_select = 1,
--
2.25.1
1
0

05 Aug '22
Add programmable schedule feature for openEuler-22.09.
Chen Hui (12):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
bpf: BPF samples support SCHED program type
samples: bpf: Add bpf sched preempt sample program
bpf:programmable: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add hook for select_task_rq_fair
Guan Jing (2):
sched: programmable: Add hook for entity_before
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (3):
sched: programmable: add bpf_sched_tg_tag_of helper function
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 ++++++
include/linux/sched_hook_defs.h | 7 +-
include/uapi/linux/bpf.h | 112 +++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 409 +++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 99 ++++++
kernel/sched/core.c | 103 +++++++
kernel/sched/fair.c | 58 ++++
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 62 ++++
samples/bpf/sched_pick_task_user.c | 92 ++++++
samples/bpf/sched_preempt_kern.c | 151 ++++++++++
samples/bpf/sched_preempt_user.c | 139 +++++++++
samples/bpf/sched_select_core_kern.c | 239 +++++++++++++++
samples/bpf/sched_select_core_user.c | 114 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 112 +++++++
tools/lib/bpf/libbpf_sched.h | 435 +++++++++++++++++++++++++++
25 files changed, 2389 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.20.1
1
20

[PATCH openEuler-1.0-LTS 1/3] net: sched: sch_teql: fix null-pointer dereference
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Pavel Tikhomirov <ptikhomirov(a)virtuozzo.com>
stable inclusion
from stable-v4.19.187
commit a9a7488979a7d0abfd30bc32f370b8e0c124db33
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JPWC
CVE: NA
--------------------------------
commit 1ffbc7ea91606e4abd10eb60de5367f1c86daf5e upstream.
Reproduce:
modprobe sch_teql
tc qdisc add dev teql0 root teql0
This leads to (for instance in Centos 7 VM) OOPS:
[ 532.366633] BUG: unable to handle kernel NULL pointer dereference at 00000000000000a8
[ 532.366733] IP: [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.366825] PGD 80000001376d5067 PUD 137e37067 PMD 0
[ 532.366906] Oops: 0000 [#1] SMP
[ 532.366987] Modules linked in: sch_teql ...
[ 532.367945] CPU: 1 PID: 3026 Comm: tc Kdump: loaded Tainted: G ------------ T 3.10.0-1062.7.1.el7.x86_64 #1
[ 532.368041] Hardware name: Virtuozzo KVM, BIOS 1.11.0-2.vz7.2 04/01/2014
[ 532.368125] task: ffff8b7d37d31070 ti: ffff8b7c9fdbc000 task.ti: ffff8b7c9fdbc000
[ 532.368224] RIP: 0010:[<ffffffffc06124a8>] [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.368320] RSP: 0018:ffff8b7c9fdbf8e0 EFLAGS: 00010286
[ 532.368394] RAX: ffffffffc0612490 RBX: ffff8b7cb1565e00 RCX: ffff8b7d35ba2000
[ 532.368476] RDX: ffff8b7d35ba2000 RSI: 0000000000000000 RDI: ffff8b7cb1565e00
[ 532.368557] RBP: ffff8b7c9fdbf8f8 R08: ffff8b7d3fd1f140 R09: ffff8b7d3b001600
[ 532.368638] R10: ffff8b7d3b001600 R11: ffffffff84c7d65b R12: 00000000ffffffd8
[ 532.368719] R13: 0000000000008000 R14: ffff8b7d35ba2000 R15: ffff8b7c9fdbf9a8
[ 532.368800] FS: 00007f6a4e872740(0000) GS:ffff8b7d3fd00000(0000) knlGS:0000000000000000
[ 532.368885] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 532.368961] CR2: 00000000000000a8 CR3: 00000001396ee000 CR4: 00000000000206e0
[ 532.369046] Call Trace:
[ 532.369159] [<ffffffff84c8192e>] qdisc_create+0x36e/0x450
[ 532.369268] [<ffffffff846a9b49>] ? ns_capable+0x29/0x50
[ 532.369366] [<ffffffff849afde2>] ? nla_parse+0x32/0x120
[ 532.369442] [<ffffffff84c81b4c>] tc_modify_qdisc+0x13c/0x610
[ 532.371508] [<ffffffff84c693e7>] rtnetlink_rcv_msg+0xa7/0x260
[ 532.372668] [<ffffffff84907b65>] ? sock_has_perm+0x75/0x90
[ 532.373790] [<ffffffff84c69340>] ? rtnl_newlink+0x890/0x890
[ 532.374914] [<ffffffff84c8da7b>] netlink_rcv_skb+0xab/0xc0
[ 532.376055] [<ffffffff84c63708>] rtnetlink_rcv+0x28/0x30
[ 532.377204] [<ffffffff84c8d400>] netlink_unicast+0x170/0x210
[ 532.378333] [<ffffffff84c8d7a8>] netlink_sendmsg+0x308/0x420
[ 532.379465] [<ffffffff84c2f3a6>] sock_sendmsg+0xb6/0xf0
[ 532.380710] [<ffffffffc034a56e>] ? __xfs_filemap_fault+0x8e/0x1d0 [xfs]
[ 532.381868] [<ffffffffc034a75c>] ? xfs_filemap_fault+0x2c/0x30 [xfs]
[ 532.383037] [<ffffffff847ec23a>] ? __do_fault.isra.61+0x8a/0x100
[ 532.384144] [<ffffffff84c30269>] ___sys_sendmsg+0x3e9/0x400
[ 532.385268] [<ffffffff847f3fad>] ? handle_mm_fault+0x39d/0x9b0
[ 532.386387] [<ffffffff84d88678>] ? __do_page_fault+0x238/0x500
[ 532.387472] [<ffffffff84c31921>] __sys_sendmsg+0x51/0x90
[ 532.388560] [<ffffffff84c31972>] SyS_sendmsg+0x12/0x20
[ 532.389636] [<ffffffff84d8dede>] system_call_fastpath+0x25/0x2a
[ 532.390704] [<ffffffff84d8de21>] ? system_call_after_swapgs+0xae/0x146
[ 532.391753] Code: 00 00 00 00 00 00 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 55 48 89 e5 41 55 41 54 53 48 8b b7 48 01 00 00 48 89 fb <48> 8b 8e a8 00 00 00 48 85 c9 74 43 48 89 ca eb 0f 0f 1f 80 00
[ 532.394036] RIP [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.395127] RSP <ffff8b7c9fdbf8e0>
[ 532.396179] CR2: 00000000000000a8
Null pointer dereference happens on master->slaves dereference in
teql_destroy() as master is null-pointer.
When qdisc_create() calls teql_qdisc_init() it imediately fails after
check "if (m->dev == dev)" because both devices are teql0, and it does
not set qdisc_priv(sch)->m leaving it zero on error path, then
qdisc_create() imediately calls teql_destroy() which does not expect
zero master pointer and we get OOPS.
Fixes: 87b60cfacf9f ("net_sched: fix error recovery at qdisc creation")
Signed-off-by: Pavel Tikhomirov <ptikhomirov(a)virtuozzo.com>
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/sched/sch_teql.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index 7ed53124069c..163364124691 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -138,6 +138,9 @@ teql_destroy(struct Qdisc *sch)
struct teql_sched_data *dat = qdisc_priv(sch);
struct teql_master *master = dat->m;
+ if (!master)
+ return;
+
prev = master->slaves;
if (prev) {
do {
--
2.25.1
1
2
Some applications has large code and data segment, and this causes high
TLB miss when page size is 4K. Mapping these apps into hugetlbfs will
boost their performance. A userspace tool libhugetlbfs can do this but
it seems to stopped development since 2020, and it does not support
debugging.
Tmpfs supports transparent hugepage, but it will be split into small
pages during copy-on-write. Userspace hotpatch will do mprotect on code
segment and trigger pmd split, and some users think performance
degradation after hotpatch is unacceptable.
This patch set implements hugetlb support in exec, and solved the
debugging issue.
---
v5: mark new Kconfigs default n and add sysctl knob
v4: rebase to 5.10.0-107.0.0
v3: add MAP_FILE_HUGETLB
v2: fix kabi
Liu Zixian (4):
hugetlb: support private file map
elf: support hugetlb map
enable elf huge map by default
fs: add sysctl knob for exec_hugetlb
arch/arm64/configs/openeuler_defconfig | 2 +
arch/x86/configs/openeuler_defconfig | 2 +
fs/Kconfig | 24 ++++++
fs/binfmt_elf.c | 115 +++++++++++++++++++++++++
fs/exec.c | 4 +
fs/proc/task_mmu.c | 5 ++
include/linux/elf.h | 4 +
include/linux/mm_types.h | 4 +
include/uapi/asm-generic/mman-common.h | 1 +
include/uapi/linux/elf.h | 1 +
kernel/events/core.c | 7 ++
kernel/fork.c | 5 ++
kernel/sysctl.c | 11 +++
mm/hugetlb.c | 25 ++++++
mm/mmap.c | 20 +++++
mm/util.c | 40 +++++++++
16 files changed, 270 insertions(+)
--
2.20.1
1
4

04 Aug '22
From: Guoqing Jiang <jgq516(a)gmail.com>
mainline inclusion
from mainline-v5.14-rc1
commit 10764815ff4728d2c57da677cd5d3dd6f446cf5f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I587H6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
-------------------------------
We introduce a new bioset (io_acct_set) for raid0 and raid5 since they
don't own clone infrastructure to accounting io. And the bioset is added
to mddev instead of to raid0 and raid5 layer, because with this way, we
can put common functions to md.h and reuse them in raid0 and raid5.
Also struct md_io_acct is added accordingly which includes io start_time,
the origin bio and cloned bio. Then we can call bio_{start,end}_io_acct
to get related io status.
Signed-off-by: Guoqing Jiang <jiangguoqing(a)kylinos.cn>
Signed-off-by: Song Liu <song(a)kernel.org>
Conflict:
drivers/md/md.c
drivers/md/md.h
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/md/md.c | 52 ++++++++++++++++++++++++++++++++++++++++++----
drivers/md/md.h | 8 +++++++
drivers/md/raid0.c | 3 +++
drivers/md/raid5.c | 9 ++++++++
4 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index a299fda5b0e9..10d9a8bed604 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2361,7 +2361,8 @@ int md_integrity_register(struct mddev *mddev)
bdev_get_integrity(reference->bdev));
pr_debug("md: data integrity enabled on %s\n", mdname(mddev));
- if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE)) {
+ if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE) ||
+ bioset_integrity_create(&mddev->io_acct_set, BIO_POOL_SIZE)) {
pr_err("md: failed to create integrity pool for %s\n",
mdname(mddev));
return -EINVAL;
@@ -5597,6 +5598,7 @@ static void md_free(struct kobject *ko)
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
kfree(mddev);
}
@@ -5885,7 +5887,13 @@ int md_run(struct mddev *mddev)
if (!bioset_initialized(&mddev->sync_set)) {
err = bioset_init(&mddev->sync_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
if (err)
- return err;
+ goto exit_bio_set;
+ }
+ if (!bioset_initialized(&mddev->io_acct_set)) {
+ err = bioset_init(&mddev->io_acct_set, BIO_POOL_SIZE,
+ offsetof(struct md_io_acct, bio_clone), 0);
+ if (err)
+ goto exit_sync_set;
}
spin_lock(&pers_lock);
@@ -6013,6 +6021,7 @@ int md_run(struct mddev *mddev)
blk_queue_flag_set(QUEUE_FLAG_NONROT, mddev->queue);
else
blk_queue_flag_clear(QUEUE_FLAG_NONROT, mddev->queue);
+ blk_queue_flag_set(QUEUE_FLAG_IO_STAT, mddev->queue);
}
if (pers->sync_request) {
if (mddev->kobj.sd &&
@@ -6062,8 +6071,11 @@ int md_run(struct mddev *mddev)
module_put(pers->owner);
md_bitmap_destroy(mddev);
abort:
- bioset_exit(&mddev->bio_set);
+ bioset_exit(&mddev->io_acct_set);
+exit_sync_set:
bioset_exit(&mddev->sync_set);
+exit_bio_set:
+ bioset_exit(&mddev->bio_set);
return err;
}
EXPORT_SYMBOL_GPL(md_run);
@@ -6288,6 +6300,7 @@ void md_stop(struct mddev *mddev)
__md_stop(mddev);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -8571,9 +8584,40 @@ void md_write_end(struct mddev *mddev)
roundup(jiffies, mddev->safemode_delay) +
mddev->safemode_delay);
}
-
EXPORT_SYMBOL(md_write_end);
+static void md_end_io_acct(struct bio *bio)
+{
+ struct md_io_acct *md_io_acct = bio->bi_private;
+ struct bio *orig_bio = md_io_acct->orig_bio;
+
+ orig_bio->bi_status = bio->bi_status;
+
+ bio_end_io_acct(orig_bio, md_io_acct->start_time);
+ bio_put(bio);
+ bio_endio(orig_bio);
+}
+
+/* used by personalities (raid0 and raid5) to account io stats */
+void md_account_bio(struct mddev *mddev, struct bio **bio)
+{
+ struct md_io_acct *md_io_acct;
+ struct bio *clone;
+
+ if (!blk_queue_io_stat((*bio)->bi_disk->queue))
+ return;
+
+ clone = bio_clone_fast(*bio, GFP_NOIO, &mddev->io_acct_set);
+ md_io_acct = container_of(clone, struct md_io_acct, bio_clone);
+ md_io_acct->orig_bio = *bio;
+ md_io_acct->start_time = bio_start_io_acct(*bio);
+
+ clone->bi_end_io = md_end_io_acct;
+ clone->bi_private = md_io_acct;
+ *bio = clone;
+}
+EXPORT_SYMBOL_GPL(md_account_bio);
+
/* md_allow_write(mddev)
* Calling this ensures that the array is marked 'active' so that writes
* may proceed without blocking. It is important to call this before
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 85177d068322..20c16cfdd6bb 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -491,6 +491,7 @@ struct mddev {
struct bio_set sync_set; /* for sync operations like
* metadata and bitmap writes
*/
+ struct bio_set io_acct_set; /* for raid0 and raid5 io accounting */
/* Generic flush handling.
* The last to finish preflush schedules a worker to submit
@@ -687,6 +688,12 @@ struct md_thread {
void *private;
};
+struct md_io_acct {
+ struct bio *orig_bio;
+ unsigned long start_time;
+ struct bio bio_clone;
+};
+
#define THREAD_WAKEUP 0
static inline void safe_put_page(struct page *p)
@@ -716,6 +723,7 @@ extern void md_write_end(struct mddev *mddev);
extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
extern void md_finish_reshape(struct mddev *mddev);
+void md_account_bio(struct mddev *mddev, struct bio **bio);
extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 35843df15b5e..0312b192106a 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -556,6 +556,9 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
bio = split;
}
+ if (bio->bi_pool != &mddev->bio_set)
+ md_account_bio(mddev, &bio);
+
orig_sector = sector;
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index c82953a3299e..35dacc6e754f 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5487,6 +5487,7 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
sector_t sector = raid_bio->bi_iter.bi_sector;
unsigned chunk_sects = mddev->chunk_sectors;
unsigned sectors = chunk_sects - (sector & (chunk_sects-1));
+ struct r5conf *conf = mddev->private;
if (sectors < bio_sectors(raid_bio)) {
struct r5conf *conf = mddev->private;
@@ -5496,6 +5497,9 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
raid_bio = split;
}
+ if (raid_bio->bi_pool != &conf->bio_split)
+ md_account_bio(mddev, &raid_bio);
+
if (!raid5_read_one_chunk(mddev, raid_bio))
return raid_bio;
@@ -5775,6 +5779,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
DEFINE_WAIT(w);
bool do_prepare;
bool do_flush = false;
+ bool do_clone = false;
if (unlikely(bi->bi_opf & REQ_PREFLUSH)) {
int ret = log_handle_flush_request(conf, bi);
@@ -5803,6 +5808,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
if (rw == READ && mddev->degraded == 0 &&
mddev->reshape_position == MaxSector) {
bi = chunk_aligned_read(mddev, bi);
+ do_clone = true;
if (!bi)
return true;
}
@@ -5817,6 +5823,9 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
last_sector = bio_end_sector(bi);
bi->bi_next = NULL;
+ if (!do_clone)
+ md_account_bio(mddev, &bi);
+
prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
for (; logical_sector < last_sector; logical_sector += RAID5_STRIPE_SECTORS(conf)) {
int previous;
--
2.20.1
1
19
Backport 5.10.115 LTS patches from upstream.
git cherry-pick v5.10.114..v5.10.115~1 -s
Complicts:
Already merged(4):
8a9e7c64f4a0 nfc: replace improper check device_is_registered() in netlink
related functions
1961c5a688ed nfc: nfcmrvl: main: reorder destructive operations in
nfcmrvl_nci_unregister_dev to avoid bugs
879b075a9a36 NFC: netlink: fix sleep in atomic bug when firmware download
timeout
a439819f4797 block-map: add __GFP_ZERO flag for alloc_page in function
bio_copy_kern
Rejected(2):
hinic driver drops related file in the patch:
475237e807a2 hinic: fix bug of wq out of bound access
build failed due to reject of patch "845f44ce3d9f1 net/sched: flower: fix parsing of ethertype following VLAN header":
d8338a7a0957 net/mlx5e: Don't match double-vlan packets if cvlan is not set
Total patches: 70 - 4 - 2 = 64
Andreas Larsson (2):
can: grcan: grcan_probe(): fix broken system id check for errata
workaround needs
can: grcan: only use the NAPI poll budget for RX
Andrei Lalaev (1):
gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
Armin Wolf (1):
hwmon: (adt7470) Fix warning on module removal
Aya Levin (1):
net/mlx5: Fix slab-out-of-bounds while reading resource dump menu
Brian Norris (1):
mmc: core: Set HS clock speed before sending HS CMD13
Cheng Xu (1):
RDMA/siw: Fix a condition race issue in MPA request processing
Chengfeng Ye (1):
firewire: fix potential uaf in outbound_phy_packet_callback()
Codrin Ciubotariu (1):
ASoC: dmaengine: Restore NULL prepare_slave_config() callback
Daniel Hellstrom (1):
can: grcan: use ofdev->dev when allocating DMA memory
David Stevens (1):
iommu/vt-d: Calculate mask for non-aligned flushes
Duoming Zhou (1):
can: grcan: grcan_close(): fix deadlock
Eric Dumazet (1):
net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter()
Filipe Manana (1):
btrfs: always log symlinks in full mode
Frederic Weisbecker (2):
rcu: Fix callbacks processing time limit retaining cond_resched()
rcu: Apply callbacks processing time limit only on softirq
Harry Wentland (1):
drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT
Helge Deller (1):
parisc: Merge model and model name into one line in /proc/cpuinfo
Ido Schimmel (1):
selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface
is operational
Jakob Koschel (1):
firewire: remove check of list iterator against head past the loop
body
Jan Höppner (2):
s390/dasd: Fix read for ESE with blksize < 4k
s390/dasd: Fix read inconsistency for ESE DASD devices
Jann Horn (1):
selftests/seccomp: Don't call read() on TTY from background pgrp
Kyle Huey (1):
KVM: x86/svm: Account for family 17h event renumberings in
amd_pmc_perf_hw_id
Maciej W. Rozycki (1):
MIPS: Fix CP0 counter erratum detection for R4k CPUs
Mark Brown (5):
ASoC: da7219: Fix change notifications for tone generator frequency
ASoC: wm8958: Fix change notifications for DSP controls
ASoC: meson: Fix event generation for AUI ACODEC mux
ASoC: meson: Fix event generation for G12A tohdmi mux
ASoC: meson: Fix event generation for AUI CODEC mux
Mark Zhang (1):
net/mlx5e: Fix the calling of update_buffer_lossy() API
Michael Chan (1):
bnxt_en: Fix unnecessary dropping of RX packets
Mike Snitzer (1):
dm: interlock pending dm_io and dm_wait_for_bios_completion
Moshe Shemesh (1):
net/mlx5: Avoid double clear or set of sync reset requested
Moshe Tal (1):
net/mlx5e: Fix trust state reset in reload
Niels Dossche (1):
firewire: core: extend card->lock in fw_core_handle_bus_reset
Oliver Hartkopp (1):
can: isotp: remove re-binding of bound socket
Pali Rohár (2):
PCI: aardvark: Clear all MSIs at setup
PCI: aardvark: Fix reading MSI interrupt number
Paolo Bonzini (2):
KVM: x86: Do not change ICR on write to APIC_SELF_IPI
KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs
Paul Blakey (1):
net/mlx5e: CT: Fix queued up restore put() executing after relevant ft
release
Puyou Lu (1):
gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask
not set)
Ricky WU (1):
mmc: rtsx: add 74 Clocks in power on flow
Sandipan Das (1):
kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural
PMU
Sergey Shtylyov (1):
smsc911x: allow using IRQ0
Shaik Sajida Bhanu (1):
mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC
Shravya Kumbham (1):
net: emaclite: Add error handling for of_address_to_resource()
Somnath Kotur (1):
bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag
Stefan Haberland (2):
s390/dasd: fix data corruption for ESE devices
s390/dasd: prevent double format of tracks for ESE devices
Takashi Sakamoto (1):
ALSA: fireworks: fix wrong return count shorter than expected by 4
bytes
Tan Tee Min (1):
net: stmmac: disable Split Header (SPH) for Intel platforms
Thomas Pfaff (1):
genirq: Synchronize interrupt thread startup
Trond Myklebust (2):
Revert "SUNRPC: attempt AF_LOCAL connect on setup"
NFSv4: Don't invalidate inode attributes on delegation return
Vladimir Oltean (1):
selftests: ocelot: tc_flower_chains: specify conform-exceed action for
policer
Wanpeng Li (2):
x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume
KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is
advertised
Yang Yingliang (4):
net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init()
net: dsa: mt7530: add missing of_node_put() in mt7530_setup()
net: stmmac: dwmac-sun8i: add missing of_node_put() in
sun8i_dwmac_register_mdio_mux()
net: cpsw: add missing of_node_put() in cpsw_probe_dt()
Zihao Wang (1):
ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers
arch/mips/include/asm/timex.h | 8 ++--
arch/mips/kernel/time.c | 11 ++---
arch/parisc/kernel/processor.c | 3 +-
arch/x86/kernel/kvm.c | 13 ++++++
arch/x86/kvm/cpuid.c | 5 ++
arch/x86/kvm/lapic.c | 10 ++--
arch/x86/kvm/mmu/mmu.c | 2 +
arch/x86/kvm/svm/pmu.c | 28 +++++++++--
drivers/firewire/core-card.c | 3 ++
drivers/firewire/core-cdev.c | 4 +-
drivers/firewire/core-topology.c | 9 ++--
drivers/firewire/core-transaction.c | 30 ++++++------
drivers/firewire/sbp2.c | 13 +++---
drivers/gpio/gpio-pca953x.c | 4 +-
drivers/gpio/gpiolib-of.c | 2 +-
.../gpu/drm/amd/display/dc/core/dc_link_dp.c | 2 +-
drivers/hwmon/adt7470.c | 4 +-
drivers/infiniband/sw/siw/siw_cm.c | 7 +--
drivers/iommu/intel/iommu.c | 27 +++++++++--
drivers/md/dm.c | 8 +++-
drivers/mmc/core/mmc.c | 23 ++++++++--
drivers/mmc/host/rtsx_pci_sdmmc.c | 31 +++++++++----
drivers/mmc/host/sdhci-msm.c | 42 +++++++++++++++++
drivers/net/can/grcan.c | 46 ++++++++++---------
drivers/net/dsa/mt7530.c | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 13 ++++--
drivers/net/ethernet/mediatek/mtk_sgmii.c | 1 +
.../mellanox/mlx5/core/diag/rsc_dump.c | 31 ++++++++++---
.../mellanox/mlx5/core/en/port_buffer.c | 4 +-
.../ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++
.../ethernet/mellanox/mlx5/core/en_dcbnl.c | 10 ++++
.../ethernet/mellanox/mlx5/core/fw_reset.c | 28 +++++++----
drivers/net/ethernet/smsc/smsc911x.c | 2 +-
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 1 +
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 5 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 ++++--
drivers/pci/controller/pci-aardvark.c | 16 +++----
drivers/s390/block/dasd.c | 18 ++++++--
drivers/s390/block/dasd_eckd.c | 28 ++++++++---
drivers/s390/block/dasd_int.h | 14 ++++++
fs/btrfs/tree-log.c | 14 +++++-
fs/nfs/nfs4proc.c | 12 ++++-
include/linux/stmmac.h | 1 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 2 +
kernel/irq/manage.c | 39 ++++++++++++----
kernel/rcu/tree.c | 32 +++++++------
net/can/isotp.c | 22 ++-------
net/ipv4/igmp.c | 9 ++--
net/sunrpc/xprtsock.c | 3 --
sound/firewire/fireworks/fireworks_hwdep.c | 1 +
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/codecs/da7219.c | 14 ++++--
sound/soc/codecs/wm8958-dsp2.c | 8 ++--
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
sound/soc/meson/g12a-tohdmitx.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +--
.../drivers/net/ocelot/tc_flower_chains.sh | 2 +-
.../net/forwarding/mirror_gre_bridge_1q.sh | 3 ++
tools/testing/selftests/seccomp/seccomp_bpf.c | 10 ++--
63 files changed, 501 insertions(+), 215 deletions(-)
--
2.20.1
1
64
Backport 5.10.114 LTS patches from upstream.
git cherry-pick v5.10.113..v5.10.114~1 -s
Complicts:
Already merged(5):
54c028cfc496 floppy: disable FDRAWCMD by default
e3ec78d82d48 net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
929c30c02de4 net: hns3: add validity check for message data length
9eb25e00f59b net: hns3: add return value for mailbox handling in PF
1781beb87935 tls: Skip tls_append_frag on zero copy size
Implementation changed(already merged, use mainline version b98535d09179, 1):
585ef03c9e79 ext4: fix bug_on in start_this_handle during umount filesystem
Defered(3, kabi changed):
3c464db03c12 tcp: ensure to use the most recently sent skb when filling the rate
sample
6f2bf9c5ddfe mtd: fix 'part' field data corruption in mtd_info
616d354fb9e8 hex2bin: make the function hex_to_bin constant-time
Total patches: 129 - 5 - 1 - 3 = 120
Adam Ford (2):
ARM: dts: am3517-evm: Fix misc pinmuxing
ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35
Alexey Kardashevskiy (1):
powerpc/perf: Fix 32bit compile
Baruch Siach (1):
net: phy: marvell10g: fix return value on error
Borislav Petkov (1):
x86/cpu: Load microcode during restore_processor_state()
Bruno Thomsen (1):
USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader
Chao Song (1):
ASoC: Intel: soc-acpi: correct device endpoints for max98373
Christian Hewitt (2):
arm64: dts: meson: remove CPU opps below 1GHz for G12B boards
arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards
Christophe JAILLET (1):
bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create()
Chuanhong Guo (1):
mtd: rawnand: fix ecc parameters for mt7622
Claudiu Beznea (1):
ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name
Damien Le Moal (2):
zonefs: Fix management of open zones
zonefs: Clear inode information flags on inode creation
Dan Vacura (1):
usb: gadget: uvc: Fix crash when encoding data for usb request
Daniel Starke (13):
tty: n_gsm: fix restart handling via CLD command
tty: n_gsm: fix decoupled mux resource
tty: n_gsm: fix mux cleanup after unregister tty device
tty: n_gsm: fix wrong signal octet encoding in convergence layer type
2
tty: n_gsm: fix malformed counter for out of frame data
tty: n_gsm: fix insufficient txframe size
tty: n_gsm: fix wrong DLCI release order
tty: n_gsm: fix missing explicit ldisc flush
tty: n_gsm: fix wrong command retry handling
tty: n_gsm: fix wrong command frame length field encoding
tty: n_gsm: fix reset fifo race condition
tty: n_gsm: fix incorrect UA handling
tty: n_gsm: fix software flow control handling
Daniele Palmas (1):
USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions
Dany Madden (1):
Revert "ibmvnic: Add ethtool private flag for driver-defined queue
limits"
David Yat Sin (1):
drm/amdkfd: Fix GWS queue count
Dinh Nguyen (1):
net: ethernet: stmmac: fix write to sgmii_adapter_base
Duoming Zhou (1):
drivers: net: hippi: Fix deadlock in rr_close()
Eric Dumazet (2):
tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT
tcp: make sure treq->af_specific is initialized
Evan Green (1):
xhci: Enable runtime PM on second Alderlake controller
Eyal Birger (1):
bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit
lwt hook
Fabio Estevam (2):
ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue
arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock
Fawzi Khaber (1):
iio: imu: inv_icm42600: Fix I2C init possible nack
Florian Westphal (1):
netfilter: nft_socket: only do sk lookups when indev is available
Francesco Ruggeri (1):
tcp: md5: incorrect tcp_header_len for incoming connections
Geert Uytterhoeven (1):
memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode
Greg Kroah-Hartman (1):
lightnvm: disable the subsystem
Guo Ren (1):
riscv: patch_text: Fixup last cpu should be master
H. Nikolaus Schaller (1):
ARM: dts: Fix mmc order for omap3-gta04
Hangyu Hua (1):
usb: misc: fix improper handling of refcount in uss720_probe()
Heikki Krogerus (2):
usb: typec: ucsi: Fix reuse of completion structure
usb: typec: ucsi: Fix role swapping
Henry Lin (1):
xhci: stop polling roothubs after shutdown
Imre Deak (1):
drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses
Johan Hovold (1):
serial: imx: fix overrun interrupts in DMA mode
Jonathan Lemon (1):
net: bcmgenet: hide status block before TX timestamping
Kees Cook (2):
USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS
thermal: int340x: Fix attr.show callback prototype
Krzysztof Kozlowski (2):
pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config
phy: samsung: exynos5250-sata: fix missing device put in probe error
paths
Leon Romanovsky (1):
ixgbe: ensure IPsec VF<->PF compatibility
Lijun Pan (1):
ibmvnic: fix miscellaneous checks
Luca Ceresoli (1):
pinctrl: rockchip: fix RK3308 pinmux bits
Lv Ruyi (1):
pinctrl: pistachio: fix use of irq_of_parse_and_map()
Maciej W. Rozycki (2):
serial: 8250: Also set sticky MCR bits in console restoration
serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
Macpaul Lin (1):
usb: mtu3: fix USB 3.0 dual-role-switch from device to host
Manish Chopra (1):
bnx2x: fix napi API usage sequence
Marek Vasut (2):
pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs
in EOI
pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ
requested
Mark Brown (1):
ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek
Martin Blumenstingl (1):
net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK
Mathias Nyman (1):
xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms
Max Krummenacher (1):
ARM: dts: imx6ull-colibri: fix vqmmc regulator
Miaoqian Lin (8):
phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe
ARM: OMAP2+: Fix refcount leak in omap_gic_of_init
phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks
phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe
phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe
mtd: rawnand: Fix return value check of wait_for_completion_timeout
net: dsa: Add missing of_node_put() in dsa_port_link_register_of
drm/amd/display: Fix memory leak in dcn21_clock_source_create
Michael Hennerich (1):
iio: dac: ad5446: Fix read_raw not returning set value
Mikulas Patocka (2):
hex2bin: fix access beyond string end
x86: __memcpy_flushcache: fix wrong alignment if size > 2^32
Namhyung Kim (3):
perf symbol: Pass is_kallsyms to symbols__fixup_end()
perf symbol: Update symbols__fixup_end()
perf symbol: Remove arch__symbols__fixup_end()
Nikolay Aleksandrov (1):
wireguard: device: check for metadata_dst with skb_valid_dst()
Oliver Neukum (2):
USB: quirks: add a Realtek card reader
USB: quirks: add STRING quirk for VCOM device
Pablo Neira Ayuso (1):
netfilter: nft_set_rbtree: overlap detection with element re-addition
after deletion
Pavel Skripkin (1):
video: fbdev: udlfb: properly check endpoint type
Pawel Laszczak (1):
usb: cdns3: Fix issue for clear halt endpoint
Peilin Ye (3):
ip_gre: Make o_seqno start from 0 in native mode
ip6_gre: Make o_seqno start from 0 in native mode
ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
Pengcheng Yang (2):
ipvs: correctly print the memory size of ip_vs_conn_tab
tcp: fix F-RTO may not work correctly when receiving DSACK
Ronnie Sahlberg (1):
cifs: destage any unwritten data to the server before calling
copychunk_write
Sean Anderson (1):
usb: phy: generic: Get the vbus supply
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV32-WA/MV32-WB
Sven Peter (1):
usb: dwc3: Try usb-role-switch first in dwc3_drd_init
Tejun Heo (1):
iocost: don't reset the inuse weight of under-weighted debtors
Thinh Nguyen (3):
usb: dwc3: core: Fix tx/rx threshold settings
usb: dwc3: core: Only handle soft-reset in DCTL
usb: dwc3: gadget: Return proper request status
Thomas Gleixner (1):
x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests
Tong Zhang (1):
iio:imu:bmi160: disable regulator in error path
Tony Lindgren (1):
bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific
Vijayavardhan Vennapusa (1):
usb: gadget: configfs: clear deactivation flag in
configfs_composite_unbind()
Wang Qing (1):
arch_topology: Do not set llc_sibling if llc_id is invalid
Weitao Wang (1):
USB: Fix xhci event ring dequeue pointer ERDP update issue
Xiaobing Luo (1):
cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe
Xin Long (1):
sctp: check asoc strreset_chunk in sctp_generate_reconf_event
Yang Yingliang (2):
clk: sunxi: sun9i-mmc: check return value after calling
platform_get_resource()
net: fec: add missing of_node_put() in fec_enet_init_stop_mode()
YueHaibing (1):
pinctrl: mediatek: moore: Fix build error
Zheyu Ma (2):
iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
ASoC: wm8731: Disable the regulator when probing fails
Zizhuang Deng (1):
iio: dac: ad5592r: Fix the missing return value.
Zqiang (1):
kasan: prevent cpu_quarantine corruption when CPU offline and cache
shrink occur at same time
liuyacan (1):
net/smc: sync err code when tcp connection was refused
arch/arm/boot/dts/am3517-evm.dts | 45 +++-
arch/arm/boot/dts/am3517-som.dtsi | 9 +
arch/arm/boot/dts/at91-sama5d4_xplained.dts | 4 +-
arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 6 +
arch/arm/boot/dts/imx6qdl-apalis.dtsi | 10 +-
arch/arm/boot/dts/imx6ull-colibri.dtsi | 2 +-
.../boot/dts/logicpd-som-lv-35xx-devkit.dts | 15 ++
.../boot/dts/logicpd-som-lv-37xx-devkit.dts | 15 ++
arch/arm/boot/dts/logicpd-som-lv.dtsi | 15 --
arch/arm/boot/dts/omap3-gta04.dtsi | 2 +
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-omap2/omap4-common.c | 2 +
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 40 ----
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 40 ----
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 --
.../boot/dts/freescale/imx8mn-ddr4-evk.dts | 4 +
arch/powerpc/perf/Makefile | 4 +-
arch/riscv/kernel/patch.c | 2 +-
arch/x86/include/asm/microcode.h | 2 +
arch/x86/kernel/cpu/microcode/core.c | 6 +-
arch/x86/lib/usercopy_64.c | 2 +-
arch/x86/pci/xen.c | 6 +-
arch/x86/power/cpu.c | 10 +-
block/blk-iocost.c | 12 +-
drivers/base/arch_topology.c | 2 +-
drivers/bus/sunxi-rsb.c | 2 +
drivers/bus/ti-sysc.c | 16 +-
drivers/clk/sunxi/clk-sun9i-mmc.c | 2 +
drivers/cpufreq/sun50i-cpufreq-nvmem.c | 4 +-
.../drm/amd/amdkfd/kfd_device_queue_manager.c | 83 ++++----
.../drm/amd/display/dc/dcn21/dcn21_resource.c | 1 +
drivers/gpu/drm/i915/i915_reg.h | 2 +-
drivers/iio/dac/ad5446.c | 2 +-
drivers/iio/dac/ad5592r-base.c | 2 +-
drivers/iio/imu/bmi160/bmi160_core.c | 20 +-
.../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 15 +-
drivers/iio/magnetometer/ak8975.c | 1 +
drivers/lightnvm/Kconfig | 2 +-
drivers/memory/renesas-rpc-if.c | 60 ++++--
drivers/mtd/nand/raw/mtk_ecc.c | 12 +-
drivers/mtd/nand/raw/sh_flctl.c | 14 +-
drivers/net/dsa/lantiq_gswip.c | 3 -
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 7 +
drivers/net/ethernet/freescale/fec_main.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.c | 144 ++++---------
drivers/net/ethernet/ibm/ibmvnic.h | 6 -
.../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 3 +-
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 12 +-
drivers/net/hippi/rrunner.c | 2 +
drivers/net/phy/marvell10g.c | 2 +-
drivers/net/wireguard/device.c | 3 +-
drivers/phy/motorola/phy-mapphone-mdm6600.c | 3 +-
drivers/phy/samsung/phy-exynos5250-sata.c | 21 +-
drivers/phy/ti/phy-am654-serdes.c | 2 +-
drivers/phy/ti/phy-omap-usb2.c | 2 +-
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/pinctrl-pistachio.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 45 ++--
drivers/pinctrl/samsung/Kconfig | 11 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 23 ++-
.../intel/int340x_thermal/int3400_thermal.c | 4 +-
drivers/tty/n_gsm.c | 194 ++++++++++--------
drivers/tty/serial/8250/8250_pci.c | 8 +-
drivers/tty/serial/8250/8250_port.c | 2 +-
drivers/tty/serial/imx.c | 2 +-
drivers/usb/cdns3/gadget.c | 7 +-
drivers/usb/core/quirks.c | 6 +
drivers/usb/dwc3/core.c | 11 +-
drivers/usb/dwc3/drd.c | 11 +-
drivers/usb/dwc3/gadget.c | 31 ++-
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/uvc_queue.c | 2 +
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-pci.c | 4 +-
drivers/usb/host/xhci-ring.c | 2 +
drivers/usb/host/xhci.c | 11 +
drivers/usb/misc/uss720.c | 3 +-
drivers/usb/mtu3/mtu3_dr.c | 6 +-
drivers/usb/phy/phy-generic.c | 7 +
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/option.c | 12 ++
drivers/usb/serial/whiteheat.c | 5 +-
drivers/usb/typec/ucsi/ucsi.c | 24 ++-
drivers/video/fbdev/udlfb.c | 14 +-
fs/cifs/smb2ops.c | 8 +
fs/zonefs/super.c | 46 ++++-
include/memory/renesas-rpc-if.h | 1 +
include/net/ip6_tunnel.h | 2 +-
include/net/ip_tunnels.h | 2 +-
include/net/tcp.h | 2 +
lib/hexdump.c | 9 +-
mm/kasan/quarantine.c | 7 +
net/core/lwt_bpf.c | 7 +-
net/dsa/port.c | 2 +
net/ipv4/ip_gre.c | 12 +-
net/ipv4/syncookies.c | 8 +-
net/ipv4/tcp_input.c | 15 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 1 +
net/ipv6/ip6_gre.c | 16 +-
net/ipv6/syncookies.c | 3 +-
net/netfilter/ipvs/ip_vs_conn.c | 2 +-
net/netfilter/nft_set_rbtree.c | 6 +-
net/netfilter/nft_socket.c | 52 +++--
net/sctp/sm_sideeffect.c | 4 +
net/smc/af_smc.c | 2 +
sound/soc/codecs/wm8731.c | 19 +-
.../intel/common/soc-acpi-intel-tgl-match.c | 4 +-
tools/perf/arch/arm64/util/Build | 1 -
tools/perf/arch/arm64/util/machine.c | 27 ---
tools/perf/arch/s390/util/machine.c | 16 --
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.c | 37 +++-
tools/perf/util/symbol.h | 3 +-
115 files changed, 879 insertions(+), 632 deletions(-)
delete mode 100644 tools/perf/arch/arm64/util/machine.c
--
2.20.1
1
120

[PATCH openEuler-1.0-LTS] rcu: Set a maximum limit for back-to-back callback invocation
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: "Paul E. McKenney" <paulmck(a)linux.ibm.com>
mainline inclusion
from mainline-v5.3-rc1
commit d5a9a8c3bc8068f2e5dfba30150ac09b596b461a
category: bugfix
bugzilla: 187356, https://gitee.com/openeuler/kernel/issues/I5KOZ5
CVE: NA
---------------------------
Currently, if a CPU has more than 10,000 callbacks pending, it will
increase rdp->blimit to LONG_MAX. If you are lucky, LONG_MAX is only
about two billion, but this is still a bit too many callbacks to invoke
back-to-back while otherwise ignoring the world.
This commit therefore sets a maximum limit of DEFAULT_MAX_RCU_BLIMIT,
which is set to 10,000, for rdp->blimit.
Reported-by: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Signed-off-by: Paul E. McKenney <paulmck(a)linux.ibm.com>
Conflicts:
kernel/rcu/tree.c
Signed-off-by: Zhen Lei <thunder.leizhen(a)huawei.com>
Reviewed-by: Cheng Jian <cj.chengjian(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/rcu/tree.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index ea05c59096a2..a0dc5385bcbc 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -490,7 +490,8 @@ void rcu_all_qs(void)
}
EXPORT_SYMBOL_GPL(rcu_all_qs);
-#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch. */
+#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch ... */
+#define DEFAULT_MAX_RCU_BLIMIT 10000 /* ... even during callback flood. */
static long blimit = DEFAULT_RCU_BLIMIT;
#define DEFAULT_RCU_QHIMARK 10000 /* If this many pending, ignore blimit. */
static long qhimark = DEFAULT_RCU_QHIMARK;
@@ -2604,7 +2605,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
/* Reinstate batch limit if we have worked down the excess. */
count = rcu_segcblist_n_cbs(&rdp->cblist);
- if (rdp->blimit == LONG_MAX && count <= qlowmark)
+ if (rdp->blimit >= DEFAULT_MAX_RCU_BLIMIT && count <= qlowmark)
rdp->blimit = blimit;
/* Reset ->qlen_last_fqs_check trigger if enough CBs have drained. */
@@ -2940,7 +2941,7 @@ static void __call_rcu_core(struct rcu_state *rsp, struct rcu_data *rdp,
rcu_accelerate_cbs_unlocked(rsp, rdp->mynode, rdp);
} else {
/* Give the grace period a kick. */
- rdp->blimit = LONG_MAX;
+ rdp->blimit = DEFAULT_MAX_RCU_BLIMIT;
if (rsp->n_force_qs == rdp->n_force_qs_snap &&
rcu_segcblist_first_pend_cb(&rdp->cblist) != head)
force_quiescent_state(rsp);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] mm: Fix page counter mismatch in shmem_mfill_atomic_pte
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: Ma Wupeng <mawupeng1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JT6V
CVE: NA
--------------------------------
shmem_mfill_atomic_pte() wrongly called mem_cgroup_cancel_charge() in
"success" path, it should mem_cgroup_uncharge() to dec memory counter
instead.
mem_cgroup_cancel_charge() should only be used if this transaction is
unsuccessful and mem_cgroup_uncharge() is used to do this if this
transaction succeed.
This will lead to page->memcg not null and will uncharge one more in
put_page(). The page counter will underflow to maximum value and trigger
oom to kill all process include sshd and leave system unaccessible.
page->memcg is set in the following path:
mem_cgroup_commit_charge
commit_charge
page->mem_cgroup = memcg;
extra uncharge will be done in the following path:
put_page
__put_page
__put_single_page
mem_cgroup_uncharge
if (!page->mem_cgroup) <-- should return
return
uncharge_page
uncharge_batch
To fix this, call mem_cgroup_commit_charge() at the end of this transaction
to make sure this transaction is really finished.
Fixes: 4c27fe4c4c84 ("userfaultfd: shmem: add shmem_mcopy_atomic_pte for userfaultfd support")
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/shmem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index 34981c7aad14..e300395fe308 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2464,8 +2464,6 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm,
if (ret)
goto out_release_uncharge;
- mem_cgroup_commit_charge(page, memcg, false, false);
-
_dst_pte = mk_pte(page, dst_vma->vm_page_prot);
if (dst_vma->vm_flags & VM_WRITE)
_dst_pte = pte_mkwrite(pte_mkdirty(_dst_pte));
@@ -2491,6 +2489,8 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm,
if (!pte_none(*dst_pte))
goto out_release_uncharge_unlock;
+ mem_cgroup_commit_charge(page, memcg, false, false);
+
lru_cache_add_anon(page);
spin_lock_irq(&info->lock);
--
2.25.1
1
0

04 Aug '22
From: Damien Le Moal <damien.lemoal(a)wdc.com>
mainline inclusion
from mainline-v5.8-rc5
commit cb551b8dc079d2ef189145782627c99cb68c0255
category: bugfix
bugzilla: 187287, https://gitee.com/openeuler/kernel/issues/I5JQML
CVE: NA
--------------------------------
In BRM_status_show(), if the condition "!ioc->is_warpdrive" tested on entry
to the function is true, a "goto out" is called. This results in unlocking
ioc->pci_access_mutex without this mutex lock being taken. This generates
the following splat:
[ 1148.539883] mpt3sas_cm2: BRM_status_show: BRM attribute is only for warpdrive
[ 1148.547184]
[ 1148.548708] =====================================
[ 1148.553501] WARNING: bad unlock balance detected!
[ 1148.558277] 5.8.0-rc3+ #827 Not tainted
[ 1148.562183] -------------------------------------
[ 1148.566959] cat/5008 is trying to release lock (&ioc->pci_access_mutex) at:
[ 1148.574035] [<ffffffffc070b7a3>] BRM_status_show+0xd3/0x100 [mpt3sas]
[ 1148.580574] but there are no more locks to release!
[ 1148.585524]
[ 1148.585524] other info that might help us debug this:
[ 1148.599624] 3 locks held by cat/5008:
[ 1148.607085] #0: ffff92aea3e392c0 (&p->lock){+.+.}-{3:3}, at: seq_read+0x34/0x480
[ 1148.618509] #1: ffff922ef14c4888 (&of->mutex){+.+.}-{3:3}, at: kernfs_seq_start+0x2a/0xb0
[ 1148.630729] #2: ffff92aedb5d7310 (kn->active#224){.+.+}-{0:0}, at: kernfs_seq_start+0x32/0xb0
[ 1148.643347]
[ 1148.643347] stack backtrace:
[ 1148.655259] CPU: 73 PID: 5008 Comm: cat Not tainted 5.8.0-rc3+ #827
[ 1148.665309] Hardware name: HGST H4060-S/S2600STB, BIOS SE5C620.86B.02.01.0008.031920191559 03/19/2019
[ 1148.678394] Call Trace:
[ 1148.684750] dump_stack+0x78/0xa0
[ 1148.691802] lock_release.cold+0x45/0x4a
[ 1148.699451] __mutex_unlock_slowpath+0x35/0x270
[ 1148.707675] BRM_status_show+0xd3/0x100 [mpt3sas]
[ 1148.716092] dev_attr_show+0x19/0x40
[ 1148.723664] sysfs_kf_seq_show+0x87/0x100
[ 1148.731193] seq_read+0xbc/0x480
[ 1148.737882] vfs_read+0xa0/0x160
[ 1148.744514] ksys_read+0x58/0xd0
[ 1148.751129] do_syscall_64+0x4c/0xa0
[ 1148.757941] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 1148.766240] RIP: 0033:0x7f1230566542
[ 1148.772957] Code: Bad RIP value.
[ 1148.779206] RSP: 002b:00007ffeac1bcac8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[ 1148.790063] RAX: ffffffffffffffda RBX: 0000000000020000 RCX: 00007f1230566542
[ 1148.800284] RDX: 0000000000020000 RSI: 00007f1223460000 RDI: 0000000000000003
[ 1148.810474] RBP: 00007f1223460000 R08: 00007f122345f010 R09: 0000000000000000
[ 1148.820641] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000000000
[ 1148.830728] R13: 0000000000000003 R14: 0000000000020000 R15: 0000000000020000
Fix this by returning immediately instead of jumping to the out label.
Link: https://lore.kernel.org/r/20200701085254.51740-1-damien.lemoal@wdc.com
Reviewed-by: Johannes Thumshirn <johannes.thumshirn(a)wdc.com>
Acked-by: Sreekanth Reddy <sreekanth.reddy(a)broadcom.com>
Signed-off-by: Damien Le Moal <damien.lemoal(a)wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
Conflict:
drivers/scsi/mpt3sas/mpt3sas_ctl.c
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/mpt3sas/mpt3sas_ctl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
index 772d78d92d44..90060af097cc 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
@@ -2965,7 +2965,7 @@ _ctl_BRM_status_show(struct device *cdev, struct device_attribute *attr,
if (!ioc->is_warpdrive) {
pr_err(MPT3SAS_FMT "%s: BRM attribute is only for"
" warpdrive\n", ioc->name, __func__);
- goto out;
+ return 0;
}
/* pci_access_mutex lock acquired by sysfs show path */
mutex_lock(&ioc->pci_access_mutex);
--
2.25.1
1
0
您好!
Kernel SIG 邀请您参加 2022-08-05 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler kernel SIG例会
会议内容:
1、arm64:support SME(Scalable Matrix Extension)特性回合评审
2、rust for openEuler特性回合评审
会议链接:https://us06web.zoom.us/j/89651338599?pwd=RUMzN1B6WStiMXVwcEdZZVYxTWRmdz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-05 14:00,
The subject of the conference is openEuler kernel SIG例会,
Summary:
1、arm64:support SME(Scalable Matrix Extension)特性回合评审
2、rust for openEuler特性回合评审
You can join the meeting at https://us06web.zoom.us/j/89651338599?pwd=RUMzN1B6WStiMXVwcEdZZVYxTWRmdz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] io-wq: Switch io_wqe_worker's fs before releasing request
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187369, https://gitee.com/openeuler/kernel/issues/I5K66O
CVE: NA
--------------------------------
Following process triggers an use-after-free problem while iterating
every process's fs:
main
fd = setup_iouring
fork => main' // task->fs->users = 1
submit(fd, STATX, async)
id->fs = current->fs
req->work.identity = id
io_submit_sqes
...
io_grab_identity
id = req->work.identity
id->fs->users++ // fs->users = 2
io_wqe_worker
current->fs = work->identity->fs
io_req_clean_work
fs = req->work.identity->fs
--fs->users // fs->user = 1
main' exit
exit_fs
--fs->users // fs->user = 0
free_fs_struct(fs) // FREE fs
pivot_root
chroot_fs_refs
do_each_thread(g, p) {
fs = p->fs // io_wqe_worker->fs
if (fs)
spin_lock(&fs->lock) // UAF!
}
io_wqe_worker
io_worker_exit
__io_worker_unuse
if (current->fs != worker->restore_fs)
current->fs = worker->restore_fs
Task's fs_struct is used in do_work() and destroyed in free_work(),
this problem can be fixed by switching io_wqe_worker's fs before
releasing request.
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io-wq.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/io-wq.c b/fs/io-wq.c
index b6e311e57b47..67d157bcf2fb 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -534,6 +534,8 @@ static void io_worker_handle_work(struct io_worker *worker)
linked = NULL;
}
io_assign_current_work(worker, work);
+ if (current->fs != worker->restore_fs)
+ current->fs = worker->restore_fs;
wq->free_work(old_work);
if (linked)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] ath9k: fix use-after-free in ath9k_hif_usb_rx_cb
by Yongqiang Liu 03 Aug '22
by Yongqiang Liu 03 Aug '22
03 Aug '22
From: Pavel Skripkin <paskripkin(a)gmail.com>
mainline inclusion
from linux-next
commit 0ac4827f78c7ffe8eef074bc010e7e34bc22f533
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I58DFB
CVE: CVE-2022-1679
--------------------------------
Syzbot reported use-after-free Read in ath9k_hif_usb_rx_cb() [0]. The
problem was in incorrect htc_handle->drv_priv initialization.
Probable call trace which can trigger use-after-free:
ath9k_htc_probe_device()
/* htc_handle->drv_priv = priv; */
ath9k_htc_wait_for_target() <--- Failed
ieee80211_free_hw() <--- priv pointer is freed
<IRQ>
...
ath9k_hif_usb_rx_cb()
ath9k_hif_usb_rx_stream()
RX_STAT_INC() <--- htc_handle->drv_priv access
In order to not add fancy protection for drv_priv we can move
htc_handle->drv_priv initialization at the end of the
ath9k_htc_probe_device() and add helper macro to make
all *_STAT_* macros NULL safe, since syzbot has reported related NULL
deref in that macros [1]
Link: https://syzkaller.appspot.com/bug?id=6ead44e37afb6866ac0c7dd121b4ce07cb665f… [0]
Link: https://syzkaller.appspot.com/bug?id=b8101ffcec107c0567a0cd8acbbacec91e9ee8… [1]
Fixes: fb9987d0f748 ("ath9k_htc: Support for AR9271 chipset.")
Reported-and-tested-by: syzbot+03110230a11411024147(a)syzkaller.appspotmail.com
Reported-and-tested-by: syzbot+c6dde1f690b60e0b9fbe(a)syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin(a)gmail.com>
Acked-by: Toke Høiland-Jørgensen <toke(a)toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo(a)quicinc.com>
Link: https://lore.kernel.org/r/d57bbedc857950659bfacac0ab48790c1eda00c8.16551457…
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/wireless/ath/ath9k/htc.h | 10 +++++-----
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 3 ++-
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 9f64e32381f9..81107100e368 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -325,11 +325,11 @@ static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
}
#ifdef CONFIG_ATH9K_HTC_DEBUGFS
-
-#define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
-#define TX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c += a)
-#define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c++)
-#define RX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c += a)
+#define __STAT_SAFE(expr) (hif_dev->htc_handle->drv_priv ? (expr) : 0)
+#define TX_STAT_INC(c) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
+#define TX_STAT_ADD(c, a) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.tx_stats.c += a)
+#define RX_STAT_INC(c) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c++)
+#define RX_STAT_ADD(c, a) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c += a)
#define CAB_STAT_INC priv->debug.tx_stats.cab_queued++
#define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++)
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index 214c68269a69..e3a6f48dbd8c 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -945,7 +945,6 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
priv->hw = hw;
priv->htc = htc_handle;
priv->dev = dev;
- htc_handle->drv_priv = priv;
SET_IEEE80211_DEV(hw, priv->dev);
ret = ath9k_htc_wait_for_target(priv);
@@ -966,6 +965,8 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
if (ret)
goto err_init;
+ htc_handle->drv_priv = priv;
+
return 0;
err_init:
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Revert "iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping()"
by Yongqiang Liu 03 Aug '22
by Yongqiang Liu 03 Aug '22
03 Aug '22
From: Zhang Zekun <zhangzekun11(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187358, https://gitee.com/openeuler/kernel/issues/I5KD2A
CVE: NA
---------------------------------
This reverts commit 75624b5bc0485778aef9f46ebbf5e5df3c0d054c.
This patch could cause double-free problem, when 'irqdomain' is
failed to add, in which case, irq_domain_free_fwnode(fn) will be
called twice.
Signed-off-by: Zhang Zekun <zhangzekun11(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/iommu/intel_irq_remapping.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index 276005451914..967450bd421a 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -539,7 +539,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
irq_domain_free_fwnode(fn);
if (!iommu->ir_domain) {
pr_err("IR%d: failed to allocate irqdomain\n", iommu->seq_id);
- goto out_free_fwnode;
+ goto out_free_bitmap;
}
iommu->ir_msi_domain =
arch_create_remap_msi_irq_domain(iommu->ir_domain,
@@ -563,7 +563,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
if (dmar_enable_qi(iommu)) {
pr_err("Failed to enable queued invalidation\n");
- goto out_free_ir_domain;
+ goto out_free_bitmap;
}
}
@@ -587,14 +587,6 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
return 0;
-out_free_ir_domain:
- if (iommu->ir_msi_domain)
- irq_domain_remove(iommu->ir_msi_domain);
- iommu->ir_msi_domain = NULL;
- irq_domain_remove(iommu->ir_domain);
- iommu->ir_domain = NULL;
-out_free_fwnode:
- irq_domain_free_fwnode(fn);
out_free_bitmap:
kfree(bitmap);
out_free_pages:
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS 01/20] md: add io accounting for raid0 and raid5
by Zheng Zengkai 02 Aug '22
by Zheng Zengkai 02 Aug '22
02 Aug '22
From: Guoqing Jiang <jgq516(a)gmail.com>
mainline inclusion
from mainline-v5.14-rc1
commit 10764815ff4728d2c57da677cd5d3dd6f446cf5f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I587H6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
-------------------------------
We introduce a new bioset (io_acct_set) for raid0 and raid5 since they
don't own clone infrastructure to accounting io. And the bioset is added
to mddev instead of to raid0 and raid5 layer, because with this way, we
can put common functions to md.h and reuse them in raid0 and raid5.
Also struct md_io_acct is added accordingly which includes io start_time,
the origin bio and cloned bio. Then we can call bio_{start,end}_io_acct
to get related io status.
Signed-off-by: Guoqing Jiang <jiangguoqing(a)kylinos.cn>
Signed-off-by: Song Liu <song(a)kernel.org>
Conflict:
drivers/md/md.c
drivers/md/md.h
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/md/md.c | 52 ++++++++++++++++++++++++++++++++++++++++++----
drivers/md/md.h | 8 +++++++
drivers/md/raid0.c | 3 +++
drivers/md/raid5.c | 9 ++++++++
4 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index a299fda5b0e9..10d9a8bed604 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2361,7 +2361,8 @@ int md_integrity_register(struct mddev *mddev)
bdev_get_integrity(reference->bdev));
pr_debug("md: data integrity enabled on %s\n", mdname(mddev));
- if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE)) {
+ if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE) ||
+ bioset_integrity_create(&mddev->io_acct_set, BIO_POOL_SIZE)) {
pr_err("md: failed to create integrity pool for %s\n",
mdname(mddev));
return -EINVAL;
@@ -5597,6 +5598,7 @@ static void md_free(struct kobject *ko)
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
kfree(mddev);
}
@@ -5885,7 +5887,13 @@ int md_run(struct mddev *mddev)
if (!bioset_initialized(&mddev->sync_set)) {
err = bioset_init(&mddev->sync_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
if (err)
- return err;
+ goto exit_bio_set;
+ }
+ if (!bioset_initialized(&mddev->io_acct_set)) {
+ err = bioset_init(&mddev->io_acct_set, BIO_POOL_SIZE,
+ offsetof(struct md_io_acct, bio_clone), 0);
+ if (err)
+ goto exit_sync_set;
}
spin_lock(&pers_lock);
@@ -6013,6 +6021,7 @@ int md_run(struct mddev *mddev)
blk_queue_flag_set(QUEUE_FLAG_NONROT, mddev->queue);
else
blk_queue_flag_clear(QUEUE_FLAG_NONROT, mddev->queue);
+ blk_queue_flag_set(QUEUE_FLAG_IO_STAT, mddev->queue);
}
if (pers->sync_request) {
if (mddev->kobj.sd &&
@@ -6062,8 +6071,11 @@ int md_run(struct mddev *mddev)
module_put(pers->owner);
md_bitmap_destroy(mddev);
abort:
- bioset_exit(&mddev->bio_set);
+ bioset_exit(&mddev->io_acct_set);
+exit_sync_set:
bioset_exit(&mddev->sync_set);
+exit_bio_set:
+ bioset_exit(&mddev->bio_set);
return err;
}
EXPORT_SYMBOL_GPL(md_run);
@@ -6288,6 +6300,7 @@ void md_stop(struct mddev *mddev)
__md_stop(mddev);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -8571,9 +8584,40 @@ void md_write_end(struct mddev *mddev)
roundup(jiffies, mddev->safemode_delay) +
mddev->safemode_delay);
}
-
EXPORT_SYMBOL(md_write_end);
+static void md_end_io_acct(struct bio *bio)
+{
+ struct md_io_acct *md_io_acct = bio->bi_private;
+ struct bio *orig_bio = md_io_acct->orig_bio;
+
+ orig_bio->bi_status = bio->bi_status;
+
+ bio_end_io_acct(orig_bio, md_io_acct->start_time);
+ bio_put(bio);
+ bio_endio(orig_bio);
+}
+
+/* used by personalities (raid0 and raid5) to account io stats */
+void md_account_bio(struct mddev *mddev, struct bio **bio)
+{
+ struct md_io_acct *md_io_acct;
+ struct bio *clone;
+
+ if (!blk_queue_io_stat((*bio)->bi_disk->queue))
+ return;
+
+ clone = bio_clone_fast(*bio, GFP_NOIO, &mddev->io_acct_set);
+ md_io_acct = container_of(clone, struct md_io_acct, bio_clone);
+ md_io_acct->orig_bio = *bio;
+ md_io_acct->start_time = bio_start_io_acct(*bio);
+
+ clone->bi_end_io = md_end_io_acct;
+ clone->bi_private = md_io_acct;
+ *bio = clone;
+}
+EXPORT_SYMBOL_GPL(md_account_bio);
+
/* md_allow_write(mddev)
* Calling this ensures that the array is marked 'active' so that writes
* may proceed without blocking. It is important to call this before
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 85177d068322..20c16cfdd6bb 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -491,6 +491,7 @@ struct mddev {
struct bio_set sync_set; /* for sync operations like
* metadata and bitmap writes
*/
+ struct bio_set io_acct_set; /* for raid0 and raid5 io accounting */
/* Generic flush handling.
* The last to finish preflush schedules a worker to submit
@@ -687,6 +688,12 @@ struct md_thread {
void *private;
};
+struct md_io_acct {
+ struct bio *orig_bio;
+ unsigned long start_time;
+ struct bio bio_clone;
+};
+
#define THREAD_WAKEUP 0
static inline void safe_put_page(struct page *p)
@@ -716,6 +723,7 @@ extern void md_write_end(struct mddev *mddev);
extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
extern void md_finish_reshape(struct mddev *mddev);
+void md_account_bio(struct mddev *mddev, struct bio **bio);
extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 35843df15b5e..0312b192106a 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -556,6 +556,9 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
bio = split;
}
+ if (bio->bi_pool != &mddev->bio_set)
+ md_account_bio(mddev, &bio);
+
orig_sector = sector;
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index c82953a3299e..35dacc6e754f 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5487,6 +5487,7 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
sector_t sector = raid_bio->bi_iter.bi_sector;
unsigned chunk_sects = mddev->chunk_sectors;
unsigned sectors = chunk_sects - (sector & (chunk_sects-1));
+ struct r5conf *conf = mddev->private;
if (sectors < bio_sectors(raid_bio)) {
struct r5conf *conf = mddev->private;
@@ -5496,6 +5497,9 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
raid_bio = split;
}
+ if (raid_bio->bi_pool != &conf->bio_split)
+ md_account_bio(mddev, &raid_bio);
+
if (!raid5_read_one_chunk(mddev, raid_bio))
return raid_bio;
@@ -5775,6 +5779,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
DEFINE_WAIT(w);
bool do_prepare;
bool do_flush = false;
+ bool do_clone = false;
if (unlikely(bi->bi_opf & REQ_PREFLUSH)) {
int ret = log_handle_flush_request(conf, bi);
@@ -5803,6 +5808,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
if (rw == READ && mddev->degraded == 0 &&
mddev->reshape_position == MaxSector) {
bi = chunk_aligned_read(mddev, bi);
+ do_clone = true;
if (!bi)
return true;
}
@@ -5817,6 +5823,9 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
last_sector = bio_end_sector(bi);
bi->bi_next = NULL;
+ if (!do_clone)
+ md_account_bio(mddev, &bi);
+
prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
for (; logical_sector < last_sector; logical_sector += RAID5_STRIPE_SECTORS(conf)) {
int previous;
--
2.20.1
1
19
Backport 5.10.115 LTS patches from upstream.
git cherry-pick v5.10.114..v5.10.115~1 -s
Complicts:
Already merged(4):
8a9e7c64f4a0 nfc: replace improper check device_is_registered() in netlink
related functions
1961c5a688ed nfc: nfcmrvl: main: reorder destructive operations in
nfcmrvl_nci_unregister_dev to avoid bugs
879b075a9a36 NFC: netlink: fix sleep in atomic bug when firmware download
timeout
a439819f4797 block-map: add __GFP_ZERO flag for alloc_page in function
bio_copy_kern
Rejected(2):
hinic driver drops related file in the patch:
475237e807a2 hinic: fix bug of wq out of bound access
build failed due to reject of patch "845f44ce3d9f1 net/sched: flower: fix
parsing of ethertype following VLAN header":
d8338a7a0957 net/mlx5e: Don't match double-vlan packets if cvlan is not set
Total patches: 70 - 4 - 2 = 64
Andreas Larsson (2):
can: grcan: grcan_probe(): fix broken system id check for errata
workaround needs
can: grcan: only use the NAPI poll budget for RX
Andrei Lalaev (1):
gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
Armin Wolf (1):
hwmon: (adt7470) Fix warning on module removal
Aya Levin (1):
net/mlx5: Fix slab-out-of-bounds while reading resource dump menu
Brian Norris (1):
mmc: core: Set HS clock speed before sending HS CMD13
Cheng Xu (1):
RDMA/siw: Fix a condition race issue in MPA request processing
Chengfeng Ye (1):
firewire: fix potential uaf in outbound_phy_packet_callback()
Codrin Ciubotariu (1):
ASoC: dmaengine: Restore NULL prepare_slave_config() callback
Daniel Hellstrom (1):
can: grcan: use ofdev->dev when allocating DMA memory
David Stevens (1):
iommu/vt-d: Calculate mask for non-aligned flushes
Duoming Zhou (1):
can: grcan: grcan_close(): fix deadlock
Eric Dumazet (1):
net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter()
Filipe Manana (1):
btrfs: always log symlinks in full mode
Frederic Weisbecker (2):
rcu: Fix callbacks processing time limit retaining cond_resched()
rcu: Apply callbacks processing time limit only on softirq
Harry Wentland (1):
drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT
Helge Deller (1):
parisc: Merge model and model name into one line in /proc/cpuinfo
Ido Schimmel (1):
selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface
is operational
Jakob Koschel (1):
firewire: remove check of list iterator against head past the loop
body
Jan Höppner (2):
s390/dasd: Fix read for ESE with blksize < 4k
s390/dasd: Fix read inconsistency for ESE DASD devices
Jann Horn (1):
selftests/seccomp: Don't call read() on TTY from background pgrp
Kyle Huey (1):
KVM: x86/svm: Account for family 17h event renumberings in
amd_pmc_perf_hw_id
Maciej W. Rozycki (1):
MIPS: Fix CP0 counter erratum detection for R4k CPUs
Mark Brown (5):
ASoC: da7219: Fix change notifications for tone generator frequency
ASoC: wm8958: Fix change notifications for DSP controls
ASoC: meson: Fix event generation for AUI ACODEC mux
ASoC: meson: Fix event generation for G12A tohdmi mux
ASoC: meson: Fix event generation for AUI CODEC mux
Mark Zhang (1):
net/mlx5e: Fix the calling of update_buffer_lossy() API
Michael Chan (1):
bnxt_en: Fix unnecessary dropping of RX packets
Mike Snitzer (1):
dm: interlock pending dm_io and dm_wait_for_bios_completion
Moshe Shemesh (1):
net/mlx5: Avoid double clear or set of sync reset requested
Moshe Tal (1):
net/mlx5e: Fix trust state reset in reload
Niels Dossche (1):
firewire: core: extend card->lock in fw_core_handle_bus_reset
Oliver Hartkopp (1):
can: isotp: remove re-binding of bound socket
Pali Rohár (2):
PCI: aardvark: Clear all MSIs at setup
PCI: aardvark: Fix reading MSI interrupt number
Paolo Bonzini (2):
KVM: x86: Do not change ICR on write to APIC_SELF_IPI
KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs
Paul Blakey (1):
net/mlx5e: CT: Fix queued up restore put() executing after relevant ft
release
Puyou Lu (1):
gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask
not set)
Ricky WU (1):
mmc: rtsx: add 74 Clocks in power on flow
Sandipan Das (1):
kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural
PMU
Sergey Shtylyov (1):
smsc911x: allow using IRQ0
Shaik Sajida Bhanu (1):
mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC
Shravya Kumbham (1):
net: emaclite: Add error handling for of_address_to_resource()
Somnath Kotur (1):
bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag
Stefan Haberland (2):
s390/dasd: fix data corruption for ESE devices
s390/dasd: prevent double format of tracks for ESE devices
Takashi Sakamoto (1):
ALSA: fireworks: fix wrong return count shorter than expected by 4
bytes
Tan Tee Min (1):
net: stmmac: disable Split Header (SPH) for Intel platforms
Thomas Pfaff (1):
genirq: Synchronize interrupt thread startup
Trond Myklebust (2):
Revert "SUNRPC: attempt AF_LOCAL connect on setup"
NFSv4: Don't invalidate inode attributes on delegation return
Vladimir Oltean (1):
selftests: ocelot: tc_flower_chains: specify conform-exceed action for
policer
Wanpeng Li (2):
x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume
KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is
advertised
Yang Yingliang (4):
net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init()
net: dsa: mt7530: add missing of_node_put() in mt7530_setup()
net: stmmac: dwmac-sun8i: add missing of_node_put() in
sun8i_dwmac_register_mdio_mux()
net: cpsw: add missing of_node_put() in cpsw_probe_dt()
Zihao Wang (1):
ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers
arch/mips/include/asm/timex.h | 8 ++--
arch/mips/kernel/time.c | 11 ++---
arch/parisc/kernel/processor.c | 3 +-
arch/x86/kernel/kvm.c | 13 ++++++
arch/x86/kvm/cpuid.c | 5 ++
arch/x86/kvm/lapic.c | 10 ++--
arch/x86/kvm/mmu/mmu.c | 2 +
arch/x86/kvm/svm/pmu.c | 28 +++++++++--
drivers/firewire/core-card.c | 3 ++
drivers/firewire/core-cdev.c | 4 +-
drivers/firewire/core-topology.c | 9 ++--
drivers/firewire/core-transaction.c | 30 ++++++------
drivers/firewire/sbp2.c | 13 +++---
drivers/gpio/gpio-pca953x.c | 4 +-
drivers/gpio/gpiolib-of.c | 2 +-
.../gpu/drm/amd/display/dc/core/dc_link_dp.c | 2 +-
drivers/hwmon/adt7470.c | 4 +-
drivers/infiniband/sw/siw/siw_cm.c | 7 +--
drivers/iommu/intel/iommu.c | 27 +++++++++--
drivers/md/dm.c | 8 +++-
drivers/mmc/core/mmc.c | 23 ++++++++--
drivers/mmc/host/rtsx_pci_sdmmc.c | 31 +++++++++----
drivers/mmc/host/sdhci-msm.c | 42 +++++++++++++++++
drivers/net/can/grcan.c | 46 ++++++++++---------
drivers/net/dsa/mt7530.c | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 13 ++++--
drivers/net/ethernet/mediatek/mtk_sgmii.c | 1 +
.../mellanox/mlx5/core/diag/rsc_dump.c | 31 ++++++++++---
.../mellanox/mlx5/core/en/port_buffer.c | 4 +-
.../ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++
.../ethernet/mellanox/mlx5/core/en_dcbnl.c | 10 ++++
.../ethernet/mellanox/mlx5/core/fw_reset.c | 28 +++++++----
drivers/net/ethernet/smsc/smsc911x.c | 2 +-
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 1 +
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 5 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 ++++--
drivers/pci/controller/pci-aardvark.c | 16 +++----
drivers/s390/block/dasd.c | 18 ++++++--
drivers/s390/block/dasd_eckd.c | 28 ++++++++---
drivers/s390/block/dasd_int.h | 14 ++++++
fs/btrfs/tree-log.c | 14 +++++-
fs/nfs/nfs4proc.c | 12 ++++-
include/linux/stmmac.h | 1 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 2 +
kernel/irq/manage.c | 39 ++++++++++++----
kernel/rcu/tree.c | 32 +++++++------
net/can/isotp.c | 22 ++-------
net/ipv4/igmp.c | 9 ++--
net/sunrpc/xprtsock.c | 3 --
sound/firewire/fireworks/fireworks_hwdep.c | 1 +
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/codecs/da7219.c | 14 ++++--
sound/soc/codecs/wm8958-dsp2.c | 8 ++--
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
sound/soc/meson/g12a-tohdmitx.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +--
.../drivers/net/ocelot/tc_flower_chains.sh | 2 +-
.../net/forwarding/mirror_gre_bridge_1q.sh | 3 ++
tools/testing/selftests/seccomp/seccomp_bpf.c | 10 ++--
63 files changed, 501 insertions(+), 215 deletions(-)
--
2.20.1
1
64
Backport 5.10.114 LTS patches from upstream.
git cherry-pick v5.10.113..v5.10.114~1 -s
Complicts:
Already merged(4):
54c028cfc496 floppy: disable FDRAWCMD by default
e3ec78d82d48 net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
929c30c02de4 net: hns3: add validity check for message data length
9eb25e00f59b net: hns3: add return value for mailbox handling in PF
Implementation changed(already merged, use mainline version b98535d09179, 1):
585ef03c9e79 ext4: fix bug_on in start_this_handle during umount filesystem
Defered(3, kabi changed):
3c464db03c12 tcp: ensure to use the most recently sent skb when filling the rate
sample
6f2bf9c5ddfe mtd: fix 'part' field data corruption in mtd_info
616d354fb9e8 hex2bin: make the function hex_to_bin constant-time
Total patches: 129 - 4 - 1 - 3 = 121
Adam Ford (2):
ARM: dts: am3517-evm: Fix misc pinmuxing
ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35
Alexey Kardashevskiy (1):
powerpc/perf: Fix 32bit compile
Baruch Siach (1):
net: phy: marvell10g: fix return value on error
Borislav Petkov (1):
x86/cpu: Load microcode during restore_processor_state()
Bruno Thomsen (1):
USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader
Chao Song (1):
ASoC: Intel: soc-acpi: correct device endpoints for max98373
Christian Hewitt (2):
arm64: dts: meson: remove CPU opps below 1GHz for G12B boards
arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards
Christophe JAILLET (1):
bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create()
Chuanhong Guo (1):
mtd: rawnand: fix ecc parameters for mt7622
Claudiu Beznea (1):
ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name
Damien Le Moal (2):
zonefs: Fix management of open zones
zonefs: Clear inode information flags on inode creation
Dan Vacura (1):
usb: gadget: uvc: Fix crash when encoding data for usb request
Daniel Starke (13):
tty: n_gsm: fix restart handling via CLD command
tty: n_gsm: fix decoupled mux resource
tty: n_gsm: fix mux cleanup after unregister tty device
tty: n_gsm: fix wrong signal octet encoding in convergence layer type
2
tty: n_gsm: fix malformed counter for out of frame data
tty: n_gsm: fix insufficient txframe size
tty: n_gsm: fix wrong DLCI release order
tty: n_gsm: fix missing explicit ldisc flush
tty: n_gsm: fix wrong command retry handling
tty: n_gsm: fix wrong command frame length field encoding
tty: n_gsm: fix reset fifo race condition
tty: n_gsm: fix incorrect UA handling
tty: n_gsm: fix software flow control handling
Daniele Palmas (1):
USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions
Dany Madden (1):
Revert "ibmvnic: Add ethtool private flag for driver-defined queue
limits"
David Yat Sin (1):
drm/amdkfd: Fix GWS queue count
Dinh Nguyen (1):
net: ethernet: stmmac: fix write to sgmii_adapter_base
Duoming Zhou (1):
drivers: net: hippi: Fix deadlock in rr_close()
Eric Dumazet (2):
tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT
tcp: make sure treq->af_specific is initialized
Evan Green (1):
xhci: Enable runtime PM on second Alderlake controller
Eyal Birger (1):
bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit
lwt hook
Fabio Estevam (2):
ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue
arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock
Fawzi Khaber (1):
iio: imu: inv_icm42600: Fix I2C init possible nack
Florian Westphal (1):
netfilter: nft_socket: only do sk lookups when indev is available
Francesco Ruggeri (1):
tcp: md5: incorrect tcp_header_len for incoming connections
Geert Uytterhoeven (1):
memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode
Greg Kroah-Hartman (1):
lightnvm: disable the subsystem
Guo Ren (1):
riscv: patch_text: Fixup last cpu should be master
H. Nikolaus Schaller (1):
ARM: dts: Fix mmc order for omap3-gta04
Hangyu Hua (1):
usb: misc: fix improper handling of refcount in uss720_probe()
Heikki Krogerus (2):
usb: typec: ucsi: Fix reuse of completion structure
usb: typec: ucsi: Fix role swapping
Henry Lin (1):
xhci: stop polling roothubs after shutdown
Imre Deak (1):
drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses
Johan Hovold (1):
serial: imx: fix overrun interrupts in DMA mode
Jonathan Lemon (1):
net: bcmgenet: hide status block before TX timestamping
Kees Cook (2):
USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS
thermal: int340x: Fix attr.show callback prototype
Krzysztof Kozlowski (2):
pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config
phy: samsung: exynos5250-sata: fix missing device put in probe error
paths
Leon Romanovsky (1):
ixgbe: ensure IPsec VF<->PF compatibility
Lijun Pan (1):
ibmvnic: fix miscellaneous checks
Luca Ceresoli (1):
pinctrl: rockchip: fix RK3308 pinmux bits
Lv Ruyi (1):
pinctrl: pistachio: fix use of irq_of_parse_and_map()
Maciej W. Rozycki (2):
serial: 8250: Also set sticky MCR bits in console restoration
serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
Macpaul Lin (1):
usb: mtu3: fix USB 3.0 dual-role-switch from device to host
Manish Chopra (1):
bnx2x: fix napi API usage sequence
Marek Vasut (2):
pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs
in EOI
pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ
requested
Mark Brown (1):
ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek
Martin Blumenstingl (1):
net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK
Mathias Nyman (1):
xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms
Max Krummenacher (1):
ARM: dts: imx6ull-colibri: fix vqmmc regulator
Maxim Mikityanskiy (1):
tls: Skip tls_append_frag on zero copy size
Miaoqian Lin (8):
phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe
ARM: OMAP2+: Fix refcount leak in omap_gic_of_init
phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks
phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe
phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe
mtd: rawnand: Fix return value check of wait_for_completion_timeout
net: dsa: Add missing of_node_put() in dsa_port_link_register_of
drm/amd/display: Fix memory leak in dcn21_clock_source_create
Michael Hennerich (1):
iio: dac: ad5446: Fix read_raw not returning set value
Mikulas Patocka (2):
hex2bin: fix access beyond string end
x86: __memcpy_flushcache: fix wrong alignment if size > 2^32
Namhyung Kim (3):
perf symbol: Pass is_kallsyms to symbols__fixup_end()
perf symbol: Update symbols__fixup_end()
perf symbol: Remove arch__symbols__fixup_end()
Nikolay Aleksandrov (1):
wireguard: device: check for metadata_dst with skb_valid_dst()
Oliver Neukum (2):
USB: quirks: add a Realtek card reader
USB: quirks: add STRING quirk for VCOM device
Pablo Neira Ayuso (1):
netfilter: nft_set_rbtree: overlap detection with element re-addition
after deletion
Pavel Skripkin (1):
video: fbdev: udlfb: properly check endpoint type
Pawel Laszczak (1):
usb: cdns3: Fix issue for clear halt endpoint
Peilin Ye (3):
ip_gre: Make o_seqno start from 0 in native mode
ip6_gre: Make o_seqno start from 0 in native mode
ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
Pengcheng Yang (2):
ipvs: correctly print the memory size of ip_vs_conn_tab
tcp: fix F-RTO may not work correctly when receiving DSACK
Ronnie Sahlberg (1):
cifs: destage any unwritten data to the server before calling
copychunk_write
Sean Anderson (1):
usb: phy: generic: Get the vbus supply
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV32-WA/MV32-WB
Sven Peter (1):
usb: dwc3: Try usb-role-switch first in dwc3_drd_init
Tejun Heo (1):
iocost: don't reset the inuse weight of under-weighted debtors
Thinh Nguyen (3):
usb: dwc3: core: Fix tx/rx threshold settings
usb: dwc3: core: Only handle soft-reset in DCTL
usb: dwc3: gadget: Return proper request status
Thomas Gleixner (1):
x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests
Tong Zhang (1):
iio:imu:bmi160: disable regulator in error path
Tony Lindgren (1):
bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific
Vijayavardhan Vennapusa (1):
usb: gadget: configfs: clear deactivation flag in
configfs_composite_unbind()
Wang Qing (1):
arch_topology: Do not set llc_sibling if llc_id is invalid
Weitao Wang (1):
USB: Fix xhci event ring dequeue pointer ERDP update issue
Xiaobing Luo (1):
cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe
Xin Long (1):
sctp: check asoc strreset_chunk in sctp_generate_reconf_event
Yang Yingliang (2):
clk: sunxi: sun9i-mmc: check return value after calling
platform_get_resource()
net: fec: add missing of_node_put() in fec_enet_init_stop_mode()
YueHaibing (1):
pinctrl: mediatek: moore: Fix build error
Zheyu Ma (2):
iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
ASoC: wm8731: Disable the regulator when probing fails
Zizhuang Deng (1):
iio: dac: ad5592r: Fix the missing return value.
Zqiang (1):
kasan: prevent cpu_quarantine corruption when CPU offline and cache
shrink occur at same time
liuyacan (1):
net/smc: sync err code when tcp connection was refused
arch/arm/boot/dts/am3517-evm.dts | 45 +++-
arch/arm/boot/dts/am3517-som.dtsi | 9 +
arch/arm/boot/dts/at91-sama5d4_xplained.dts | 4 +-
arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 6 +
arch/arm/boot/dts/imx6qdl-apalis.dtsi | 10 +-
arch/arm/boot/dts/imx6ull-colibri.dtsi | 2 +-
.../boot/dts/logicpd-som-lv-35xx-devkit.dts | 15 ++
.../boot/dts/logicpd-som-lv-37xx-devkit.dts | 15 ++
arch/arm/boot/dts/logicpd-som-lv.dtsi | 15 --
arch/arm/boot/dts/omap3-gta04.dtsi | 2 +
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-omap2/omap4-common.c | 2 +
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 40 ----
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 40 ----
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 --
.../boot/dts/freescale/imx8mn-ddr4-evk.dts | 4 +
arch/powerpc/perf/Makefile | 4 +-
arch/riscv/kernel/patch.c | 2 +-
arch/x86/include/asm/microcode.h | 2 +
arch/x86/kernel/cpu/microcode/core.c | 6 +-
arch/x86/lib/usercopy_64.c | 2 +-
arch/x86/pci/xen.c | 6 +-
arch/x86/power/cpu.c | 10 +-
block/blk-iocost.c | 12 +-
drivers/base/arch_topology.c | 2 +-
drivers/bus/sunxi-rsb.c | 2 +
drivers/bus/ti-sysc.c | 16 +-
drivers/clk/sunxi/clk-sun9i-mmc.c | 2 +
drivers/cpufreq/sun50i-cpufreq-nvmem.c | 4 +-
.../drm/amd/amdkfd/kfd_device_queue_manager.c | 83 ++++----
.../drm/amd/display/dc/dcn21/dcn21_resource.c | 1 +
drivers/gpu/drm/i915/i915_reg.h | 2 +-
drivers/iio/dac/ad5446.c | 2 +-
drivers/iio/dac/ad5592r-base.c | 2 +-
drivers/iio/imu/bmi160/bmi160_core.c | 20 +-
.../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 15 +-
drivers/iio/magnetometer/ak8975.c | 1 +
drivers/lightnvm/Kconfig | 2 +-
drivers/memory/renesas-rpc-if.c | 60 ++++--
drivers/mtd/nand/raw/mtk_ecc.c | 12 +-
drivers/mtd/nand/raw/sh_flctl.c | 14 +-
drivers/net/dsa/lantiq_gswip.c | 3 -
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 7 +
drivers/net/ethernet/freescale/fec_main.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.c | 144 ++++---------
drivers/net/ethernet/ibm/ibmvnic.h | 6 -
.../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 3 +-
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 12 +-
drivers/net/hippi/rrunner.c | 2 +
drivers/net/phy/marvell10g.c | 2 +-
drivers/net/wireguard/device.c | 3 +-
drivers/phy/motorola/phy-mapphone-mdm6600.c | 3 +-
drivers/phy/samsung/phy-exynos5250-sata.c | 21 +-
drivers/phy/ti/phy-am654-serdes.c | 2 +-
drivers/phy/ti/phy-omap-usb2.c | 2 +-
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/pinctrl-pistachio.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 45 ++--
drivers/pinctrl/samsung/Kconfig | 11 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 23 ++-
.../intel/int340x_thermal/int3400_thermal.c | 4 +-
drivers/tty/n_gsm.c | 194 ++++++++++--------
drivers/tty/serial/8250/8250_pci.c | 8 +-
drivers/tty/serial/8250/8250_port.c | 2 +-
drivers/tty/serial/imx.c | 2 +-
drivers/usb/cdns3/gadget.c | 7 +-
drivers/usb/core/quirks.c | 6 +
drivers/usb/dwc3/core.c | 11 +-
drivers/usb/dwc3/drd.c | 11 +-
drivers/usb/dwc3/gadget.c | 31 ++-
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/uvc_queue.c | 2 +
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-pci.c | 4 +-
drivers/usb/host/xhci-ring.c | 2 +
drivers/usb/host/xhci.c | 11 +
drivers/usb/misc/uss720.c | 3 +-
drivers/usb/mtu3/mtu3_dr.c | 6 +-
drivers/usb/phy/phy-generic.c | 7 +
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/option.c | 12 ++
drivers/usb/serial/whiteheat.c | 5 +-
drivers/usb/typec/ucsi/ucsi.c | 24 ++-
drivers/video/fbdev/udlfb.c | 14 +-
fs/cifs/smb2ops.c | 8 +
fs/zonefs/super.c | 46 ++++-
include/memory/renesas-rpc-if.h | 1 +
include/net/ip6_tunnel.h | 2 +-
include/net/ip_tunnels.h | 2 +-
include/net/tcp.h | 2 +
lib/hexdump.c | 9 +-
mm/kasan/quarantine.c | 7 +
net/core/lwt_bpf.c | 7 +-
net/dsa/port.c | 2 +
net/ipv4/ip_gre.c | 12 +-
net/ipv4/syncookies.c | 8 +-
net/ipv4/tcp_input.c | 15 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 1 +
net/ipv6/ip6_gre.c | 16 +-
net/ipv6/syncookies.c | 3 +-
net/netfilter/ipvs/ip_vs_conn.c | 2 +-
net/netfilter/nft_set_rbtree.c | 6 +-
net/netfilter/nft_socket.c | 52 +++--
net/sctp/sm_sideeffect.c | 4 +
net/smc/af_smc.c | 2 +
net/tls/tls_device.c | 12 +-
sound/soc/codecs/wm8731.c | 19 +-
.../intel/common/soc-acpi-intel-tgl-match.c | 4 +-
tools/perf/arch/arm64/util/Build | 1 -
tools/perf/arch/arm64/util/machine.c | 27 ---
tools/perf/arch/s390/util/machine.c | 16 --
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.c | 37 +++-
tools/perf/util/symbol.h | 3 +-
116 files changed, 886 insertions(+), 637 deletions(-)
delete mode 100644 tools/perf/arch/arm64/util/machine.c
--
2.20.1
1
121

【会议通知】 SPR: Add core PMU support for SPR KABI问题讨论,时间:2022-08-02 15:30-17:00(UTC+08:00),
by Meeting Book 02 Aug '22
by Meeting Book 02 Aug '22
02 Aug '22
会议主题 Subject
Intel SPR: Add core PMU support for SPR KABI问题讨论
会议时间 Time
2022-08-02 15:30-17:00 (UTC+08:00)Beijing
会议地点 Location
Welink视频会议 Welink Video Meeting
加入会议(External)<https://meeting.huaweicloud.com:36443/#/j/98677767>
会议ID Meeting ID
98677767
召集人 Convener
郑增凯
提示 Tips
请点击会议链接加入会议,首次使用请在入会界面根据提示下载并安装客户端后输入ID入会。
Click the meeting link to join the meeting. For the first time, download and install the client as prompted and enter the ID to join the meeting
1
0

[PATCH openEuler-22.09] openeuler_defconfig: enable CONFIG_BPF_SCHED for x86
by Zheng Zengkai 02 Aug '22
by Zheng Zengkai 02 Aug '22
02 Aug '22
From: Ren Zhijie <renzhijie2(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5F6X6
CVE: NA
--------------------------------
Enable CONFIG_BPF_SCHED for x86 by default.
Signed-off-by: Ren Zhijie <renzhijie2(a)huawei.com>
---
arch/x86/configs/openeuler_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig
index f013c7b95881..bc9d7ee3812c 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -235,6 +235,7 @@ CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
# CONFIG_BPF_LSM is not set
+CONFIG_BPF_SCHED=y
CONFIG_BPF_SYSCALL=y
CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
CONFIG_BPF_JIT_ALWAYS_ON=y
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS 1/3] fbmem: Check virtual screen sizes in fb_set_var()
by Yongqiang Liu 01 Aug '22
by Yongqiang Liu 01 Aug '22
01 Aug '22
From: Helge Deller <deller(a)gmx.de>
mainline inclusion
from mainline-v5.19-rc6
commit 6c11df58fd1ac0aefcb3b227f72769272b939e56
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5IQ4M
CVE: CVE-2021-33655
--------------------------------
Verify that the fbdev or drm driver correctly adjusted the virtual
screen sizes. On failure report the failing driver and reject the screen
size change.
Signed-off-by: Helge Deller <deller(a)gmx.de>
Reviewed-by: Geert Uytterhoeven <geert(a)linux-m68k.org>
Cc: stable(a)vger.kernel.org # v5.4+
Signed-off-by: Chen Jun <chenjun102(a)huawei.com>
Conflicts:
drivers/video/fbdev/core/fbmem.c
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/core/fbmem.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index c48f083d522a..43a446416843 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -996,6 +996,16 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
if (ret)
goto done;
+ /* verify that virtual resolution >= physical resolution */
+ if (var->xres_virtual < var->xres ||
+ var->yres_virtual < var->yres) {
+ pr_warn("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n",
+ info->fix.id,
+ var->xres_virtual, var->yres_virtual,
+ var->xres, var->yres);
+ return -EINVAL;
+ }
+
if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) {
struct fb_var_screeninfo old_var;
struct fb_videomode mode;
--
2.25.1
1
2

[PATCH openEuler-1.0-LTS] xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup()
by Yongqiang Liu 01 Aug '22
by Yongqiang Liu 01 Aug '22
01 Aug '22
From: Hangyu Hua <hbh25y(a)gmail.com>
stable inclusion
from stable-v4.19.254
commit fdb4fba1ba8512fa579a9d091dcb6c410f82f96a
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5JMHA
CVE: CVE-2022-36879
--------------------------------
[ Upstream commit f85daf0e725358be78dfd208dea5fd665d8cb901 ]
xfrm_policy_lookup() will call xfrm_pol_hold_rcu() to get a refcount of
pols[0]. This refcount can be dropped in xfrm_expand_policies() when
xfrm_expand_policies() return error. pols[0]'s refcount is balanced in
here. But xfrm_bundle_lookup() will also call xfrm_pols_put() with
num_pols == 1 to drop this refcount when xfrm_expand_policies() return
error.
This patch also fix an illegal address access. pols[0] will save a error
point when xfrm_policy_lookup fails. This lead to xfrm_pols_put to resolve
an illegal address in xfrm_bundle_lookup's error path.
Fix these by setting num_pols = 0 in xfrm_expand_policies()'s error path.
Fixes: 80c802f3073e ("xfrm: cache bundles instead of policies for outgoing flows")
Signed-off-by: Hangyu Hua <hbh25y(a)gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/xfrm/xfrm_policy.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index e9aea82f370d..408e3f34d16c 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1703,8 +1703,10 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family,
*num_xfrms = 0;
return 0;
}
- if (IS_ERR(pols[0]))
+ if (IS_ERR(pols[0])) {
+ *num_pols = 0;
return PTR_ERR(pols[0]);
+ }
*num_xfrms = pols[0]->xfrm_nr;
@@ -1719,6 +1721,7 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family,
if (pols[1]) {
if (IS_ERR(pols[1])) {
xfrm_pols_put(pols, *num_pols);
+ *num_pols = 0;
return PTR_ERR(pols[1]);
}
(*num_pols)++;
--
2.25.1
1
0

[PATCH openEuler-22.03-LTS] xfs: fix comment for start time value of inode with bigtime enabled
by Xiaole He 01 Aug '22
by Xiaole He 01 Aug '22
01 Aug '22
From: Xiaole He <hexiaole1994(a)126.com>
mainline inclusion
from mainline-for-next
commit fdbae121b4369fe49eb5f8efbd23604ab4c50116
category: doc
--------------------------------
The 'ctime', 'mtime', and 'atime' for inode is the type of
'xfs_timestamp_t', which is a 64-bit type:
/* fs/xfs/libxfs/xfs_format.h begin */
typedef __be64 xfs_timestamp_t;
/* fs/xfs/libxfs/xfs_format.h end */
When the 'bigtime' feature is disabled, this 64-bit type is splitted
into two parts of 32-bit, one part is encoded for seconds since
1970-01-01 00:00:00 UTC, the other part is encoded for nanoseconds
above the seconds, this two parts are the type of
'xfs_legacy_timestamp' and the min and max time value of this type are
defined as macros 'XFS_LEGACY_TIME_MIN' and 'XFS_LEGACY_TIME_MAX':
/* fs/xfs/libxfs/xfs_format.h begin */
struct xfs_legacy_timestamp {
__be32 t_sec; /* timestamp seconds */
__be32 t_nsec; /* timestamp nanoseconds */
};
#define XFS_LEGACY_TIME_MIN ((int64_t)S32_MIN)
#define XFS_LEGACY_TIME_MAX ((int64_t)S32_MAX)
/* fs/xfs/libxfs/xfs_format.h end */
/* include/linux/limits.h begin */
#define U32_MAX ((u32)~0U)
#define S32_MAX ((s32)(U32_MAX >> 1))
#define S32_MIN ((s32)(-S32_MAX - 1))
/* include/linux/limits.h end */
'XFS_LEGACY_TIME_MIN' is the min time value of the
'xfs_legacy_timestamp', that is -(2^31) seconds relative to the
1970-01-01 00:00:00 UTC, it can be converted to human-friendly time
value by 'date' command:
/* command begin */
[root@~]# date --utc -d '@0' +'%Y-%m-%d %H:%M:%S'
1970-01-01 00:00:00
[root@~]# date --utc -d "@`echo '-(2^31)'|bc`" +'%Y-%m-%d %H:%M:%S'
1901-12-13 20:45:52
[root@~]#
/* command end */
When 'bigtime' feature is enabled, this 64-bit type becomes a 64-bit
nanoseconds counter, with the start time value is the min time value of
'xfs_legacy_timestamp'(start time means the value of 64-bit nanoseconds
counter is 0). We have already caculated the min time value of
'xfs_legacy_timestamp', that is 1901-12-13 20:45:52 UTC, but the comment
for the start time value of inode with 'bigtime' feature enabled writes
the value is 1901-12-31 20:45:52 UTC:
/* fs/xfs/libxfs/xfs_format.h begin */
/*
* XFS Timestamps
* ==============
* When the bigtime feature is enabled, ondisk inode timestamps become an
* unsigned 64-bit nanoseconds counter. This means that the bigtime inode
* timestamp epoch is the start of the classic timestamp range, which is
* Dec 31 20:45:52 UTC 1901. ...
...
*/
/* fs/xfs/libxfs/xfs_format.h end */
That is a typo, and this patch corrects the typo, from 'Dec 31' to
'Dec 13'.
Suggested-by: Darrick J. Wong <djwong(a)kernel.org>
Signed-off-by: Xiaole He <hexiaole(a)kylinos.cn>
Reviewed-by: Darrick J. Wong <djwong(a)kernel.org>
Signed-off-by: Darrick J. Wong <djwong(a)kernel.org>
---
fs/xfs/libxfs/xfs_format.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h
index dd764da08f6f..8faa2a6069e6 100644
--- a/fs/xfs/libxfs/xfs_format.h
+++ b/fs/xfs/libxfs/xfs_format.h
@@ -870,7 +870,7 @@ struct xfs_agfl {
* When the bigtime feature is enabled, ondisk inode timestamps become an
* unsigned 64-bit nanoseconds counter. This means that the bigtime inode
* timestamp epoch is the start of the classic timestamp range, which is
- * Dec 31 20:45:52 UTC 1901. Because the epochs are not the same, callers
+ * Dec 13 20:45:52 UTC 1901. Because the epochs are not the same, callers
* /must/ use the bigtime conversion functions when encoding and decoding raw
* timestamps.
*/
--
2.27.0
1
0

[PATCH openEuler-1.0-LTS 1/2] block: prevent lockdep false positive warning about 'bd_mutex'
by Yongqiang Liu 30 Jul '22
by Yongqiang Liu 30 Jul '22
30 Jul '22
From: Yu Kuai <yukuai3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187246, https://gitee.com/openeuler/kernel/issues/I5JQL4
CVE: NA
--------------------------------
Commit faf2662e328c ("block: fix that part scan is disabled in
device_add_disk()") confuse lockdep to produce following warning:
=====================================================
WARNING: possible circular locking dependency detected
4.18.0+ #2 Tainted: G ---------r- -
------------------------------------------------------
syz-executor.0/4652 is trying to acquire lock:
00000000ad5f5a19 (&mddev->open_mutex){+.+.}, at: md_open+0x13a/0x260 home/install/linux-rh-3-10/drivers/md/md.c:7626
but task is already holding lock:
000000005c3a3fea (&bdev->bd_mutex){+.+.}, at: __blkdev_get+0x156/0x1490 home/install/linux-rh-3-10/fs/block_dev.c:1583
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #2 (&bdev->bd_mutex){+.+.}:
__mutex_lock_common home/install/linux-rh-3-10/kernel/locking/mutex.c:925 [inline]
__mutex_lock+0x105/0x1270 home/install/linux-rh-3-10/kernel/locking/mutex.c:1072
__blkdev_get+0x156/0x1490 home/install/linux-rh-3-10/fs/block_dev.c:1583
blkdev_get+0x33c/0xac0 home/install/linux-rh-3-10/fs/block_dev.c:1735
disk_init_partition home/install/linux-rh-3-10/block/blk-sysfs.c:972 [inline]
blk_register_queue+0x5ed/0x6c0 home/install/linux-rh-3-10/block/blk-sysfs.c:1055
__device_add_disk+0xab5/0xd70 home/install/linux-rh-3-10/block/genhd.c:729
sd_probe_async+0x447/0x852 home/install/linux-rh-3-10/drivers/scsi/sd.c:3249
async_run_entry_fn+0xe1/0x700 home/install/linux-rh-3-10/kernel/async.c:127
process_one_work+0x9cf/0x1940 home/install/linux-rh-3-10/kernel/workqueue.c:2175
worker_thread+0x91/0xc50 home/install/linux-rh-3-10/kernel/workqueue.c:2321
kthread+0x33a/0x400 home/install/linux-rh-3-10/kernel/kthread.c:257
ret_from_fork+0x3a/0x50 home/install/linux-rh-3-10/arch/x86/entry/entry_64.S:355
-> #1 (&q->sysfs_dir_lock){+.+.}:
__mutex_lock_common home/install/linux-rh-3-10/kernel/locking/mutex.c:925 [inline]
__mutex_lock+0x105/0x1270 home/install/linux-rh-3-10/kernel/locking/mutex.c:1072
blk_register_queue+0x143/0x6c0 home/install/linux-rh-3-10/block/blk-sysfs.c:1010
__device_add_disk+0xab5/0xd70 home/install/linux-rh-3-10/block/genhd.c:729
add_disk home/install/linux-rh-3-10/./include/linux/genhd.h:447 [inline]
md_alloc+0xb06/0x10d0 home/install/linux-rh-3-10/drivers/md/md.c:5525
md_probe+0x32/0x60 home/install/linux-rh-3-10/drivers/md/md.c:5554
kobj_lookup+0x2d2/0x450 home/install/linux-rh-3-10/drivers/base/map.c:152
get_gendisk+0x3b/0x360 home/install/linux-rh-3-10/block/genhd.c:860
bdev_get_gendisk home/install/linux-rh-3-10/fs/block_dev.c:1181 [inline]
__blkdev_get+0x3b6/0x1490 home/install/linux-rh-3-10/fs/block_dev.c:1578
blkdev_get+0x33c/0xac0 home/install/linux-rh-3-10/fs/block_dev.c:1735
blkdev_open+0x1c2/0x250 home/install/linux-rh-3-10/fs/block_dev.c:1923
do_dentry_open+0x686/0xf50 home/install/linux-rh-3-10/fs/open.c:777
do_last home/install/linux-rh-3-10/fs/namei.c:3449 [inline]
path_openat+0x92f/0x28c0 home/install/linux-rh-3-10/fs/namei.c:3578
do_filp_open+0x1aa/0x2b0 home/install/linux-rh-3-10/fs/namei.c:3613
do_sys_open+0x307/0x490 home/install/linux-rh-3-10/fs/open.c:1075
do_syscall_64+0xca/0x5c0 home/install/linux-rh-3-10/arch/x86/entry/common.c:298
entry_SYSCALL_64_after_hwframe+0x6a/0xdf
-> #0 (&mddev->open_mutex){+.+.}:
lock_acquire+0x10b/0x3a0 home/install/linux-rh-3-10/kernel/locking/lockdep.c:3868
__mutex_lock_common home/install/linux-rh-3-10/kernel/locking/mutex.c:925 [inline]
__mutex_lock+0x105/0x1270 home/install/linux-rh-3-10/kernel/locking/mutex.c:1072
md_open+0x13a/0x260 home/install/linux-rh-3-10/drivers/md/md.c:7626
__blkdev_get+0x2dc/0x1490 home/install/linux-rh-3-10/fs/block_dev.c:1599
blkdev_get+0x33c/0xac0 home/install/linux-rh-3-10/fs/block_dev.c:1735
blkdev_open+0x1c2/0x250 home/install/linux-rh-3-10/fs/block_dev.c:1923
do_dentry_open+0x686/0xf50 home/install/linux-rh-3-10/fs/open.c:777
do_last home/install/linux-rh-3-10/fs/namei.c:3449 [inline]
path_openat+0x92f/0x28c0 home/install/linux-rh-3-10/fs/namei.c:3578
do_filp_open+0x1aa/0x2b0 home/install/linux-rh-3-10/fs/namei.c:3613
do_sys_open+0x307/0x490 home/install/linux-rh-3-10/fs/open.c:1075
do_syscall_64+0xca/0x5c0 home/install/linux-rh-3-10/arch/x86/entry/common.c:298
entry_SYSCALL_64_after_hwframe+0x6a/0xdf
other info that might help us debug this:
Chain exists of:
&mddev->open_mutex --> &q->sysfs_dir_lock --> &bdev->bd_mutex
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&bdev->bd_mutex);
lock(&q->sysfs_dir_lock);
lock(&bdev->bd_mutex);
lock(&mddev->open_mutex);
*** DEADLOCK ***
Since 'bd_mutex' and 'sysfs_dir_lock' is different is for each device,
deadlock between md_open() and sd_probe_async() is impossible. However,
lockdep is treating 'bd_mutex' and 'sysfs_dir_lock' from different devices
the same, and commit faf2662e328c ("block: fix that part scan is disabled
in device_add_disk()") is holding 'bd_mutex' inside 'sysfs_dir_lock',
which causes the false positive warning.
Fix the false positive warning by don't grab 'bd_mutex' inside
'sysfs_dir_lock'.
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-sysfs.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index ee963759ae10..530f1bf36c87 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -977,10 +977,16 @@ int blk_register_queue(struct gendisk *disk)
* before it's registration is done.
*/
disk->flags |= GENHD_FL_UP;
- disk_init_partition(disk);
ret = 0;
unlock:
mutex_unlock(&q->sysfs_lock);
+ /*
+ * Init partitions after releasing 'sysfs_lock', otherwise lockdep
+ * will be confused because it will treat 'bd_mutex' from different
+ * devices as the same lock.
+ */
+ if (!ret)
+ disk_init_partition(disk);
/*
* SCSI probing may synchronously create and destroy a lot of
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/3] dm verity: add root hash pkcs#7 signature verification
by Yongqiang Liu 30 Jul '22
by Yongqiang Liu 30 Jul '22
30 Jul '22
From: Jaskaran Khurana <jaskarankhurana(a)linux.microsoft.com>
mainline inclusion
from mainline-v5.4-rc1
commit 88cd3e6cfac915f50f7aa7b699bdf053afec866e
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5CES3
CVE: NA
--------------------------------
The verification is to support cases where the root hash is not secured
by Trusted Boot, UEFI Secureboot or similar technologies.
One of the use cases for this is for dm-verity volumes mounted after
boot, the root hash provided during the creation of the dm-verity volume
has to be secure and thus in-kernel validation implemented here will be
used before we trust the root hash and allow the block device to be
created.
The signature being provided for verification must verify the root hash
and must be trusted by the builtin keyring for verification to succeed.
The hash is added as a key of type "user" and the description is passed
to the kernel so it can look it up and use it for verification.
Adds CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG which can be turned on if root
hash verification is needed.
Kernel commandline dm_verity module parameter 'require_signatures' will
indicate whether to force root hash signature verification (for all dm
verity volumes).
Signed-off-by: Jaskaran Khurana <jaskarankhurana(a)linux.microsoft.com>
Tested-and-Reviewed-by: Milan Broz <gmazyland(a)gmail.com>
Signed-off-by: Mike Snitzer <snitzer(a)redhat.com>
Conflicts:
Documentation/admin-guide/device-mapper/verity.rst
drivers/md/dm-verity-target.c
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/Kconfig | 12 +++
drivers/md/Makefile | 4 +
drivers/md/dm-verity-target.c | 43 ++++++++--
drivers/md/dm-verity-verify-sig.c | 133 ++++++++++++++++++++++++++++++
drivers/md/dm-verity-verify-sig.h | 60 ++++++++++++++
drivers/md/dm-verity.h | 2 +
6 files changed, 249 insertions(+), 5 deletions(-)
create mode 100644 drivers/md/dm-verity-verify-sig.c
create mode 100644 drivers/md/dm-verity-verify-sig.h
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 8b8c123cae66..6d052c11d66d 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -479,6 +479,18 @@ config DM_VERITY
If unsure, say N.
+config DM_VERITY_VERIFY_ROOTHASH_SIG
+ def_bool n
+ bool "Verity data device root hash signature verification support"
+ depends on DM_VERITY
+ select SYSTEM_DATA_VERIFICATION
+ help
+ Add ability for dm-verity device to be validated if the
+ pre-generated tree of cryptographic checksums passed has a pkcs#7
+ signature file that can validate the roothash of the tree.
+
+ If unsure, say N.
+
config DM_VERITY_FEC
bool "Verity forward error correction support"
depends on DM_VERITY
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
index 822f4e8753bc..32d6d6e4a756 100644
--- a/drivers/md/Makefile
+++ b/drivers/md/Makefile
@@ -76,3 +76,7 @@ endif
ifeq ($(CONFIG_DM_VERITY_FEC),y)
dm-verity-objs += dm-verity-fec.o
endif
+
+ifeq ($(CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG),y)
+dm-verity-objs += dm-verity-verify-sig.o
+endif
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index ca6acc1b20ae..246593cd8fd2 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -16,7 +16,7 @@
#include "dm-verity.h"
#include "dm-verity-fec.h"
-
+#include "dm-verity-verify-sig.h"
#include <linux/module.h>
#include <linux/reboot.h>
@@ -34,7 +34,8 @@
#define DM_VERITY_OPT_IGN_ZEROES "ignore_zero_blocks"
#define DM_VERITY_OPT_AT_MOST_ONCE "check_at_most_once"
-#define DM_VERITY_OPTS_MAX (3 + DM_VERITY_OPTS_FEC)
+#define DM_VERITY_OPTS_MAX (3 + DM_VERITY_OPTS_FEC + \
+ DM_VERITY_ROOT_HASH_VERIFICATION_OPTS)
static unsigned dm_verity_prefetch_cluster = DM_VERITY_DEFAULT_PREFETCH_SIZE;
@@ -738,6 +739,8 @@ static void verity_status(struct dm_target *ti, status_type_t type,
args++;
if (v->validated_blocks)
args++;
+ if (v->signature_key_desc)
+ args += DM_VERITY_ROOT_HASH_VERIFICATION_OPTS;
if (!args)
return;
DMEMIT(" %u", args);
@@ -759,6 +762,9 @@ static void verity_status(struct dm_target *ti, status_type_t type,
if (v->validated_blocks)
DMEMIT(" " DM_VERITY_OPT_AT_MOST_ONCE);
sz = verity_fec_status_table(v, sz, result, maxlen);
+ if (v->signature_key_desc)
+ DMEMIT(" " DM_VERITY_ROOT_HASH_VERIFICATION_OPT_SIG_KEY
+ " %s", v->signature_key_desc);
break;
}
}
@@ -824,6 +830,8 @@ static void verity_dtr(struct dm_target *ti)
verity_fec_dtr(v);
+ kfree(v->signature_key_desc);
+
kfree(v);
}
@@ -879,7 +887,8 @@ static int verity_alloc_zero_digest(struct dm_verity *v)
return r;
}
-static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v)
+static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
+ struct dm_verity_sig_opts *verify_args)
{
int r;
unsigned argc;
@@ -928,6 +937,14 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v)
if (r)
return r;
continue;
+ } else if (verity_verify_is_sig_opt_arg(arg_name)) {
+ r = verity_verify_sig_parse_opt_args(as, v,
+ verify_args,
+ &argc, arg_name);
+ if (r)
+ return r;
+ continue;
+
}
ti->error = "Unrecognized verity feature request";
@@ -954,6 +971,7 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v)
static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
{
struct dm_verity *v;
+ struct dm_verity_sig_opts verify_args = {0};
struct dm_arg_set as;
unsigned int num;
unsigned long long num_ll;
@@ -961,6 +979,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
int i;
sector_t hash_position;
char dummy;
+ char *root_hash_digest_to_validate;
v = kzalloc(sizeof(struct dm_verity), GFP_KERNEL);
if (!v) {
@@ -1085,6 +1104,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
r = -EINVAL;
goto bad;
}
+ root_hash_digest_to_validate = argv[8];
if (strcmp(argv[9], "-")) {
v->salt_size = strlen(argv[9]) / 2;
@@ -1110,11 +1130,20 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
as.argc = argc;
as.argv = argv;
- r = verity_parse_opt_args(&as, v);
+ r = verity_parse_opt_args(&as, v, &verify_args);
if (r < 0)
goto bad;
}
+ /* Root hash signature is a optional parameter*/
+ r = verity_verify_root_hash(root_hash_digest_to_validate,
+ strlen(root_hash_digest_to_validate),
+ verify_args.sig,
+ verify_args.sig_size);
+ if (r < 0) {
+ ti->error = "Root hash verification failed";
+ goto bad;
+ }
v->hash_per_block_bits =
__fls((1 << v->hash_dev_block_bits) / v->digest_size);
@@ -1180,9 +1209,13 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
ti->per_io_data_size = roundup(ti->per_io_data_size,
__alignof__(struct dm_verity_io));
+ verity_verify_sig_opts_cleanup(&verify_args);
+
return 0;
bad:
+
+ verity_verify_sig_opts_cleanup(&verify_args);
verity_dtr(ti);
return r;
@@ -1190,7 +1223,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
static struct target_type verity_target = {
.name = "verity",
- .version = {1, 4, 0},
+ .version = {1, 5, 0},
.module = THIS_MODULE,
.ctr = verity_ctr,
.dtr = verity_dtr,
diff --git a/drivers/md/dm-verity-verify-sig.c b/drivers/md/dm-verity-verify-sig.c
new file mode 100644
index 000000000000..614e43db93aa
--- /dev/null
+++ b/drivers/md/dm-verity-verify-sig.c
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Microsoft Corporation.
+ *
+ * Author: Jaskaran Singh Khurana <jaskarankhurana(a)linux.microsoft.com>
+ *
+ */
+#include <linux/device-mapper.h>
+#include <linux/verification.h>
+#include <keys/user-type.h>
+#include <linux/module.h>
+#include "dm-verity.h"
+#include "dm-verity-verify-sig.h"
+
+#define DM_VERITY_VERIFY_ERR(s) DM_VERITY_ROOT_HASH_VERIFICATION " " s
+
+static bool require_signatures;
+module_param(require_signatures, bool, false);
+MODULE_PARM_DESC(require_signatures,
+ "Verify the roothash of dm-verity hash tree");
+
+#define DM_VERITY_IS_SIG_FORCE_ENABLED() \
+ (require_signatures != false)
+
+bool verity_verify_is_sig_opt_arg(const char *arg_name)
+{
+ return (!strcasecmp(arg_name,
+ DM_VERITY_ROOT_HASH_VERIFICATION_OPT_SIG_KEY));
+}
+
+static int verity_verify_get_sig_from_key(const char *key_desc,
+ struct dm_verity_sig_opts *sig_opts)
+{
+ struct key *key;
+ const struct user_key_payload *ukp;
+ int ret = 0;
+
+ key = request_key(&key_type_user,
+ key_desc, NULL);
+ if (IS_ERR(key))
+ return PTR_ERR(key);
+
+ down_read(&key->sem);
+
+ ukp = user_key_payload_locked(key);
+ if (!ukp) {
+ ret = -EKEYREVOKED;
+ goto end;
+ }
+
+ sig_opts->sig = kmalloc(ukp->datalen, GFP_KERNEL);
+ if (!sig_opts->sig) {
+ ret = -ENOMEM;
+ goto end;
+ }
+ sig_opts->sig_size = ukp->datalen;
+
+ memcpy(sig_opts->sig, ukp->data, sig_opts->sig_size);
+
+end:
+ up_read(&key->sem);
+ key_put(key);
+
+ return ret;
+}
+
+int verity_verify_sig_parse_opt_args(struct dm_arg_set *as,
+ struct dm_verity *v,
+ struct dm_verity_sig_opts *sig_opts,
+ unsigned int *argc,
+ const char *arg_name)
+{
+ struct dm_target *ti = v->ti;
+ int ret = 0;
+ const char *sig_key = NULL;
+
+ if (!*argc) {
+ ti->error = DM_VERITY_VERIFY_ERR("Signature key not specified");
+ return -EINVAL;
+ }
+
+ sig_key = dm_shift_arg(as);
+ (*argc)--;
+
+ ret = verity_verify_get_sig_from_key(sig_key, sig_opts);
+ if (ret < 0)
+ ti->error = DM_VERITY_VERIFY_ERR("Invalid key specified");
+
+ v->signature_key_desc = kstrdup(sig_key, GFP_KERNEL);
+ if (!v->signature_key_desc)
+ return -ENOMEM;
+
+ return ret;
+}
+
+/*
+ * verify_verify_roothash - Verify the root hash of the verity hash device
+ * using builtin trusted keys.
+ *
+ * @root_hash: For verity, the roothash/data to be verified.
+ * @root_hash_len: Size of the roothash/data to be verified.
+ * @sig_data: The trusted signature that verifies the roothash/data.
+ * @sig_len: Size of the signature.
+ *
+ */
+int verity_verify_root_hash(const void *root_hash, size_t root_hash_len,
+ const void *sig_data, size_t sig_len)
+{
+ int ret;
+
+ if (!root_hash || root_hash_len == 0)
+ return -EINVAL;
+
+ if (!sig_data || sig_len == 0) {
+ if (DM_VERITY_IS_SIG_FORCE_ENABLED())
+ return -ENOKEY;
+ else
+ return 0;
+ }
+
+ ret = verify_pkcs7_signature(root_hash, root_hash_len, sig_data,
+ sig_len, NULL, VERIFYING_UNSPECIFIED_SIGNATURE,
+ NULL, NULL);
+
+ return ret;
+}
+
+void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts)
+{
+ kfree(sig_opts->sig);
+ sig_opts->sig = NULL;
+ sig_opts->sig_size = 0;
+}
diff --git a/drivers/md/dm-verity-verify-sig.h b/drivers/md/dm-verity-verify-sig.h
new file mode 100644
index 000000000000..19b1547aa741
--- /dev/null
+++ b/drivers/md/dm-verity-verify-sig.h
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Microsoft Corporation.
+ *
+ * Author: Jaskaran Singh Khurana <jaskarankhurana(a)linux.microsoft.com>
+ *
+ */
+#ifndef DM_VERITY_SIG_VERIFICATION_H
+#define DM_VERITY_SIG_VERIFICATION_H
+
+#define DM_VERITY_ROOT_HASH_VERIFICATION "DM Verity Sig Verification"
+#define DM_VERITY_ROOT_HASH_VERIFICATION_OPT_SIG_KEY "root_hash_sig_key_desc"
+
+struct dm_verity_sig_opts {
+ unsigned int sig_size;
+ u8 *sig;
+};
+
+#ifdef CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG
+
+#define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 2
+
+int verity_verify_root_hash(const void *data, size_t data_len,
+ const void *sig_data, size_t sig_len);
+bool verity_verify_is_sig_opt_arg(const char *arg_name);
+
+int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
+ struct dm_verity_sig_opts *sig_opts,
+ unsigned int *argc, const char *arg_name);
+
+void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts);
+
+#else
+
+#define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 0
+
+int verity_verify_root_hash(const void *data, size_t data_len,
+ const void *sig_data, size_t sig_len)
+{
+ return 0;
+}
+
+bool verity_verify_is_sig_opt_arg(const char *arg_name)
+{
+ return false;
+}
+
+int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
+ struct dm_verity_sig_opts *sig_opts,
+ unsigned int *argc, const char *arg_name)
+{
+ return -EINVAL;
+}
+
+void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts)
+{
+}
+
+#endif /* CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG */
+#endif /* DM_VERITY_SIG_VERIFICATION_H */
diff --git a/drivers/md/dm-verity.h b/drivers/md/dm-verity.h
index 3441c10b840c..42183a3903ae 100644
--- a/drivers/md/dm-verity.h
+++ b/drivers/md/dm-verity.h
@@ -64,6 +64,8 @@ struct dm_verity {
struct dm_verity_fec *fec; /* forward error correction */
unsigned long *validated_blocks; /* bitset blocks validated */
+
+ char *signature_key_desc; /* signature keyring reference */
};
struct dm_verity_io {
--
2.25.1
1
2
v2:
1. full test in this branch.
2. correct implict declare function in
arch/arm64/kvm/hyp/include/hyp/switch.h.
v1:
backport from mainline
Alexandru Elisei (1):
arm64: Do not trap PMSNEVFR_EL1
Marc Zyngier (10):
KVM: arm64: Let vcpu_sve_pffr() handle HYP VAs
KVM: arm64: Provide KVM's own save/restore SVE primitives
KVM: arm64: Use {read,write}_sysreg_el1 to access ZCR_EL1
KVM: arm64: Introduce vcpu_sve_vq() helper
arm64: sve: Provide a conditional update accessor for ZCR_ELx
KVM: arm64: Map SVE context at EL2 when available
KVM: arm64: Rework SVE host-save/guest-restore
KVM: arm64: Save guest's ZCR_EL1 before saving the FPSIMD state
KVM: arm64: Save/restore SVE state for nVHE
KVM: arm64: Always start with clearing SME flag on load
Mark Brown (54):
arm64/sve: Remove redundant system_supports_sve() tests
arm64/sve: Add compile time checks for SVE hooks in generic functions
arm64/sve: Rework SVE access trap to convert state in registers
arm64/sve: Split _sve_flush macro into separate Z and predicate
flushes
arm64/sve: Skip flushing Z registers with 128 bit vectors
arm64/sve: Use the sve_flush macros in sve_load_from_fpsimd_state()
arm64/sve: Remove sve_load_from_fpsimd_state()
arm64/sve: Better handle failure to allocate SVE register storage
arm64/fp: Reindent fpsimd_save()
arm64/sve: Make access to FFR optional
arm64/sve: Rename find_supported_vector_length()
arm64/sve: Use accessor functions for vector lengths in thread_struct
arm64/sve: Put system wide vector length information into structs
arm64/sve: Explicitly load vector length when restoring SVE state
arm64/sve: Track vector lengths for tasks in an array
arm64/sve: Make sysctl interface for SVE reusable by SME
arm64/sve: Generalise vector length configuration prctl() for SME
arm64/sve: Minor clarification of ABI documentation
arm64: cpufeature: Always specify and use a field width for
capabilities
arm64/sme: Provide ABI documentation for SME
arm64/sme: System register and exception syndrome definitions
arm64/sme: Manually encode SME instructions
arm64: Disable fine grained traps on boot
arm64/sme: Early CPU setup for SME
arm64/sme: Basic enumeration support
arm64/sme: Identify supported SME vector lengths at boot
arm64/sme: Implement sysctl to set the default vector length
arm64/sme: Implement vector length configuration prctl()s
arm64/sme: Implement support for TPIDR2
arm64/sme: Implement SVCR context switching
arm64/sme: Implement streaming SVE context switching
arm64/sme: Implement ZA context switching
arm64/sme: Implement traps and syscall handling for SME
arm64/sme: Disable ZA and streaming mode when handling signals
arm64/sme: Implement streaming SVE signal handling
arm64/sme: Implement ZA signal handling
arm64/sme: Implement ptrace support for streaming mode SVE registers
arm64/sme: Add ptrace support for ZA
arm64/sme: Disable streaming mode and ZA when flushing CPU state
arm64/sme: Save and restore streaming mode over EFI runtime calls
arm64/sme: Provide Kconfig for SME
arm64/sme: Add ID_AA64SMFR0_EL1 to __read_sysreg_by_encoding()
arm64/sme: More sensibly define the size for the ZA register set
KVM: arm64: Hide SME system registers from guests
KVM: arm64: Trap SME usage in guest
KVM: arm64: Handle SME host state when running guests
arm64/fp: Make SVE and SME length register definition match
architecture
arm64/fp: Rename SVE and SME LEN field name to _WIDTH
arm64/sme: Drop SYS_ from SMIDR_EL1 defines
arm64/sme: Standardise bitfield names for SVCR
arm64/sme: Remove _EL0 from name of SVCR - FIXME sysreg.h
arm64/sme: Fix tests for 0b1111 value ID registers
arm64/sme: Fix SVE/SME typo in ABI documentation
arm64/sme: Fix EFI save/restore
Wan Jiabing (1):
arm64/sme: Fix NULL check after kzalloc
Xiaofei Tan (1):
arm64: sve: Provide sve_cond_update_zcr_vq fallback when !ARM64_SVE
Documentation/arm64/elf_hwcaps.rst | 34 +
Documentation/arm64/index.rst | 1 +
Documentation/arm64/sme.rst | 428 ++++++++++
Documentation/arm64/sve.rst | 72 +-
arch/arm64/Kconfig | 11 +
arch/arm64/include/asm/cpu.h | 4 +
arch/arm64/include/asm/cpucaps.h | 2 +
arch/arm64/include/asm/cpufeature.h | 25 +
arch/arm64/include/asm/esr.h | 13 +-
arch/arm64/include/asm/exception.h | 1 +
arch/arm64/include/asm/fpsimd.h | 262 ++++++-
arch/arm64/include/asm/fpsimdmacros.h | 108 ++-
arch/arm64/include/asm/hwcap.h | 8 +
arch/arm64/include/asm/kvm_arm.h | 1 +
arch/arm64/include/asm/kvm_host.h | 12 +-
arch/arm64/include/asm/kvm_hyp.h | 2 +
arch/arm64/include/asm/processor.h | 78 +-
arch/arm64/include/asm/signal_common.h | 19 +-
arch/arm64/include/asm/sysreg.h | 78 +-
arch/arm64/include/asm/thread_info.h | 4 +-
arch/arm64/include/uapi/asm/hwcap.h | 8 +
arch/arm64/include/uapi/asm/ptrace.h | 69 +-
arch/arm64/include/uapi/asm/sigcontext.h | 55 +-
arch/arm64/kernel/cpufeature.c | 280 +++++--
arch/arm64/kernel/cpuinfo.c | 13 +
arch/arm64/kernel/entry-common.c | 11 +
arch/arm64/kernel/entry-fpsimd.S | 72 +-
arch/arm64/kernel/fpsimd.c | 944 ++++++++++++++++++-----
arch/arm64/kernel/head.S | 87 +++
arch/arm64/kernel/process.c | 45 +-
arch/arm64/kernel/ptrace.c | 373 +++++++--
arch/arm64/kernel/signal.c | 175 ++++-
arch/arm64/kernel/syscall.c | 29 +-
arch/arm64/kernel/traps.c | 1 +
arch/arm64/kvm/fpsimd.c | 70 +-
arch/arm64/kvm/guest.c | 6 +-
arch/arm64/kvm/hyp/fpsimd.S | 12 +
arch/arm64/kvm/hyp/include/hyp/switch.h | 75 +-
arch/arm64/kvm/hyp/nvhe/switch.c | 38 +-
arch/arm64/kvm/hyp/vhe/switch.c | 10 +-
arch/arm64/kvm/reset.c | 14 +-
arch/arm64/kvm/sys_regs.c | 8 +-
include/uapi/linux/elf.h | 2 +
include/uapi/linux/prctl.h | 9 +
kernel/sys.c | 12 +
45 files changed, 3123 insertions(+), 458 deletions(-)
create mode 100644 Documentation/arm64/sme.rst
--
2.20.1
1
67

[PATCH openEuler-1.0-LTS] jbd2: Fix assertion 'jh->b_frozen_data == NULL' failure when journal aborted
by Yongqiang Liu 28 Jul '22
by Yongqiang Liu 28 Jul '22
28 Jul '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187185, https://gitee.com/openeuler/kernel/issues/I5JAOC
CVE: NA
--------------------------------
Following process will fail assertion 'jh->b_frozen_data == NULL' in
jbd2_journal_dirty_metadata():
jbd2_journal_commit_transaction
unlink(dir/a)
jh->b_transaction = trans1
jh->b_jlist = BJ_Metadata
journal->j_running_transaction = NULL
trans1->t_state = T_COMMIT
unlink(dir/b)
handle->h_trans = trans2
do_get_write_access
jh->b_modified = 0
jh->b_frozen_data = frozen_buffer
jh->b_next_transaction = trans2
jbd2_journal_dirty_metadata
is_handle_aborted
is_journal_aborted // return false
--> jbd2 abort <--
while (commit_transaction->t_buffers)
if (is_journal_aborted)
jbd2_journal_refile_buffer
__jbd2_journal_refile_buffer
WRITE_ONCE(jh->b_transaction,
jh->b_next_transaction)
WRITE_ONCE(jh->b_next_transaction, NULL)
__jbd2_journal_file_buffer(jh, BJ_Reserved)
J_ASSERT_JH(jh, jh->b_frozen_data == NULL) // assertion failure !
The reproducer (See detail in [Link]) reports:
------------[ cut here ]------------
kernel BUG at fs/jbd2/transaction.c:1629!
invalid opcode: 0000 [#1] PREEMPT SMP
CPU: 2 PID: 584 Comm: unlink Tainted: G W
5.19.0-rc6-00115-g4a57a8400075-dirty #697
RIP: 0010:jbd2_journal_dirty_metadata+0x3c5/0x470
RSP: 0018:ffffc90000be7ce0 EFLAGS: 00010202
Call Trace:
<TASK>
__ext4_handle_dirty_metadata+0xa0/0x290
ext4_handle_dirty_dirblock+0x10c/0x1d0
ext4_delete_entry+0x104/0x200
__ext4_unlink+0x22b/0x360
ext4_unlink+0x275/0x390
vfs_unlink+0x20b/0x4c0
do_unlinkat+0x42f/0x4c0
__x64_sys_unlink+0x37/0x50
do_syscall_64+0x35/0x80
After journal aborting, __jbd2_journal_refile_buffer() is executed with
holding @jh->b_state_lock, we can fix it by moving 'is_handle_aborted()'
into the area protected by @jh->b_state_lock.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216251
Fixes: 470decc613ab20 ("[PATCH] jbd2: initial copy of files from jbd")
Conflicts:
fs/jbd2/transaction.c
[ 464170647b56("jbd2: Make state lock a spinlock") is not
applied. ]
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/jbd2/transaction.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index f56be34564e7..3b31bd1f7b77 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -1410,8 +1410,6 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
struct journal_head *jh;
int ret = 0;
- if (is_handle_aborted(handle))
- return -EROFS;
if (!buffer_jbd(bh))
return -EUCLEAN;
@@ -1458,6 +1456,18 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh)
journal = transaction->t_journal;
jbd_lock_bh_state(bh);
+ if (is_handle_aborted(handle)) {
+ /*
+ * Check journal aborting with @jh->b_state_lock locked,
+ * since 'jh->b_transaction' could be replaced with
+ * 'jh->b_next_transaction' during old transaction
+ * committing if journal aborted, which may fail
+ * assertion on 'jh->b_frozen_data == NULL'.
+ */
+ ret = -EROFS;
+ goto out_unlock_bh;
+ }
+
if (jh->b_modified == 0) {
/*
* This buffer's got modified and becoming part
--
2.25.1
1
0

[PATCH openEuler-5.10 01/32] bpf: Don't redirect packets with invalid pkt_len
by Zheng Zengkai 28 Jul '22
by Zheng Zengkai 28 Jul '22
28 Jul '22
From: Zhengchao Shao <shaozhengchao(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc6
commit fd1894224407c484f652ad456e1ce423e89bb3eb
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5HWKR
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id…
--------------------------------
Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
skbs, that is, the flow->head is null.
The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
run a bpf prog which redirects empty skbs.
So we should determine whether the length of the packet modified by bpf
prog or others like bpf_prog_test is valid before forwarding it directly.
LINK: [1] https://syzkaller.appspot.com/bug?id=0b84da80c2917757915afa89f7738a9d16ec96…
LINK: [2] https://www.spinics.net/lists/netdev/msg777503.html
Reported-by: syzbot+7a12909485b94426aceb(a)syzkaller.appspotmail.com
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Reviewed-by: Stanislav Fomichev <sdf(a)google.com>
Link: https://lore.kernel.org/r/20220715115559.139691-1-shaozhengchao@huawei.com
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/skbuff.h | 8 ++++++++
net/bpf/test_run.c | 3 +++
net/core/dev.c | 1 +
3 files changed, 12 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 68efccc15a87..72cfb047fd2c 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -2251,6 +2251,14 @@ static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
#endif /* NET_SKBUFF_DATA_USES_OFFSET */
+static inline void skb_assert_len(struct sk_buff *skb)
+{
+#ifdef CONFIG_DEBUG_NET
+ if (WARN_ONCE(!skb->len, "%s\n", __func__))
+ DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
+#endif /* CONFIG_DEBUG_NET */
+}
+
/*
* Add data to an sk_buff
*/
diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index 99712d35e535..f266a9453c8e 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -398,6 +398,9 @@ static int convert___skb_to_skb(struct sk_buff *skb, struct __sk_buff *__skb)
{
struct qdisc_skb_cb *cb = (struct qdisc_skb_cb *)skb->cb;
+ if (!skb->len)
+ return -EINVAL;
+
if (!__skb)
return 0;
diff --git a/net/core/dev.c b/net/core/dev.c
index 12089c484b30..8e4de36eede8 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4094,6 +4094,7 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
bool again = false;
skb_reset_mac_header(skb);
+ skb_assert_len(skb);
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP))
__skb_tstamp_tx(skb, NULL, skb->sk, SCM_TSTAMP_SCHED);
--
2.20.1
1
31

[PATCH openEuler-1.0-LTS 1/2] dm btree spine: remove paranoid node_check call in node_prep_for_write()
by Yongqiang Liu 28 Jul '22
by Yongqiang Liu 28 Jul '22
28 Jul '22
From: Joe Thornber <ejt(a)redhat.com>
mainline inclusion
from mainline-v5.13-rc1
commit f73e2e70ec48c9a9d45494c4866230a5059062ad
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JCAH
CVE: NA
--------------------------------
Remove this extra BUG_ON() that calls node_check() -- which avoids extra crc checking.
Signed-off-by: Joe Thornber <ejt(a)redhat.com>
Signed-off-by: Mike Snitzer <snitzer(a)redhat.com>
Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Reviewed-by: Hou Tao <houtao1(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/persistent-data/dm-btree-spine.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/md/persistent-data/dm-btree-spine.c b/drivers/md/persistent-data/dm-btree-spine.c
index b27b8091a1ca..52f11a7bad92 100644
--- a/drivers/md/persistent-data/dm-btree-spine.c
+++ b/drivers/md/persistent-data/dm-btree-spine.c
@@ -30,8 +30,6 @@ static void node_prepare_for_write(struct dm_block_validator *v,
h->csum = cpu_to_le32(dm_bm_checksum(&h->flags,
block_size - sizeof(__le32),
BTREE_CSUM_XOR));
-
- BUG_ON(node_check(v, b, 4096));
}
static int node_check(struct dm_block_validator *v,
--
2.25.1
1
1
Add script for check patch header, including inclusion, commit,
category, bugzilla sections.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
pr_checkformat.py | 166 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 166 insertions(+)
create mode 100644 pr_checkformat.py
diff --git a/pr_checkformat.py b/pr_checkformat.py
new file mode 100644
index 000000000000..9a799fe290d9
--- /dev/null
+++ b/pr_checkformat.py
@@ -0,0 +1,166 @@
+#!/usr/bin/python3
+
+import os
+import re
+import sys
+import subprocess
+import shlex
+
+def exec_shell(cmd, workdir = None):
+ p = subprocess.Popen(shlex.split(cmd), stdin = subprocess.PIPE, stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE, cwd = workdir)
+ output, err = p.communicate(timeout = 180)
+ return p.returncode, str(output, 'utf-8'), str(err, 'utf-8')
+
+commit_format = {
+ "[Backport]":
+ [
+ [
+ [r'mainline inclusion\n' ,r''],
+ [r'from mainline(-v\d*\.\d*-rc\d*)?\n' ,r'miss "from mainline"'],
+ [r'commit [a-f0-9]{40}\n' ,r'miss commit or commit-id not 40char'],
+ [r'(category: .*\n)?' ,r''],
+ [r'bugzilla: .*\n' ,r'miss bugzilla'],
+ [r'(CVE: CVE-\d{4}-\d+\n)?' ,r''],
+ [r'\n' ,r'miss \n'],
+ [r'(Reference: .*\n)+' ,r'miss Reference'],
+ [r'\n' ,r'miss \n'],
+ [r'-{16,80}\n' ,r'miss parting line 16~80 "-"'],
+ [r'\n' ,r'miss \n'],
+ ],
+ [
+ [r'stable inclusion\n' ,r''],
+ [r'from stable-v\d*\.\d*\.\d*\n' ,r'miss "from stable"'],
+ [r'commit [a-f0-9]{40}\n' ,r'miss commit or commit-id not 40char'],
+ [r'(category: .*\n)?' ,r''],
+ [r'bugzilla: .*\n' ,r'miss bugzilla'],
+ [r'(CVE: CVE-\d{4}-\d+\n)?' ,r''],
+ [r'\n' ,r'miss \n'],
+ [r'(Reference: .*\n)+' ,r'miss Reference'],
+ [r'\n' ,r'miss \n'],
+ [r'-{16,80}\n' ,r'miss parting line 16~80 "-"'],
+ [r'\n' ,r'miss \n'],
+ ],
+ [
+ [r'.* inclusion\n' ,r'miss inclusion'],
+ [r'(category: .*\n)?' ,r''],
+ [r'bugzilla: .*\n' ,r'miss bugzilla'],
+ [r'(CVE: CVE-\d{4}-\d+\n)?' ,r''],
+ [r'\n' ,r'miss \n'],
+ [r'(Reference: .*\n)+' ,r'miss Reference'],
+ [r'\n' ,r'miss \n'],
+ [r'-{16,80}\n' ,r'miss parting line 16~80 "-"'],
+ [r'\n' ,r'miss \n'],
+ ],
+
+ ],
+ }
+
+def check_employee_id(body):
+ m = re.findall(r'Signed-off-by.*\n', body)
+ if len(m) == 0:
+ return False, "miss Signed-off-by\n"
+ else:
+ for sig in m:
+ __m = re.findall(r'Signed-off-by.*[a-zA-Z][0-9]{8}.*(a)huawei.com', sig)
+ if __m:
+ return False, "incorrect Signed-off-by: %s\n"%(__m);
+
+ m = re.findall(r'Reviewed-by.*\n', body)
+ for rew in m:
+ __m = re.findall(r'Reviewed-by.*[a-zA-Z][0-9]{8}.*(a)huawei.com', rew)
+ if __m:
+ return False, "incorrect Reviewed-by: %s\n"%(__m);
+
+ m = re.findall(r'Author:.*\n', body)
+ for author in m:
+ __m = re.findall(r'Author.*[a-zA-Z][0-9]{8}.*(a)huawei.com', author)
+ if __m:
+ return False, "incorrect author: %s\n"%(__m);
+
+ return True, ""
+
+def format_print(__format, line):
+ description = ""
+ for i in range(0, len(__format)):
+ __line = __format[i][0].replace("\\n","")
+ if i == line:
+ __line += "\t<------" + __format[i][1]
+ description += __line + "\n"
+ return description
+
+def match_format(__format, body):
+ regex = r''
+ match = False
+
+ for i in range(0, len(__format)):
+ regex = regex + __format[i][0]
+ m = re.match(regex, body)
+ if not m:
+ return match, format_print(__format, i)
+ match = True
+
+ return True, ""
+
+def error_description(description):
+ return description
+
+def do_checkformat(patch, workdir = None):
+ commit = patch.split(" ")[0]
+
+ description = ""
+
+ #check subject begin with hw
+ subject = exec_shell('git log --pretty=%s -n 1 %s'%('%s', commit), workdir)[1]
+ subject_type = subject.split(" ")[0]
+ if not subject_type in commit_format:
+ description = "subject should be begin with "
+ for __subject_type in commit_format:
+ description = description + __subject_type + ","
+ return False, error_description(description)
+
+ #check Sig/Review/Author has Job number
+ body = exec_shell('git log -n 1 %s'%(commit), workdir)[1]
+ ret, description = check_employee_id(body)
+ if ret == False:
+ return False, error_description(description)
+
+ #check commit message header
+ body = exec_shell('git log --pretty=%s -n 1 %s'%('%b', commit), workdir)[1]
+ for __format in commit_format[subject_type]:
+ match, description = match_format(__format, body)
+ if match == True:
+ if description == "":
+ return True, "checkformat success"
+ else:
+ return False, error_description(description)
+
+ #not match any template
+ description = "do not match any template!\n"
+ for __subject_type in commit_format:
+ description = description + __subject_type
+ for __format in commit_format[__subject_type]:
+ description += "^^^^^^^^^^\n"
+ description += format_print(__format, -1)
+ description = description + "^^^^^^^^^^\n"
+ return False, error_description(description)
+
+def main():
+ ForT = True
+ tag=sys.argv[1]
+ patches = os.popen("git log --oneline " + tag + "..HEAD").readlines()
+ for patch in patches:
+ ret, description = do_checkformat(patch)
+ if ret == False:
+ print("check " + patch + " failed")
+ print(description)
+ ForT = False
+ if ForT == False:
+ return False
+
+ print("check " + str(len(patches)) + " patch(es) success")
+ return True
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ main()
--
2.20.1
1
0
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
Rust for openEuler
Boqun Feng (1):
kallsyms: avoid hardcoding the buffer size
Gary Guo (2):
rust: add `build_error` crate
vsprintf: add new `%pA` format specifier
Miguel Ojeda (17):
kallsyms: support "big" kernel symbols
kallsyms: increase maximum kernel symbol length to 512
rust: add C helpers
rust: add `compiler_builtins` crate
rust: import upstream `alloc` crate
rust: adapt `alloc` crate to the kernel
rust: add `macros` crate
rust: export generated symbols
scripts: checkpatch: diagnose uses of `%pA` in the C side
scripts: checkpatch: enable language-independent checks for Rust
scripts: add `rustdoc_test_{builder,gen}.py` scripts
scripts: add `generate_rust_analyzer.py` scripts
scripts: decode_stacktrace: demangle Rust symbols
docs: add Rust documentation
Kbuild: add Rust support
samples: add Rust examples
MAINTAINERS: Rust
Wedson Almeida Filho (3):
rust: add `kernel` crate's `sync` module
rust: add `kernel` crate
drivers: gpio: PrimeCell PL061 in Rust
Weilong Chen (1):
Adaptation of rust for openEuler
.gitignore | 5 +
.rustfmt.toml | 12 +
Documentation/core-api/printk-formats.rst | 10 +
Documentation/doc-guide/kernel-doc.rst | 3 +
Documentation/index.rst | 1 +
Documentation/kbuild/kbuild.rst | 17 +
Documentation/kbuild/makefiles.rst | 50 +-
Documentation/process/changes.rst | 41 +
Documentation/rust/arch-support.rst | 25 +
Documentation/rust/coding-guidelines.rst | 216 ++
Documentation/rust/general-information.rst | 79 +
Documentation/rust/index.rst | 22 +
Documentation/rust/quick-start.rst | 232 ++
MAINTAINERS | 15 +
Makefile | 176 +-
arch/Kconfig | 6 +
arch/arm/Kconfig | 1 +
arch/arm64/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/riscv/Kconfig | 1 +
arch/riscv/Makefile | 5 +
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 +
arch/x86/Makefile | 13 +
drivers/gpio/Kconfig | 8 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio_pl061_rust.rs | 370 ++
include/linux/kallsyms.h | 2 +-
include/linux/spinlock.h | 25 +-
init/Kconfig | 42 +
kernel/kallsyms.c | 26 +-
kernel/livepatch/core.c | 4 +-
lib/Kconfig.debug | 155 +
lib/vsprintf.c | 13 +
rust/.gitignore | 10 +
rust/Makefile | 398 +++
rust/alloc/README.md | 33 +
rust/alloc/alloc.rs | 440 +++
rust/alloc/borrow.rs | 498 +++
rust/alloc/boxed.rs | 2026 +++++++++++
rust/alloc/boxed/thin.rs | 217 ++
rust/alloc/collections/mod.rs | 156 +
rust/alloc/fmt.rs | 614 ++++
rust/alloc/lib.rs | 239 ++
rust/alloc/macros.rs | 128 +
rust/alloc/raw_vec.rs | 567 +++
rust/alloc/slice.rs | 1295 +++++++
rust/alloc/str.rs | 641 ++++
rust/alloc/string.rs | 2944 +++++++++++++++
rust/alloc/vec/drain.rs | 186 +
rust/alloc/vec/drain_filter.rs | 145 +
rust/alloc/vec/into_iter.rs | 356 ++
rust/alloc/vec/is_zero.rs | 106 +
rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++
rust/alloc/vec/partial_eq.rs | 49 +
rust/alloc/vec/set_len_on_drop.rs | 30 +
rust/alloc/vec/spec_extend.rs | 174 +
rust/bindgen_parameters | 17 +
rust/build_error.rs | 29 +
rust/compiler_builtins.rs | 79 +
rust/exports.c | 20 +
rust/helpers.c | 644 ++++
rust/kernel/allocator.rs | 65 +
rust/kernel/amba.rs | 258 ++
rust/kernel/bindings.rs | 47 +
rust/kernel/bindings_helper.h | 46 +
rust/kernel/build_assert.rs | 82 +
rust/kernel/c_types.rs | 119 +
rust/kernel/chrdev.rs | 207 ++
rust/kernel/clk.rs | 79 +
rust/kernel/cred.rs | 46 +
rust/kernel/device.rs | 546 +++
rust/kernel/driver.rs | 442 +++
rust/kernel/error.rs | 565 +++
rust/kernel/file.rs | 864 +++++
rust/kernel/gpio.rs | 478 +++
rust/kernel/hwrng.rs | 242 ++
rust/kernel/io_buffer.rs | 153 +
rust/kernel/io_mem.rs | 275 ++
rust/kernel/iov_iter.rs | 81 +
rust/kernel/irq.rs | 411 +++
rust/kernel/kasync.rs | 6 +
rust/kernel/kasync/net.rs | 322 ++
rust/kernel/kunit.rs | 91 +
rust/kernel/lib.rs | 261 ++
rust/kernel/linked_list.rs | 247 ++
rust/kernel/miscdev.rs | 291 ++
rust/kernel/mm.rs | 149 +
rust/kernel/module_param.rs | 498 +++
rust/kernel/net.rs | 391 ++
rust/kernel/net/filter.rs | 447 +++
rust/kernel/of.rs | 63 +
rust/kernel/pages.rs | 144 +
rust/kernel/platform.rs | 223 ++
rust/kernel/power.rs | 118 +
rust/kernel/prelude.rs | 36 +
rust/kernel/print.rs | 405 +++
rust/kernel/random.rs | 42 +
rust/kernel/raw_list.rs | 361 ++
rust/kernel/rbtree.rs | 563 +++
rust/kernel/revocable.rs | 161 +
rust/kernel/security.rs | 38 +
rust/kernel/static_assert.rs | 38 +
rust/kernel/std_vendor.rs | 160 +
rust/kernel/str.rs | 597 ++++
rust/kernel/sync.rs | 161 +
rust/kernel/sync/arc.rs | 503 +++
rust/kernel/sync/condvar.rs | 138 +
rust/kernel/sync/guard.rs | 169 +
rust/kernel/sync/locked_by.rs | 111 +
rust/kernel/sync/mutex.rs | 153 +
rust/kernel/sync/nowait.rs | 188 +
rust/kernel/sync/revocable.rs | 250 ++
rust/kernel/sync/rwsem.rs | 197 +
rust/kernel/sync/seqlock.rs | 202 ++
rust/kernel/sync/smutex.rs | 295 ++
rust/kernel/sync/spinlock.rs | 360 ++
rust/kernel/sysctl.rs | 199 ++
rust/kernel/task.rs | 175 +
rust/kernel/types.rs | 679 ++++
rust/kernel/user_ptr.rs | 175 +
rust/macros/helpers.rs | 79 +
rust/macros/lib.rs | 94 +
rust/macros/module.rs | 631 ++++
samples/Kconfig | 2 +
samples/Makefile | 1 +
samples/rust/Kconfig | 140 +
samples/rust/Makefile | 15 +
samples/rust/hostprogs/.gitignore | 3 +
samples/rust/hostprogs/Makefile | 5 +
samples/rust/hostprogs/a.rs | 7 +
samples/rust/hostprogs/b.rs | 5 +
samples/rust/hostprogs/single.rs | 12 +
samples/rust/rust_chrdev.rs | 50 +
samples/rust/rust_minimal.rs | 35 +
samples/rust/rust_miscdev.rs | 143 +
samples/rust/rust_module_parameters.rs | 69 +
samples/rust/rust_netfilter.rs | 54 +
samples/rust/rust_platform.rs | 22 +
samples/rust/rust_print.rs | 54 +
samples/rust/rust_random.rs | 60 +
samples/rust/rust_semaphore.rs | 171 +
samples/rust/rust_semaphore_c.c | 212 ++
samples/rust/rust_stack_probing.rs | 36 +
samples/rust/rust_sync.rs | 93 +
scripts/Kconfig.include | 2 +-
scripts/Makefile | 3 +
scripts/Makefile.build | 60 +
scripts/Makefile.host | 34 +-
scripts/Makefile.lib | 12 +
scripts/cc-version.sh | 72 +
scripts/checkpatch.pl | 8 +-
scripts/decode_stacktrace.sh | 14 +
scripts/generate_rust_analyzer.py | 134 +
scripts/generate_rust_target.rs | 227 ++
scripts/is_rust_module.sh | 13 +
scripts/kallsyms.c | 47 +-
scripts/kconfig/confdata.c | 156 +-
scripts/min-tool-version.sh | 43 +
scripts/rust-is-available-bindgen-libclang.h | 2 +
scripts/rust-is-available.sh | 158 +
scripts/rustdoc_test_builder.py | 59 +
scripts/rustdoc_test_gen.py | 164 +
tools/include/linux/kallsyms.h | 2 +-
tools/lib/perf/include/perf/event.h | 2 +-
tools/lib/symbol/kallsyms.h | 2 +-
166 files changed, 34760 insertions(+), 43 deletions(-)
create mode 100644 .rustfmt.toml
create mode 100644 Documentation/rust/arch-support.rst
create mode 100644 Documentation/rust/coding-guidelines.rst
create mode 100644 Documentation/rust/general-information.rst
create mode 100644 Documentation/rust/index.rst
create mode 100644 Documentation/rust/quick-start.rst
create mode 100644 drivers/gpio/gpio_pl061_rust.rs
create mode 100644 rust/.gitignore
create mode 100644 rust/Makefile
create mode 100644 rust/alloc/README.md
create mode 100644 rust/alloc/alloc.rs
create mode 100644 rust/alloc/borrow.rs
create mode 100644 rust/alloc/boxed.rs
create mode 100644 rust/alloc/boxed/thin.rs
create mode 100644 rust/alloc/collections/mod.rs
create mode 100644 rust/alloc/fmt.rs
create mode 100644 rust/alloc/lib.rs
create mode 100644 rust/alloc/macros.rs
create mode 100644 rust/alloc/raw_vec.rs
create mode 100644 rust/alloc/slice.rs
create mode 100644 rust/alloc/str.rs
create mode 100644 rust/alloc/string.rs
create mode 100644 rust/alloc/vec/drain.rs
create mode 100644 rust/alloc/vec/drain_filter.rs
create mode 100644 rust/alloc/vec/into_iter.rs
create mode 100644 rust/alloc/vec/is_zero.rs
create mode 100644 rust/alloc/vec/mod.rs
create mode 100644 rust/alloc/vec/partial_eq.rs
create mode 100644 rust/alloc/vec/set_len_on_drop.rs
create mode 100644 rust/alloc/vec/spec_extend.rs
create mode 100644 rust/bindgen_parameters
create mode 100644 rust/build_error.rs
create mode 100644 rust/compiler_builtins.rs
create mode 100644 rust/exports.c
create mode 100644 rust/helpers.c
create mode 100644 rust/kernel/allocator.rs
create mode 100644 rust/kernel/amba.rs
create mode 100644 rust/kernel/bindings.rs
create mode 100644 rust/kernel/bindings_helper.h
create mode 100644 rust/kernel/build_assert.rs
create mode 100644 rust/kernel/c_types.rs
create mode 100644 rust/kernel/chrdev.rs
create mode 100644 rust/kernel/clk.rs
create mode 100644 rust/kernel/cred.rs
create mode 100644 rust/kernel/device.rs
create mode 100644 rust/kernel/driver.rs
create mode 100644 rust/kernel/error.rs
create mode 100644 rust/kernel/file.rs
create mode 100644 rust/kernel/gpio.rs
create mode 100644 rust/kernel/hwrng.rs
create mode 100644 rust/kernel/io_buffer.rs
create mode 100644 rust/kernel/io_mem.rs
create mode 100644 rust/kernel/iov_iter.rs
create mode 100644 rust/kernel/irq.rs
create mode 100644 rust/kernel/kasync.rs
create mode 100644 rust/kernel/kasync/net.rs
create mode 100644 rust/kernel/kunit.rs
create mode 100644 rust/kernel/lib.rs
create mode 100644 rust/kernel/linked_list.rs
create mode 100644 rust/kernel/miscdev.rs
create mode 100644 rust/kernel/mm.rs
create mode 100644 rust/kernel/module_param.rs
create mode 100644 rust/kernel/net.rs
create mode 100644 rust/kernel/net/filter.rs
create mode 100644 rust/kernel/of.rs
create mode 100644 rust/kernel/pages.rs
create mode 100644 rust/kernel/platform.rs
create mode 100644 rust/kernel/power.rs
create mode 100644 rust/kernel/prelude.rs
create mode 100644 rust/kernel/print.rs
create mode 100644 rust/kernel/random.rs
create mode 100644 rust/kernel/raw_list.rs
create mode 100644 rust/kernel/rbtree.rs
create mode 100644 rust/kernel/revocable.rs
create mode 100644 rust/kernel/security.rs
create mode 100644 rust/kernel/static_assert.rs
create mode 100644 rust/kernel/std_vendor.rs
create mode 100644 rust/kernel/str.rs
create mode 100644 rust/kernel/sync.rs
create mode 100644 rust/kernel/sync/arc.rs
create mode 100644 rust/kernel/sync/condvar.rs
create mode 100644 rust/kernel/sync/guard.rs
create mode 100644 rust/kernel/sync/locked_by.rs
create mode 100644 rust/kernel/sync/mutex.rs
create mode 100644 rust/kernel/sync/nowait.rs
create mode 100644 rust/kernel/sync/revocable.rs
create mode 100644 rust/kernel/sync/rwsem.rs
create mode 100644 rust/kernel/sync/seqlock.rs
create mode 100644 rust/kernel/sync/smutex.rs
create mode 100644 rust/kernel/sync/spinlock.rs
create mode 100644 rust/kernel/sysctl.rs
create mode 100644 rust/kernel/task.rs
create mode 100644 rust/kernel/types.rs
create mode 100644 rust/kernel/user_ptr.rs
create mode 100644 rust/macros/helpers.rs
create mode 100644 rust/macros/lib.rs
create mode 100644 rust/macros/module.rs
create mode 100644 samples/rust/Kconfig
create mode 100644 samples/rust/Makefile
create mode 100644 samples/rust/hostprogs/.gitignore
create mode 100644 samples/rust/hostprogs/Makefile
create mode 100644 samples/rust/hostprogs/a.rs
create mode 100644 samples/rust/hostprogs/b.rs
create mode 100644 samples/rust/hostprogs/single.rs
create mode 100644 samples/rust/rust_chrdev.rs
create mode 100644 samples/rust/rust_minimal.rs
create mode 100644 samples/rust/rust_miscdev.rs
create mode 100644 samples/rust/rust_module_parameters.rs
create mode 100644 samples/rust/rust_netfilter.rs
create mode 100644 samples/rust/rust_platform.rs
create mode 100644 samples/rust/rust_print.rs
create mode 100644 samples/rust/rust_random.rs
create mode 100644 samples/rust/rust_semaphore.rs
create mode 100644 samples/rust/rust_semaphore_c.c
create mode 100644 samples/rust/rust_stack_probing.rs
create mode 100644 samples/rust/rust_sync.rs
create mode 100755 scripts/cc-version.sh
create mode 100755 scripts/generate_rust_analyzer.py
create mode 100644 scripts/generate_rust_target.rs
create mode 100755 scripts/is_rust_module.sh
create mode 100755 scripts/min-tool-version.sh
create mode 100644 scripts/rust-is-available-bindgen-libclang.h
create mode 100755 scripts/rust-is-available.sh
create mode 100755 scripts/rustdoc_test_builder.py
create mode 100755 scripts/rustdoc_test_gen.py
--
2.20.1
1
24
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
Rust for openEuler
Boqun Feng (1):
kallsyms: avoid hardcoding the buffer size
Gary Guo (2):
rust: add `build_error` crate
vsprintf: add new `%pA` format specifier
Miguel Ojeda (17):
kallsyms: support "big" kernel symbols
kallsyms: increase maximum kernel symbol length to 512
rust: add C helpers
rust: add `compiler_builtins` crate
rust: import upstream `alloc` crate
rust: adapt `alloc` crate to the kernel
rust: add `macros` crate
rust: export generated symbols
scripts: checkpatch: diagnose uses of `%pA` in the C side
scripts: checkpatch: enable language-independent checks for Rust
scripts: add `rustdoc_test_{builder,gen}.py` scripts
scripts: add `generate_rust_analyzer.py` scripts
scripts: decode_stacktrace: demangle Rust symbols
docs: add Rust documentation
Kbuild: add Rust support
samples: add Rust examples
MAINTAINERS: Rust
Wedson Almeida Filho (3):
rust: add `kernel` crate's `sync` module
rust: add `kernel` crate
drivers: gpio: PrimeCell PL061 in Rust
Weilong Chen (1):
Adaptation of rust for openEuler
.gitignore | 5 +
.rustfmt.toml | 12 +
Documentation/core-api/printk-formats.rst | 10 +
Documentation/doc-guide/kernel-doc.rst | 3 +
Documentation/index.rst | 1 +
Documentation/kbuild/kbuild.rst | 17 +
Documentation/kbuild/makefiles.rst | 50 +-
Documentation/process/changes.rst | 41 +
Documentation/rust/arch-support.rst | 25 +
Documentation/rust/coding-guidelines.rst | 216 ++
Documentation/rust/general-information.rst | 79 +
Documentation/rust/index.rst | 22 +
Documentation/rust/quick-start.rst | 232 ++
MAINTAINERS | 15 +
Makefile | 176 +-
arch/Kconfig | 6 +
arch/arm/Kconfig | 1 +
arch/arm64/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/riscv/Kconfig | 1 +
arch/riscv/Makefile | 5 +
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 +
arch/x86/Makefile | 13 +
drivers/gpio/Kconfig | 8 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio_pl061_rust.rs | 370 ++
include/linux/kallsyms.h | 2 +-
include/linux/spinlock.h | 25 +-
init/Kconfig | 42 +
kernel/kallsyms.c | 26 +-
kernel/livepatch/core.c | 4 +-
lib/Kconfig.debug | 155 +
lib/vsprintf.c | 13 +
rust/.gitignore | 10 +
rust/Makefile | 398 +++
rust/alloc/README.md | 33 +
rust/alloc/alloc.rs | 440 +++
rust/alloc/borrow.rs | 498 +++
rust/alloc/boxed.rs | 2026 +++++++++++
rust/alloc/boxed/thin.rs | 217 ++
rust/alloc/collections/mod.rs | 156 +
rust/alloc/fmt.rs | 614 ++++
rust/alloc/lib.rs | 239 ++
rust/alloc/macros.rs | 128 +
rust/alloc/raw_vec.rs | 567 +++
rust/alloc/slice.rs | 1295 +++++++
rust/alloc/str.rs | 641 ++++
rust/alloc/string.rs | 2944 +++++++++++++++
rust/alloc/vec/drain.rs | 186 +
rust/alloc/vec/drain_filter.rs | 145 +
rust/alloc/vec/into_iter.rs | 356 ++
rust/alloc/vec/is_zero.rs | 106 +
rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++
rust/alloc/vec/partial_eq.rs | 49 +
rust/alloc/vec/set_len_on_drop.rs | 30 +
rust/alloc/vec/spec_extend.rs | 174 +
rust/bindgen_parameters | 17 +
rust/build_error.rs | 29 +
rust/compiler_builtins.rs | 79 +
rust/exports.c | 20 +
rust/helpers.c | 644 ++++
rust/kernel/allocator.rs | 65 +
rust/kernel/amba.rs | 258 ++
rust/kernel/bindings.rs | 47 +
rust/kernel/bindings_helper.h | 46 +
rust/kernel/build_assert.rs | 82 +
rust/kernel/c_types.rs | 119 +
rust/kernel/chrdev.rs | 207 ++
rust/kernel/clk.rs | 79 +
rust/kernel/cred.rs | 46 +
rust/kernel/device.rs | 546 +++
rust/kernel/driver.rs | 442 +++
rust/kernel/error.rs | 565 +++
rust/kernel/file.rs | 864 +++++
rust/kernel/gpio.rs | 478 +++
rust/kernel/hwrng.rs | 242 ++
rust/kernel/io_buffer.rs | 153 +
rust/kernel/io_mem.rs | 275 ++
rust/kernel/iov_iter.rs | 81 +
rust/kernel/irq.rs | 411 +++
rust/kernel/kasync.rs | 6 +
rust/kernel/kasync/net.rs | 322 ++
rust/kernel/kunit.rs | 91 +
rust/kernel/lib.rs | 261 ++
rust/kernel/linked_list.rs | 247 ++
rust/kernel/miscdev.rs | 291 ++
rust/kernel/mm.rs | 149 +
rust/kernel/module_param.rs | 498 +++
rust/kernel/net.rs | 391 ++
rust/kernel/net/filter.rs | 447 +++
rust/kernel/of.rs | 63 +
rust/kernel/pages.rs | 144 +
rust/kernel/platform.rs | 223 ++
rust/kernel/power.rs | 118 +
rust/kernel/prelude.rs | 36 +
rust/kernel/print.rs | 405 +++
rust/kernel/random.rs | 42 +
rust/kernel/raw_list.rs | 361 ++
rust/kernel/rbtree.rs | 563 +++
rust/kernel/revocable.rs | 161 +
rust/kernel/security.rs | 38 +
rust/kernel/static_assert.rs | 38 +
rust/kernel/std_vendor.rs | 160 +
rust/kernel/str.rs | 597 ++++
rust/kernel/sync.rs | 161 +
rust/kernel/sync/arc.rs | 503 +++
rust/kernel/sync/condvar.rs | 138 +
rust/kernel/sync/guard.rs | 169 +
rust/kernel/sync/locked_by.rs | 111 +
rust/kernel/sync/mutex.rs | 153 +
rust/kernel/sync/nowait.rs | 188 +
rust/kernel/sync/revocable.rs | 250 ++
rust/kernel/sync/rwsem.rs | 197 +
rust/kernel/sync/seqlock.rs | 202 ++
rust/kernel/sync/smutex.rs | 295 ++
rust/kernel/sync/spinlock.rs | 360 ++
rust/kernel/sysctl.rs | 199 ++
rust/kernel/task.rs | 175 +
rust/kernel/types.rs | 679 ++++
rust/kernel/user_ptr.rs | 175 +
rust/macros/helpers.rs | 79 +
rust/macros/lib.rs | 94 +
rust/macros/module.rs | 631 ++++
samples/Kconfig | 2 +
samples/Makefile | 1 +
samples/rust/Kconfig | 140 +
samples/rust/Makefile | 15 +
samples/rust/hostprogs/.gitignore | 3 +
samples/rust/hostprogs/Makefile | 5 +
samples/rust/hostprogs/a.rs | 7 +
samples/rust/hostprogs/b.rs | 5 +
samples/rust/hostprogs/single.rs | 12 +
samples/rust/rust_chrdev.rs | 50 +
samples/rust/rust_minimal.rs | 35 +
samples/rust/rust_miscdev.rs | 143 +
samples/rust/rust_module_parameters.rs | 69 +
samples/rust/rust_netfilter.rs | 54 +
samples/rust/rust_platform.rs | 22 +
samples/rust/rust_print.rs | 54 +
samples/rust/rust_random.rs | 60 +
samples/rust/rust_semaphore.rs | 171 +
samples/rust/rust_semaphore_c.c | 212 ++
samples/rust/rust_stack_probing.rs | 36 +
samples/rust/rust_sync.rs | 93 +
scripts/Kconfig.include | 2 +-
scripts/Makefile | 3 +
scripts/Makefile.build | 60 +
scripts/Makefile.host | 34 +-
scripts/Makefile.lib | 12 +
scripts/cc-version.sh | 72 +
scripts/checkpatch.pl | 8 +-
scripts/decode_stacktrace.sh | 14 +
scripts/generate_rust_analyzer.py | 134 +
scripts/generate_rust_target.rs | 227 ++
scripts/is_rust_module.sh | 13 +
scripts/kallsyms.c | 47 +-
scripts/kconfig/confdata.c | 156 +-
scripts/min-tool-version.sh | 43 +
scripts/rust-is-available-bindgen-libclang.h | 2 +
scripts/rust-is-available.sh | 158 +
scripts/rustdoc_test_builder.py | 59 +
scripts/rustdoc_test_gen.py | 164 +
tools/include/linux/kallsyms.h | 2 +-
tools/lib/perf/include/perf/event.h | 2 +-
tools/lib/symbol/kallsyms.h | 2 +-
166 files changed, 34760 insertions(+), 43 deletions(-)
create mode 100644 .rustfmt.toml
create mode 100644 Documentation/rust/arch-support.rst
create mode 100644 Documentation/rust/coding-guidelines.rst
create mode 100644 Documentation/rust/general-information.rst
create mode 100644 Documentation/rust/index.rst
create mode 100644 Documentation/rust/quick-start.rst
create mode 100644 drivers/gpio/gpio_pl061_rust.rs
create mode 100644 rust/.gitignore
create mode 100644 rust/Makefile
create mode 100644 rust/alloc/README.md
create mode 100644 rust/alloc/alloc.rs
create mode 100644 rust/alloc/borrow.rs
create mode 100644 rust/alloc/boxed.rs
create mode 100644 rust/alloc/boxed/thin.rs
create mode 100644 rust/alloc/collections/mod.rs
create mode 100644 rust/alloc/fmt.rs
create mode 100644 rust/alloc/lib.rs
create mode 100644 rust/alloc/macros.rs
create mode 100644 rust/alloc/raw_vec.rs
create mode 100644 rust/alloc/slice.rs
create mode 100644 rust/alloc/str.rs
create mode 100644 rust/alloc/string.rs
create mode 100644 rust/alloc/vec/drain.rs
create mode 100644 rust/alloc/vec/drain_filter.rs
create mode 100644 rust/alloc/vec/into_iter.rs
create mode 100644 rust/alloc/vec/is_zero.rs
create mode 100644 rust/alloc/vec/mod.rs
create mode 100644 rust/alloc/vec/partial_eq.rs
create mode 100644 rust/alloc/vec/set_len_on_drop.rs
create mode 100644 rust/alloc/vec/spec_extend.rs
create mode 100644 rust/bindgen_parameters
create mode 100644 rust/build_error.rs
create mode 100644 rust/compiler_builtins.rs
create mode 100644 rust/exports.c
create mode 100644 rust/helpers.c
create mode 100644 rust/kernel/allocator.rs
create mode 100644 rust/kernel/amba.rs
create mode 100644 rust/kernel/bindings.rs
create mode 100644 rust/kernel/bindings_helper.h
create mode 100644 rust/kernel/build_assert.rs
create mode 100644 rust/kernel/c_types.rs
create mode 100644 rust/kernel/chrdev.rs
create mode 100644 rust/kernel/clk.rs
create mode 100644 rust/kernel/cred.rs
create mode 100644 rust/kernel/device.rs
create mode 100644 rust/kernel/driver.rs
create mode 100644 rust/kernel/error.rs
create mode 100644 rust/kernel/file.rs
create mode 100644 rust/kernel/gpio.rs
create mode 100644 rust/kernel/hwrng.rs
create mode 100644 rust/kernel/io_buffer.rs
create mode 100644 rust/kernel/io_mem.rs
create mode 100644 rust/kernel/iov_iter.rs
create mode 100644 rust/kernel/irq.rs
create mode 100644 rust/kernel/kasync.rs
create mode 100644 rust/kernel/kasync/net.rs
create mode 100644 rust/kernel/kunit.rs
create mode 100644 rust/kernel/lib.rs
create mode 100644 rust/kernel/linked_list.rs
create mode 100644 rust/kernel/miscdev.rs
create mode 100644 rust/kernel/mm.rs
create mode 100644 rust/kernel/module_param.rs
create mode 100644 rust/kernel/net.rs
create mode 100644 rust/kernel/net/filter.rs
create mode 100644 rust/kernel/of.rs
create mode 100644 rust/kernel/pages.rs
create mode 100644 rust/kernel/platform.rs
create mode 100644 rust/kernel/power.rs
create mode 100644 rust/kernel/prelude.rs
create mode 100644 rust/kernel/print.rs
create mode 100644 rust/kernel/random.rs
create mode 100644 rust/kernel/raw_list.rs
create mode 100644 rust/kernel/rbtree.rs
create mode 100644 rust/kernel/revocable.rs
create mode 100644 rust/kernel/security.rs
create mode 100644 rust/kernel/static_assert.rs
create mode 100644 rust/kernel/std_vendor.rs
create mode 100644 rust/kernel/str.rs
create mode 100644 rust/kernel/sync.rs
create mode 100644 rust/kernel/sync/arc.rs
create mode 100644 rust/kernel/sync/condvar.rs
create mode 100644 rust/kernel/sync/guard.rs
create mode 100644 rust/kernel/sync/locked_by.rs
create mode 100644 rust/kernel/sync/mutex.rs
create mode 100644 rust/kernel/sync/nowait.rs
create mode 100644 rust/kernel/sync/revocable.rs
create mode 100644 rust/kernel/sync/rwsem.rs
create mode 100644 rust/kernel/sync/seqlock.rs
create mode 100644 rust/kernel/sync/smutex.rs
create mode 100644 rust/kernel/sync/spinlock.rs
create mode 100644 rust/kernel/sysctl.rs
create mode 100644 rust/kernel/task.rs
create mode 100644 rust/kernel/types.rs
create mode 100644 rust/kernel/user_ptr.rs
create mode 100644 rust/macros/helpers.rs
create mode 100644 rust/macros/lib.rs
create mode 100644 rust/macros/module.rs
create mode 100644 samples/rust/Kconfig
create mode 100644 samples/rust/Makefile
create mode 100644 samples/rust/hostprogs/.gitignore
create mode 100644 samples/rust/hostprogs/Makefile
create mode 100644 samples/rust/hostprogs/a.rs
create mode 100644 samples/rust/hostprogs/b.rs
create mode 100644 samples/rust/hostprogs/single.rs
create mode 100644 samples/rust/rust_chrdev.rs
create mode 100644 samples/rust/rust_minimal.rs
create mode 100644 samples/rust/rust_miscdev.rs
create mode 100644 samples/rust/rust_module_parameters.rs
create mode 100644 samples/rust/rust_netfilter.rs
create mode 100644 samples/rust/rust_platform.rs
create mode 100644 samples/rust/rust_print.rs
create mode 100644 samples/rust/rust_random.rs
create mode 100644 samples/rust/rust_semaphore.rs
create mode 100644 samples/rust/rust_semaphore_c.c
create mode 100644 samples/rust/rust_stack_probing.rs
create mode 100644 samples/rust/rust_sync.rs
create mode 100755 scripts/cc-version.sh
create mode 100755 scripts/generate_rust_analyzer.py
create mode 100644 scripts/generate_rust_target.rs
create mode 100755 scripts/is_rust_module.sh
create mode 100755 scripts/min-tool-version.sh
create mode 100644 scripts/rust-is-available-bindgen-libclang.h
create mode 100755 scripts/rust-is-available.sh
create mode 100755 scripts/rustdoc_test_builder.py
create mode 100755 scripts/rustdoc_test_gen.py
--
2.20.1
1
24
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
Rust for openEuler
Boqun Feng (1):
kallsyms: avoid hardcoding the buffer size
Gary Guo (2):
rust: add `build_error` crate
vsprintf: add new `%pA` format specifier
Miguel Ojeda (17):
kallsyms: support "big" kernel symbols
kallsyms: increase maximum kernel symbol length to 512
rust: add C helpers
rust: add `compiler_builtins` crate
rust: import upstream `alloc` crate
rust: adapt `alloc` crate to the kernel
rust: add `macros` crate
rust: export generated symbols
scripts: checkpatch: diagnose uses of `%pA` in the C side
scripts: checkpatch: enable language-independent checks for Rust
scripts: add `rustdoc_test_{builder,gen}.py` scripts
scripts: add `generate_rust_analyzer.py` scripts
scripts: decode_stacktrace: demangle Rust symbols
docs: add Rust documentation
Kbuild: add Rust support
samples: add Rust examples
MAINTAINERS: Rust
Wedson Almeida Filho (3):
rust: add `kernel` crate's `sync` module
rust: add `kernel` crate
drivers: gpio: PrimeCell PL061 in Rust
Weilong Chen (1):
Adaptation of rust for openEuler
.gitignore | 5 +
.rustfmt.toml | 12 +
Documentation/core-api/printk-formats.rst | 10 +
Documentation/doc-guide/kernel-doc.rst | 3 +
Documentation/index.rst | 1 +
Documentation/kbuild/kbuild.rst | 17 +
Documentation/kbuild/makefiles.rst | 50 +-
Documentation/process/changes.rst | 41 +
Documentation/rust/arch-support.rst | 25 +
Documentation/rust/coding-guidelines.rst | 216 ++
Documentation/rust/general-information.rst | 79 +
Documentation/rust/index.rst | 22 +
Documentation/rust/quick-start.rst | 232 ++
MAINTAINERS | 15 +
Makefile | 176 +-
arch/Kconfig | 6 +
arch/arm/Kconfig | 1 +
arch/arm64/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/riscv/Kconfig | 1 +
arch/riscv/Makefile | 5 +
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 +
arch/x86/Makefile | 13 +
drivers/gpio/Kconfig | 8 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio_pl061_rust.rs | 370 ++
include/linux/kallsyms.h | 2 +-
include/linux/spinlock.h | 25 +-
init/Kconfig | 42 +
kernel/kallsyms.c | 26 +-
kernel/livepatch/core.c | 4 +-
lib/Kconfig.debug | 155 +
lib/vsprintf.c | 13 +
rust/.gitignore | 10 +
rust/Makefile | 398 +++
rust/alloc/README.md | 33 +
rust/alloc/alloc.rs | 440 +++
rust/alloc/borrow.rs | 498 +++
rust/alloc/boxed.rs | 2026 +++++++++++
rust/alloc/boxed/thin.rs | 217 ++
rust/alloc/collections/mod.rs | 156 +
rust/alloc/fmt.rs | 614 ++++
rust/alloc/lib.rs | 239 ++
rust/alloc/macros.rs | 128 +
rust/alloc/raw_vec.rs | 567 +++
rust/alloc/slice.rs | 1295 +++++++
rust/alloc/str.rs | 641 ++++
rust/alloc/string.rs | 2944 +++++++++++++++
rust/alloc/vec/drain.rs | 186 +
rust/alloc/vec/drain_filter.rs | 145 +
rust/alloc/vec/into_iter.rs | 356 ++
rust/alloc/vec/is_zero.rs | 106 +
rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++
rust/alloc/vec/partial_eq.rs | 49 +
rust/alloc/vec/set_len_on_drop.rs | 30 +
rust/alloc/vec/spec_extend.rs | 174 +
rust/bindgen_parameters | 17 +
rust/build_error.rs | 29 +
rust/compiler_builtins.rs | 79 +
rust/exports.c | 20 +
rust/helpers.c | 644 ++++
rust/kernel/allocator.rs | 65 +
rust/kernel/amba.rs | 258 ++
rust/kernel/bindings.rs | 47 +
rust/kernel/bindings_helper.h | 46 +
rust/kernel/build_assert.rs | 82 +
rust/kernel/c_types.rs | 119 +
rust/kernel/chrdev.rs | 207 ++
rust/kernel/clk.rs | 79 +
rust/kernel/cred.rs | 46 +
rust/kernel/device.rs | 546 +++
rust/kernel/driver.rs | 442 +++
rust/kernel/error.rs | 565 +++
rust/kernel/file.rs | 864 +++++
rust/kernel/gpio.rs | 478 +++
rust/kernel/hwrng.rs | 242 ++
rust/kernel/io_buffer.rs | 153 +
rust/kernel/io_mem.rs | 275 ++
rust/kernel/iov_iter.rs | 81 +
rust/kernel/irq.rs | 411 +++
rust/kernel/kasync.rs | 6 +
rust/kernel/kasync/net.rs | 322 ++
rust/kernel/kunit.rs | 91 +
rust/kernel/lib.rs | 261 ++
rust/kernel/linked_list.rs | 247 ++
rust/kernel/miscdev.rs | 291 ++
rust/kernel/mm.rs | 149 +
rust/kernel/module_param.rs | 498 +++
rust/kernel/net.rs | 391 ++
rust/kernel/net/filter.rs | 447 +++
rust/kernel/of.rs | 63 +
rust/kernel/pages.rs | 144 +
rust/kernel/platform.rs | 223 ++
rust/kernel/power.rs | 118 +
rust/kernel/prelude.rs | 36 +
rust/kernel/print.rs | 405 +++
rust/kernel/random.rs | 42 +
rust/kernel/raw_list.rs | 361 ++
rust/kernel/rbtree.rs | 563 +++
rust/kernel/revocable.rs | 161 +
rust/kernel/security.rs | 38 +
rust/kernel/static_assert.rs | 38 +
rust/kernel/std_vendor.rs | 160 +
rust/kernel/str.rs | 597 ++++
rust/kernel/sync.rs | 161 +
rust/kernel/sync/arc.rs | 503 +++
rust/kernel/sync/condvar.rs | 138 +
rust/kernel/sync/guard.rs | 169 +
rust/kernel/sync/locked_by.rs | 111 +
rust/kernel/sync/mutex.rs | 153 +
rust/kernel/sync/nowait.rs | 188 +
rust/kernel/sync/revocable.rs | 250 ++
rust/kernel/sync/rwsem.rs | 197 +
rust/kernel/sync/seqlock.rs | 202 ++
rust/kernel/sync/smutex.rs | 295 ++
rust/kernel/sync/spinlock.rs | 360 ++
rust/kernel/sysctl.rs | 199 ++
rust/kernel/task.rs | 175 +
rust/kernel/types.rs | 679 ++++
rust/kernel/user_ptr.rs | 175 +
rust/macros/helpers.rs | 79 +
rust/macros/lib.rs | 94 +
rust/macros/module.rs | 631 ++++
samples/Kconfig | 2 +
samples/Makefile | 1 +
samples/rust/Kconfig | 140 +
samples/rust/Makefile | 15 +
samples/rust/hostprogs/.gitignore | 3 +
samples/rust/hostprogs/Makefile | 5 +
samples/rust/hostprogs/a.rs | 7 +
samples/rust/hostprogs/b.rs | 5 +
samples/rust/hostprogs/single.rs | 12 +
samples/rust/rust_chrdev.rs | 50 +
samples/rust/rust_minimal.rs | 35 +
samples/rust/rust_miscdev.rs | 143 +
samples/rust/rust_module_parameters.rs | 69 +
samples/rust/rust_netfilter.rs | 54 +
samples/rust/rust_platform.rs | 22 +
samples/rust/rust_print.rs | 54 +
samples/rust/rust_random.rs | 60 +
samples/rust/rust_semaphore.rs | 171 +
samples/rust/rust_semaphore_c.c | 212 ++
samples/rust/rust_stack_probing.rs | 36 +
samples/rust/rust_sync.rs | 93 +
scripts/Kconfig.include | 2 +-
scripts/Makefile | 3 +
scripts/Makefile.build | 60 +
scripts/Makefile.host | 34 +-
scripts/Makefile.lib | 12 +
scripts/cc-version.sh | 72 +
scripts/checkpatch.pl | 8 +-
scripts/decode_stacktrace.sh | 14 +
scripts/generate_rust_analyzer.py | 134 +
scripts/generate_rust_target.rs | 227 ++
scripts/is_rust_module.sh | 13 +
scripts/kallsyms.c | 47 +-
scripts/kconfig/confdata.c | 156 +-
scripts/min-tool-version.sh | 43 +
scripts/rust-is-available-bindgen-libclang.h | 2 +
scripts/rust-is-available.sh | 158 +
scripts/rustdoc_test_builder.py | 59 +
scripts/rustdoc_test_gen.py | 164 +
tools/include/linux/kallsyms.h | 2 +-
tools/lib/perf/include/perf/event.h | 2 +-
tools/lib/symbol/kallsyms.h | 2 +-
166 files changed, 34760 insertions(+), 43 deletions(-)
create mode 100644 .rustfmt.toml
create mode 100644 Documentation/rust/arch-support.rst
create mode 100644 Documentation/rust/coding-guidelines.rst
create mode 100644 Documentation/rust/general-information.rst
create mode 100644 Documentation/rust/index.rst
create mode 100644 Documentation/rust/quick-start.rst
create mode 100644 drivers/gpio/gpio_pl061_rust.rs
create mode 100644 rust/.gitignore
create mode 100644 rust/Makefile
create mode 100644 rust/alloc/README.md
create mode 100644 rust/alloc/alloc.rs
create mode 100644 rust/alloc/borrow.rs
create mode 100644 rust/alloc/boxed.rs
create mode 100644 rust/alloc/boxed/thin.rs
create mode 100644 rust/alloc/collections/mod.rs
create mode 100644 rust/alloc/fmt.rs
create mode 100644 rust/alloc/lib.rs
create mode 100644 rust/alloc/macros.rs
create mode 100644 rust/alloc/raw_vec.rs
create mode 100644 rust/alloc/slice.rs
create mode 100644 rust/alloc/str.rs
create mode 100644 rust/alloc/string.rs
create mode 100644 rust/alloc/vec/drain.rs
create mode 100644 rust/alloc/vec/drain_filter.rs
create mode 100644 rust/alloc/vec/into_iter.rs
create mode 100644 rust/alloc/vec/is_zero.rs
create mode 100644 rust/alloc/vec/mod.rs
create mode 100644 rust/alloc/vec/partial_eq.rs
create mode 100644 rust/alloc/vec/set_len_on_drop.rs
create mode 100644 rust/alloc/vec/spec_extend.rs
create mode 100644 rust/bindgen_parameters
create mode 100644 rust/build_error.rs
create mode 100644 rust/compiler_builtins.rs
create mode 100644 rust/exports.c
create mode 100644 rust/helpers.c
create mode 100644 rust/kernel/allocator.rs
create mode 100644 rust/kernel/amba.rs
create mode 100644 rust/kernel/bindings.rs
create mode 100644 rust/kernel/bindings_helper.h
create mode 100644 rust/kernel/build_assert.rs
create mode 100644 rust/kernel/c_types.rs
create mode 100644 rust/kernel/chrdev.rs
create mode 100644 rust/kernel/clk.rs
create mode 100644 rust/kernel/cred.rs
create mode 100644 rust/kernel/device.rs
create mode 100644 rust/kernel/driver.rs
create mode 100644 rust/kernel/error.rs
create mode 100644 rust/kernel/file.rs
create mode 100644 rust/kernel/gpio.rs
create mode 100644 rust/kernel/hwrng.rs
create mode 100644 rust/kernel/io_buffer.rs
create mode 100644 rust/kernel/io_mem.rs
create mode 100644 rust/kernel/iov_iter.rs
create mode 100644 rust/kernel/irq.rs
create mode 100644 rust/kernel/kasync.rs
create mode 100644 rust/kernel/kasync/net.rs
create mode 100644 rust/kernel/kunit.rs
create mode 100644 rust/kernel/lib.rs
create mode 100644 rust/kernel/linked_list.rs
create mode 100644 rust/kernel/miscdev.rs
create mode 100644 rust/kernel/mm.rs
create mode 100644 rust/kernel/module_param.rs
create mode 100644 rust/kernel/net.rs
create mode 100644 rust/kernel/net/filter.rs
create mode 100644 rust/kernel/of.rs
create mode 100644 rust/kernel/pages.rs
create mode 100644 rust/kernel/platform.rs
create mode 100644 rust/kernel/power.rs
create mode 100644 rust/kernel/prelude.rs
create mode 100644 rust/kernel/print.rs
create mode 100644 rust/kernel/random.rs
create mode 100644 rust/kernel/raw_list.rs
create mode 100644 rust/kernel/rbtree.rs
create mode 100644 rust/kernel/revocable.rs
create mode 100644 rust/kernel/security.rs
create mode 100644 rust/kernel/static_assert.rs
create mode 100644 rust/kernel/std_vendor.rs
create mode 100644 rust/kernel/str.rs
create mode 100644 rust/kernel/sync.rs
create mode 100644 rust/kernel/sync/arc.rs
create mode 100644 rust/kernel/sync/condvar.rs
create mode 100644 rust/kernel/sync/guard.rs
create mode 100644 rust/kernel/sync/locked_by.rs
create mode 100644 rust/kernel/sync/mutex.rs
create mode 100644 rust/kernel/sync/nowait.rs
create mode 100644 rust/kernel/sync/revocable.rs
create mode 100644 rust/kernel/sync/rwsem.rs
create mode 100644 rust/kernel/sync/seqlock.rs
create mode 100644 rust/kernel/sync/smutex.rs
create mode 100644 rust/kernel/sync/spinlock.rs
create mode 100644 rust/kernel/sysctl.rs
create mode 100644 rust/kernel/task.rs
create mode 100644 rust/kernel/types.rs
create mode 100644 rust/kernel/user_ptr.rs
create mode 100644 rust/macros/helpers.rs
create mode 100644 rust/macros/lib.rs
create mode 100644 rust/macros/module.rs
create mode 100644 samples/rust/Kconfig
create mode 100644 samples/rust/Makefile
create mode 100644 samples/rust/hostprogs/.gitignore
create mode 100644 samples/rust/hostprogs/Makefile
create mode 100644 samples/rust/hostprogs/a.rs
create mode 100644 samples/rust/hostprogs/b.rs
create mode 100644 samples/rust/hostprogs/single.rs
create mode 100644 samples/rust/rust_chrdev.rs
create mode 100644 samples/rust/rust_minimal.rs
create mode 100644 samples/rust/rust_miscdev.rs
create mode 100644 samples/rust/rust_module_parameters.rs
create mode 100644 samples/rust/rust_netfilter.rs
create mode 100644 samples/rust/rust_platform.rs
create mode 100644 samples/rust/rust_print.rs
create mode 100644 samples/rust/rust_random.rs
create mode 100644 samples/rust/rust_semaphore.rs
create mode 100644 samples/rust/rust_semaphore_c.c
create mode 100644 samples/rust/rust_stack_probing.rs
create mode 100644 samples/rust/rust_sync.rs
create mode 100755 scripts/cc-version.sh
create mode 100755 scripts/generate_rust_analyzer.py
create mode 100644 scripts/generate_rust_target.rs
create mode 100755 scripts/is_rust_module.sh
create mode 100755 scripts/min-tool-version.sh
create mode 100644 scripts/rust-is-available-bindgen-libclang.h
create mode 100755 scripts/rust-is-available.sh
create mode 100755 scripts/rustdoc_test_builder.py
create mode 100755 scripts/rustdoc_test_gen.py
--
2.20.1
1
24

27 Jul '22
From: Jan Kara <jack(a)suse.cz>
hulk inclusion
category: bugfix
bugzilla: 186975, https://gitee.com/openeuler/kernel/issues/I5HT6F
CVE: NA
Reference: https://patchwork.ozlabs.org/project/linux-ext4/list/?series=309169
--------------------------------
Do not reclaim entries that are currently used by somebody from a
shrinker. Firstly, these entries are likely useful. Secondly, we will
need to keep such entries to protect pending increment of xattr block
refcount.
CC: stable(a)vger.kernel.org
Fixes: 82939d7999df ("ext4: convert to mbcache2")
Signed-off-by: Jan Kara <jack(a)suse.cz>
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/mbcache.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/fs/mbcache.c b/fs/mbcache.c
index 081ccf0caee3..12203e5a91e7 100644
--- a/fs/mbcache.c
+++ b/fs/mbcache.c
@@ -287,7 +287,7 @@ static unsigned long mb_cache_shrink(struct mb_cache *cache,
while (nr_to_scan-- && !list_empty(&cache->c_list)) {
entry = list_first_entry(&cache->c_list,
struct mb_cache_entry, e_list);
- if (entry->e_referenced) {
+ if (entry->e_referenced || atomic_read(&entry->e_refcnt) > 2) {
entry->e_referenced = 0;
list_move_tail(&entry->e_list, &cache->c_list);
continue;
@@ -301,6 +301,14 @@ static unsigned long mb_cache_shrink(struct mb_cache *cache,
spin_unlock(&cache->c_list_lock);
head = mb_cache_entry_head(cache, entry->e_key);
hlist_bl_lock(head);
+ /* Now a reliable check if the entry didn't get used... */
+ if (atomic_read(&entry->e_refcnt) > 2) {
+ hlist_bl_unlock(head);
+ spin_lock(&cache->c_list_lock);
+ list_add_tail(&entry->e_list, &cache->c_list);
+ cache->c_entry_count++;
+ continue;
+ }
if (!hlist_bl_unhashed(&entry->e_hash_list)) {
hlist_bl_del_init(&entry->e_hash_list);
atomic_dec(&entry->e_refcnt);
--
2.25.1
1
4
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
Rust for openEuler
Boqun Feng (1):
kallsyms: avoid hardcoding the buffer size
Gary Guo (2):
rust: add `build_error` crate
vsprintf: add new `%pA` format specifier
Miguel Ojeda (17):
kallsyms: support "big" kernel symbols
kallsyms: increase maximum kernel symbol length to 512
rust: add C helpers
rust: add `compiler_builtins` crate
rust: import upstream `alloc` crate
rust: adapt `alloc` crate to the kernel
rust: add `macros` crate
rust: export generated symbols
scripts: checkpatch: diagnose uses of `%pA` in the C side
scripts: checkpatch: enable language-independent checks for Rust
scripts: add `rustdoc_test_{builder,gen}.py` scripts
scripts: add `generate_rust_analyzer.py` scripts
scripts: decode_stacktrace: demangle Rust symbols
docs: add Rust documentation
Kbuild: add Rust support
samples: add Rust examples
MAINTAINERS: Rust
Wedson Almeida Filho (3):
rust: add `kernel` crate's `sync` module
rust: add `kernel` crate
drivers: gpio: PrimeCell PL061 in Rust
Weilong Chen (1):
Adaptation of rust for openEuler
.gitignore | 5 +
.rustfmt.toml | 12 +
Documentation/core-api/printk-formats.rst | 10 +
Documentation/doc-guide/kernel-doc.rst | 3 +
Documentation/index.rst | 1 +
Documentation/kbuild/kbuild.rst | 17 +
Documentation/kbuild/makefiles.rst | 50 +-
Documentation/process/changes.rst | 41 +
Documentation/rust/arch-support.rst | 25 +
Documentation/rust/coding-guidelines.rst | 216 ++
Documentation/rust/general-information.rst | 79 +
Documentation/rust/index.rst | 22 +
Documentation/rust/quick-start.rst | 232 ++
MAINTAINERS | 15 +
Makefile | 176 +-
arch/Kconfig | 6 +
arch/arm/Kconfig | 1 +
arch/arm64/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
arch/riscv/Kconfig | 1 +
arch/riscv/Makefile | 5 +
arch/um/Kconfig | 1 +
arch/x86/Kconfig | 1 +
arch/x86/Makefile | 13 +
drivers/gpio/Kconfig | 8 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio_pl061_rust.rs | 370 ++
include/linux/kallsyms.h | 2 +-
include/linux/spinlock.h | 25 +-
init/Kconfig | 42 +
kernel/kallsyms.c | 26 +-
kernel/livepatch/core.c | 4 +-
lib/Kconfig.debug | 155 +
lib/vsprintf.c | 13 +
rust/.gitignore | 10 +
rust/Makefile | 398 +++
rust/alloc/README.md | 33 +
rust/alloc/alloc.rs | 440 +++
rust/alloc/borrow.rs | 498 +++
rust/alloc/boxed.rs | 2026 +++++++++++
rust/alloc/boxed/thin.rs | 217 ++
rust/alloc/collections/mod.rs | 156 +
rust/alloc/fmt.rs | 614 ++++
rust/alloc/lib.rs | 239 ++
rust/alloc/macros.rs | 128 +
rust/alloc/raw_vec.rs | 567 +++
rust/alloc/slice.rs | 1295 +++++++
rust/alloc/str.rs | 641 ++++
rust/alloc/string.rs | 2944 +++++++++++++++
rust/alloc/vec/drain.rs | 186 +
rust/alloc/vec/drain_filter.rs | 145 +
rust/alloc/vec/into_iter.rs | 356 ++
rust/alloc/vec/is_zero.rs | 106 +
rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++
rust/alloc/vec/partial_eq.rs | 49 +
rust/alloc/vec/set_len_on_drop.rs | 30 +
rust/alloc/vec/spec_extend.rs | 174 +
rust/bindgen_parameters | 17 +
rust/build_error.rs | 29 +
rust/compiler_builtins.rs | 79 +
rust/exports.c | 20 +
rust/helpers.c | 644 ++++
rust/kernel/allocator.rs | 65 +
rust/kernel/amba.rs | 258 ++
rust/kernel/bindings.rs | 47 +
rust/kernel/bindings_helper.h | 46 +
rust/kernel/build_assert.rs | 82 +
rust/kernel/c_types.rs | 119 +
rust/kernel/chrdev.rs | 207 ++
rust/kernel/clk.rs | 79 +
rust/kernel/cred.rs | 46 +
rust/kernel/device.rs | 546 +++
rust/kernel/driver.rs | 442 +++
rust/kernel/error.rs | 565 +++
rust/kernel/file.rs | 864 +++++
rust/kernel/gpio.rs | 478 +++
rust/kernel/hwrng.rs | 242 ++
rust/kernel/io_buffer.rs | 153 +
rust/kernel/io_mem.rs | 275 ++
rust/kernel/iov_iter.rs | 81 +
rust/kernel/irq.rs | 411 +++
rust/kernel/kasync.rs | 6 +
rust/kernel/kasync/net.rs | 322 ++
rust/kernel/kunit.rs | 91 +
rust/kernel/lib.rs | 261 ++
rust/kernel/linked_list.rs | 247 ++
rust/kernel/miscdev.rs | 291 ++
rust/kernel/mm.rs | 149 +
rust/kernel/module_param.rs | 498 +++
rust/kernel/net.rs | 391 ++
rust/kernel/net/filter.rs | 447 +++
rust/kernel/of.rs | 63 +
rust/kernel/pages.rs | 144 +
rust/kernel/platform.rs | 223 ++
rust/kernel/power.rs | 118 +
rust/kernel/prelude.rs | 36 +
rust/kernel/print.rs | 405 +++
rust/kernel/random.rs | 42 +
rust/kernel/raw_list.rs | 361 ++
rust/kernel/rbtree.rs | 563 +++
rust/kernel/revocable.rs | 161 +
rust/kernel/security.rs | 38 +
rust/kernel/static_assert.rs | 38 +
rust/kernel/std_vendor.rs | 160 +
rust/kernel/str.rs | 597 ++++
rust/kernel/sync.rs | 161 +
rust/kernel/sync/arc.rs | 503 +++
rust/kernel/sync/condvar.rs | 138 +
rust/kernel/sync/guard.rs | 169 +
rust/kernel/sync/locked_by.rs | 111 +
rust/kernel/sync/mutex.rs | 153 +
rust/kernel/sync/nowait.rs | 188 +
rust/kernel/sync/revocable.rs | 250 ++
rust/kernel/sync/rwsem.rs | 197 +
rust/kernel/sync/seqlock.rs | 202 ++
rust/kernel/sync/smutex.rs | 295 ++
rust/kernel/sync/spinlock.rs | 360 ++
rust/kernel/sysctl.rs | 199 ++
rust/kernel/task.rs | 175 +
rust/kernel/types.rs | 679 ++++
rust/kernel/user_ptr.rs | 175 +
rust/macros/helpers.rs | 79 +
rust/macros/lib.rs | 94 +
rust/macros/module.rs | 631 ++++
samples/Kconfig | 2 +
samples/Makefile | 1 +
samples/rust/Kconfig | 140 +
samples/rust/Makefile | 15 +
samples/rust/hostprogs/.gitignore | 3 +
samples/rust/hostprogs/Makefile | 5 +
samples/rust/hostprogs/a.rs | 7 +
samples/rust/hostprogs/b.rs | 5 +
samples/rust/hostprogs/single.rs | 12 +
samples/rust/rust_chrdev.rs | 50 +
samples/rust/rust_minimal.rs | 35 +
samples/rust/rust_miscdev.rs | 143 +
samples/rust/rust_module_parameters.rs | 69 +
samples/rust/rust_netfilter.rs | 54 +
samples/rust/rust_platform.rs | 22 +
samples/rust/rust_print.rs | 54 +
samples/rust/rust_random.rs | 60 +
samples/rust/rust_semaphore.rs | 171 +
samples/rust/rust_semaphore_c.c | 212 ++
samples/rust/rust_stack_probing.rs | 36 +
samples/rust/rust_sync.rs | 93 +
scripts/Kconfig.include | 2 +-
scripts/Makefile | 3 +
scripts/Makefile.build | 60 +
scripts/Makefile.host | 34 +-
scripts/Makefile.lib | 12 +
scripts/cc-version.sh | 72 +
scripts/checkpatch.pl | 8 +-
scripts/decode_stacktrace.sh | 14 +
scripts/generate_rust_analyzer.py | 134 +
scripts/generate_rust_target.rs | 227 ++
scripts/is_rust_module.sh | 13 +
scripts/kallsyms.c | 47 +-
scripts/kconfig/confdata.c | 156 +-
scripts/min-tool-version.sh | 43 +
scripts/rust-is-available-bindgen-libclang.h | 2 +
scripts/rust-is-available.sh | 158 +
scripts/rustdoc_test_builder.py | 59 +
scripts/rustdoc_test_gen.py | 164 +
tools/include/linux/kallsyms.h | 2 +-
tools/lib/perf/include/perf/event.h | 2 +-
tools/lib/symbol/kallsyms.h | 2 +-
166 files changed, 34760 insertions(+), 43 deletions(-)
create mode 100644 .rustfmt.toml
create mode 100644 Documentation/rust/arch-support.rst
create mode 100644 Documentation/rust/coding-guidelines.rst
create mode 100644 Documentation/rust/general-information.rst
create mode 100644 Documentation/rust/index.rst
create mode 100644 Documentation/rust/quick-start.rst
create mode 100644 drivers/gpio/gpio_pl061_rust.rs
create mode 100644 rust/.gitignore
create mode 100644 rust/Makefile
create mode 100644 rust/alloc/README.md
create mode 100644 rust/alloc/alloc.rs
create mode 100644 rust/alloc/borrow.rs
create mode 100644 rust/alloc/boxed.rs
create mode 100644 rust/alloc/boxed/thin.rs
create mode 100644 rust/alloc/collections/mod.rs
create mode 100644 rust/alloc/fmt.rs
create mode 100644 rust/alloc/lib.rs
create mode 100644 rust/alloc/macros.rs
create mode 100644 rust/alloc/raw_vec.rs
create mode 100644 rust/alloc/slice.rs
create mode 100644 rust/alloc/str.rs
create mode 100644 rust/alloc/string.rs
create mode 100644 rust/alloc/vec/drain.rs
create mode 100644 rust/alloc/vec/drain_filter.rs
create mode 100644 rust/alloc/vec/into_iter.rs
create mode 100644 rust/alloc/vec/is_zero.rs
create mode 100644 rust/alloc/vec/mod.rs
create mode 100644 rust/alloc/vec/partial_eq.rs
create mode 100644 rust/alloc/vec/set_len_on_drop.rs
create mode 100644 rust/alloc/vec/spec_extend.rs
create mode 100644 rust/bindgen_parameters
create mode 100644 rust/build_error.rs
create mode 100644 rust/compiler_builtins.rs
create mode 100644 rust/exports.c
create mode 100644 rust/helpers.c
create mode 100644 rust/kernel/allocator.rs
create mode 100644 rust/kernel/amba.rs
create mode 100644 rust/kernel/bindings.rs
create mode 100644 rust/kernel/bindings_helper.h
create mode 100644 rust/kernel/build_assert.rs
create mode 100644 rust/kernel/c_types.rs
create mode 100644 rust/kernel/chrdev.rs
create mode 100644 rust/kernel/clk.rs
create mode 100644 rust/kernel/cred.rs
create mode 100644 rust/kernel/device.rs
create mode 100644 rust/kernel/driver.rs
create mode 100644 rust/kernel/error.rs
create mode 100644 rust/kernel/file.rs
create mode 100644 rust/kernel/gpio.rs
create mode 100644 rust/kernel/hwrng.rs
create mode 100644 rust/kernel/io_buffer.rs
create mode 100644 rust/kernel/io_mem.rs
create mode 100644 rust/kernel/iov_iter.rs
create mode 100644 rust/kernel/irq.rs
create mode 100644 rust/kernel/kasync.rs
create mode 100644 rust/kernel/kasync/net.rs
create mode 100644 rust/kernel/kunit.rs
create mode 100644 rust/kernel/lib.rs
create mode 100644 rust/kernel/linked_list.rs
create mode 100644 rust/kernel/miscdev.rs
create mode 100644 rust/kernel/mm.rs
create mode 100644 rust/kernel/module_param.rs
create mode 100644 rust/kernel/net.rs
create mode 100644 rust/kernel/net/filter.rs
create mode 100644 rust/kernel/of.rs
create mode 100644 rust/kernel/pages.rs
create mode 100644 rust/kernel/platform.rs
create mode 100644 rust/kernel/power.rs
create mode 100644 rust/kernel/prelude.rs
create mode 100644 rust/kernel/print.rs
create mode 100644 rust/kernel/random.rs
create mode 100644 rust/kernel/raw_list.rs
create mode 100644 rust/kernel/rbtree.rs
create mode 100644 rust/kernel/revocable.rs
create mode 100644 rust/kernel/security.rs
create mode 100644 rust/kernel/static_assert.rs
create mode 100644 rust/kernel/std_vendor.rs
create mode 100644 rust/kernel/str.rs
create mode 100644 rust/kernel/sync.rs
create mode 100644 rust/kernel/sync/arc.rs
create mode 100644 rust/kernel/sync/condvar.rs
create mode 100644 rust/kernel/sync/guard.rs
create mode 100644 rust/kernel/sync/locked_by.rs
create mode 100644 rust/kernel/sync/mutex.rs
create mode 100644 rust/kernel/sync/nowait.rs
create mode 100644 rust/kernel/sync/revocable.rs
create mode 100644 rust/kernel/sync/rwsem.rs
create mode 100644 rust/kernel/sync/seqlock.rs
create mode 100644 rust/kernel/sync/smutex.rs
create mode 100644 rust/kernel/sync/spinlock.rs
create mode 100644 rust/kernel/sysctl.rs
create mode 100644 rust/kernel/task.rs
create mode 100644 rust/kernel/types.rs
create mode 100644 rust/kernel/user_ptr.rs
create mode 100644 rust/macros/helpers.rs
create mode 100644 rust/macros/lib.rs
create mode 100644 rust/macros/module.rs
create mode 100644 samples/rust/Kconfig
create mode 100644 samples/rust/Makefile
create mode 100644 samples/rust/hostprogs/.gitignore
create mode 100644 samples/rust/hostprogs/Makefile
create mode 100644 samples/rust/hostprogs/a.rs
create mode 100644 samples/rust/hostprogs/b.rs
create mode 100644 samples/rust/hostprogs/single.rs
create mode 100644 samples/rust/rust_chrdev.rs
create mode 100644 samples/rust/rust_minimal.rs
create mode 100644 samples/rust/rust_miscdev.rs
create mode 100644 samples/rust/rust_module_parameters.rs
create mode 100644 samples/rust/rust_netfilter.rs
create mode 100644 samples/rust/rust_platform.rs
create mode 100644 samples/rust/rust_print.rs
create mode 100644 samples/rust/rust_random.rs
create mode 100644 samples/rust/rust_semaphore.rs
create mode 100644 samples/rust/rust_semaphore_c.c
create mode 100644 samples/rust/rust_stack_probing.rs
create mode 100644 samples/rust/rust_sync.rs
create mode 100755 scripts/cc-version.sh
create mode 100755 scripts/generate_rust_analyzer.py
create mode 100644 scripts/generate_rust_target.rs
create mode 100755 scripts/is_rust_module.sh
create mode 100755 scripts/min-tool-version.sh
create mode 100644 scripts/rust-is-available-bindgen-libclang.h
create mode 100755 scripts/rust-is-available.sh
create mode 100755 scripts/rustdoc_test_builder.py
create mode 100755 scripts/rustdoc_test_gen.py
--
2.20.1
1
24

27 Jul '22
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
This patchset aims to start a discussion about potential applications of BPF to
the scheduler. It also aims to land some very basic BPF infrastructure necessary
to add new BPF hooks to the scheduler, a minimal set of useful helpers,
corresponding libbpf changes, etc.
[Testing]
kernel options:
CONFIG_BPF_SCHED=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_EVENTS=y
Test passed with below step:
1.cd tools/testing/selftests/bpf & make
2.run cmd: ./test_progs -t test_sched
3.it will show like this:
# ./test_progs -t test_sched
#113/1 sched_tgidpid_mode:OK
#113/2 sched_cgid_mode:OK
#113 test_sched:OK
Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
Chen Hui (1):
sched: Move some definitions to sched.h
Ren Zhijie (1):
bpf: sched: add selftests for BPF_PROG_TYPE_SCHED
Roman Gushchin (6):
bpf: sched: basic infrastructure for scheduler bpf
bpf: sched: add convenient helpers to identify sched entities
bpf: sched: introduce bpf_sched_enable()
sched: cfs: add bpf hooks to control wakeup and tick preemption
libbpf: add support for scheduler bpf programs
bpftool: recognize scheduler programs
include/linux/bpf_sched.h | 50 ++++++
include/linux/bpf_types.h | 4 +
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 25 +++
init/Kconfig | 10 ++
kernel/bpf/btf.c | 1 +
kernel/bpf/syscall.c | 20 +++
kernel/bpf/trampoline.c | 1 +
kernel/bpf/verifier.c | 11 +-
kernel/sched/Makefile | 1 +
kernel/sched/bpf_sched.c | 138 +++++++++++++++
kernel/sched/fair.c | 79 ++++-----
kernel/sched/sched.h | 52 ++++++
scripts/bpf_helpers_doc.py | 2 +
tools/bpf/bpftool/common.c | 1 +
tools/bpf/bpftool/prog.c | 1 +
tools/include/uapi/linux/bpf.h | 25 +++
tools/lib/bpf/bpf.c | 3 +-
tools/lib/bpf/libbpf.c | 33 +++-
tools/lib/bpf/libbpf.h | 4 +
tools/lib/bpf/libbpf.map | 3 +
.../selftests/bpf/prog_tests/test_sched.c | 161 +++++++++++++++++
tools/testing/selftests/bpf/progs/sched.c | 165 ++++++++++++++++++
23 files changed, 743 insertions(+), 52 deletions(-)
create mode 100644 include/linux/bpf_sched.h
create mode 100644 include/linux/sched_hook_defs.h
create mode 100644 kernel/sched/bpf_sched.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_sched.c
create mode 100644 tools/testing/selftests/bpf/progs/sched.c
--
2.20.1
1
8

[PATCH openEuler-5.10-LTS 01/10] bpf: Don't redirect packets with invalid pkt_len
by Zheng Zengkai 26 Jul '22
by Zheng Zengkai 26 Jul '22
26 Jul '22
From: Zhengchao Shao <shaozhengchao(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc6
commit fd1894224407c484f652ad456e1ce423e89bb3eb
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5HWKR
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id…
--------------------------------
Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
skbs, that is, the flow->head is null.
The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
run a bpf prog which redirects empty skbs.
So we should determine whether the length of the packet modified by bpf
prog or others like bpf_prog_test is valid before forwarding it directly.
LINK: [1] https://syzkaller.appspot.com/bug?id=0b84da80c2917757915afa89f7738a9d16ec96…
LINK: [2] https://www.spinics.net/lists/netdev/msg777503.html
Reported-by: syzbot+7a12909485b94426aceb(a)syzkaller.appspotmail.com
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Reviewed-by: Stanislav Fomichev <sdf(a)google.com>
Link: https://lore.kernel.org/r/20220715115559.139691-1-shaozhengchao@huawei.com
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/skbuff.h | 8 ++++++++
net/bpf/test_run.c | 3 +++
net/core/dev.c | 1 +
3 files changed, 12 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index e5f61bdd42a8..6dae09f22c5a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -2251,6 +2251,14 @@ static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
#endif /* NET_SKBUFF_DATA_USES_OFFSET */
+static inline void skb_assert_len(struct sk_buff *skb)
+{
+#ifdef CONFIG_DEBUG_NET
+ if (WARN_ONCE(!skb->len, "%s\n", __func__))
+ DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
+#endif /* CONFIG_DEBUG_NET */
+}
+
/*
* Add data to an sk_buff
*/
diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index 99712d35e535..f266a9453c8e 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -398,6 +398,9 @@ static int convert___skb_to_skb(struct sk_buff *skb, struct __sk_buff *__skb)
{
struct qdisc_skb_cb *cb = (struct qdisc_skb_cb *)skb->cb;
+ if (!skb->len)
+ return -EINVAL;
+
if (!__skb)
return 0;
diff --git a/net/core/dev.c b/net/core/dev.c
index 12089c484b30..8e4de36eede8 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4094,6 +4094,7 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
bool again = false;
skb_reset_mac_header(skb);
+ skb_assert_len(skb);
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP))
__skb_tstamp_tx(skb, NULL, skb->sk, SCM_TSTAMP_SCHED);
--
2.20.1
1
9
Backport 5.10.113 LTS patches from upstream.
git cherry-pick v5.10.112..v5.10.113~1 -s
Complicts:
Already merged(-5):
43ce33a68e2b net/sched: cls_u32: fix netns refcount changes in u32_change()
d29c78d3f9c5 dm: fix mempool NULL pointer race when completing IO
a46b3d849864 ext4: fix symlink file size not match to file content
75ac724684b7 ext4: fix use-after-free in ext4_search_dir
572761645b88 jbd2: fix a potential race while discarding reserved buffers after
an abort
Context conflict(2):
49516e6ed914 ipv6: make ip6_rt_gc_expire an atomic_t
6b932920b96f mm, hugetlb: allow for "high" userspace addresses
Implement changed(1, cherry-picked from mainline):
ce33c845b030c tracing: Dump stacktrace trigger to the corresponding instance
Defered(-1, kabi changed):
ed5d4efb4df1 oom_kill.c: futex: delay the OOM reaper to allow time for proper
futex cleanup
kabi fixed(+1):
ipv6: fix kabi for ip6_rt_gc_expire in struct netns_ipv6
Total patches: 86 - 5 - 1 + 1 = 81
Adrian Hunter (1):
perf tools: Fix segfault accessing sample_id xyarray
Alexey Kardashevskiy (1):
KVM: PPC: Fix TCE handling for VFIO
Alistair Popple (1):
mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove()
Allen-KH Cheng (1):
spi: spi-mtk-nor: initialize spi controller after resume
Anshuman Khandual (1):
arm64/mm: Remove [PUD|PMD]_TABLE_BIT from [pud|pmd]_bad()
Athira Rajeev (1):
powerpc/perf: Fix power9 event alternatives
Bob Peterson (1):
gfs2: assign rgrp glock before compute_bitstructs
Borislav Petkov (3):
ALSA: usb-audio: Fix undefined behavior due to shift overflowing the
constant
mt76: Fix undefined behavior due to shift overflowing the constant
brcmfmac: sdio: Fix undefined behavior due to shift overflowing the
constant
Christoph Hellwig (2):
nvme: add a quirk to disable namespace identifiers
nvme-pci: disable namespace identifiers for Qemu controllers
Christophe Leroy (1):
mm, hugetlb: allow for "high" userspace addresses
Daniel Bristot de Oliveira (1):
tracing: Dump stacktrace trigger to the corresponding instance
Darrick J. Wong (1):
ext4: fix fallocate to use file_modified to update permissions
consistently
Dave Jiang (2):
dmaengine: idxd: add RO check for wq max_batch_size write
dmaengine: idxd: add RO check for wq max_transfer_size write
Dave Stevenson (2):
drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised
drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare
David Ahern (1):
l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using
netdev_master_upper_dev_get_rcu
David Howells (2):
rxrpc: Restore removed timer deletion
cifs: Check the IOCB_DIRECT flag, not O_DIRECT
Eric Dumazet (3):
net/sched: cls_u32: fix possible leak in u32_init_knode()
ipv6: make ip6_rt_gc_expire an atomic_t
netlink: reset network and mac headers in netlink_dump()
Guo Ren (1):
xtensa: patch_text: Fixup last cpu should be master
Hangbin Liu (1):
net/packet: fix packet_sock xmit return value checking
Hongbin Wang (1):
vxlan: fix error return code in vxlan_fdb_append
Ido Schimmel (1):
selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packets
Jiapeng Chong (1):
platform/x86: samsung-laptop: Fix an unsigned comparison which can
never be negative
Kai-Heng Feng (1):
net: atlantic: Avoid out-of-bounds indexing
Kees Cook (2):
etherdevice: Adjust ether_addr* prototypes to silence
-Wstringop-overead
ARM: vexpress/spc: Avoid negative array index when !SMP
Kevin Hao (1):
net: stmmac: Use readl_poll_timeout_atomic() in atomic state
Khazhismel Kumykov (1):
block/compat_ioctl: fix range check in BLKGETSIZE
Lee Jones (1):
staging: ion: Prevent incorrect reference counting behavour
Leo Yan (1):
perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE event
Lv Ruyi (1):
dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info()
Manuel Ullmann (1):
net: atlantic: invert deep par in pm functions, preventing null derefs
Marek Vasut (1):
Revert "net: micrel: fix KS8851_MLL Kconfig"
Mario Limonciello (1):
gpio: Request interrupts after IRQ is initialized
Mark Brown (1):
ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek
Max Filippov (1):
xtensa: fix a7 clobbering in coprocessor context load/store
Miaoqian Lin (3):
ASoC: msm8916-wcd-digital: Check failure for
devm_snd_soc_register_component
dmaengine: imx-sdma: Fix error checking in sdma_event_remap
drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync()
usage
Mike Christie (1):
scsi: qedi: Fix failed disconnect handling
Mikulas Patocka (1):
stat: fix inconsistency between struct stat and struct compat_stat
Muchun Song (1):
arm64: mm: fix p?d_leaf()
Oliver Hartkopp (1):
can: isotp: stop timeout monitoring when no first frame was sent
Paolo Valerio (1):
openvswitch: fix OOB access in reserve_sfa_size()
Peilin Ye (2):
ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit()
ip6_gre: Fix skb_under_panic in __gre6_xmit()
Rob Herring (2):
arm64: dts: imx: Fix imx8*-var-som touchscreen property sizes
arm_pmu: Validate single/group leader events
Sabrina Dubroca (1):
esp: limit skb_page_frag_refill use to a single page
Sameer Pujar (1):
reset: tegra-bpmp: Restore Handle errors in BPMP response
Sasha Neftin (3):
igc: Fix infinite loop in release_swfw_sync
igc: Fix BUG: scheduling while atomic
e1000e: Fix possible overflow in LTR decoding
Sergey Matyukevich (1):
ARC: entry: fix syscall_trace_exit argument
Shubhrajyoti Datta (1):
EDAC/synopsys: Read the error count from the correct register
Srinivas Kandagatla (1):
ASoC: codecs: wcd934x: do not switch off SIDO Buck when codec is in
use
Tadeusz Struk (1):
ext4: limit length to bitmap_maxbytes - blocksize in punch_hole
Takashi Iwai (1):
ALSA: usb-audio: Clear MIDI port active flag after draining
Theodore Ts'o (2):
ext4: fix overhead calculation to account for the reserved gdt blocks
ext4: force overhead calculation if the s_overhead_cluster makes no
sense
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo NP70PNP
Tomas Melin (1):
net: macb: Restart tx only if queue pointer is lagging
Tony Lu (1):
net/smc: Fix sock leak when release after smc_shutdown()
Tudor Ambarus (1):
spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and
controller
Xiaoke Wang (1):
drm/msm/mdp5: check the return of kzalloc()
Xiaomeng Tong (2):
dma: at_xdmac: fix a missing check on list iterator
ASoC: soc-dapm: fix two incorrect uses of list iterator
Xiongwei Song (1):
mm: page_alloc: fix building error on -Werror=array-compare
Xu Jia (1):
ipv6: fix kabi for ip6_rt_gc_expire in struct netns_ipv6
Zheyu Ma (1):
ata: pata_marvell: Check the 'bmdma_addr' beforing reading
Zhipeng Xie (1):
perf/core: Fix perf_mmap fail when CONFIG_PERF_USE_VMALLOC enabled
kuyo chang (1):
sched/pelt: Fix attach_entity_load_avg() corner case
wangjianjian (C) (1):
ext4, doc: fix incorrect h_reserved size
zhangqilong (1):
dmaengine: mediatek:Fix PM usage reference leak of
mtk_uart_apdma_alloc_chan_resources
Documentation/filesystems/ext4/attributes.rst | 2 +-
arch/arc/kernel/entry.S | 1 +
arch/arm/mach-vexpress/spc.c | 2 +-
.../boot/dts/freescale/imx8mm-var-som.dtsi | 8 +--
.../boot/dts/freescale/imx8mn-var-som.dtsi | 8 +--
arch/arm64/include/asm/pgtable.h | 9 ++-
arch/powerpc/kvm/book3s_64_vio.c | 45 ++++++------
arch/powerpc/kvm/book3s_64_vio_hv.c | 44 ++++++------
arch/powerpc/perf/power9-pmu.c | 8 +--
arch/x86/include/asm/compat.h | 6 +-
arch/xtensa/kernel/coprocessor.S | 4 +-
arch/xtensa/kernel/jump_label.c | 2 +-
block/ioctl.c | 2 +-
drivers/ata/pata_marvell.c | 2 +
drivers/dma/at_xdmac.c | 12 ++--
drivers/dma/idxd/sysfs.c | 6 ++
drivers/dma/imx-sdma.c | 4 +-
drivers/dma/mediatek/mtk-uart-apdma.c | 9 ++-
drivers/edac/synopsys_edac.c | 16 +++--
drivers/gpio/gpiolib.c | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 3 +
.../drm/panel/panel-raspberrypi-touchscreen.c | 13 +++-
drivers/gpu/drm/vc4/vc4_dsi.c | 2 +-
.../net/ethernet/aquantia/atlantic/aq_nic.c | 8 +--
.../ethernet/aquantia/atlantic/aq_pci_func.c | 8 +--
.../net/ethernet/aquantia/atlantic/aq_vec.c | 24 +++----
drivers/net/ethernet/cadence/macb_main.c | 8 +++
.../ethernet/freescale/dpaa/dpaa_ethtool.c | 8 ++-
drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 +-
drivers/net/ethernet/intel/igc/igc_i225.c | 11 ++-
drivers/net/ethernet/intel/igc/igc_phy.c | 4 +-
drivers/net/ethernet/micrel/Kconfig | 1 -
.../ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 4 +-
drivers/net/vxlan.c | 4 +-
.../broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
.../net/wireless/mediatek/mt76/mt76x2/pci.c | 2 +-
drivers/nvme/host/core.c | 24 +++++--
drivers/nvme/host/nvme.h | 5 ++
drivers/nvme/host/pci.c | 5 +-
drivers/perf/arm_pmu.c | 10 ++-
drivers/platform/x86/samsung-laptop.c | 2 -
drivers/reset/tegra/reset-bpmp.c | 9 ++-
drivers/scsi/qedi/qedi_iscsi.c | 69 +++++++++----------
drivers/spi/atmel-quadspi.c | 3 +
drivers/spi/spi-mtk-nor.c | 12 +++-
drivers/staging/android/ion/ion.c | 3 +
fs/cifs/cifsfs.c | 2 +-
fs/ext4/ext4.h | 2 +-
fs/ext4/extents.c | 32 +++++++--
fs/ext4/inode.c | 18 ++++-
fs/ext4/super.c | 19 +++--
fs/gfs2/rgrp.c | 9 +--
fs/hugetlbfs/inode.c | 9 +--
fs/stat.c | 19 ++---
include/linux/etherdevice.h | 5 +-
include/linux/sched/mm.h | 8 +++
include/net/esp.h | 2 -
include/net/netns/ipv6.h | 4 +-
kernel/events/core.c | 2 +-
kernel/events/internal.h | 5 ++
kernel/events/ring_buffer.c | 5 --
kernel/sched/fair.c | 10 +--
kernel/trace/trace_events_trigger.c | 7 +-
mm/mmap.c | 8 ---
mm/mmu_notifier.c | 14 +++-
mm/page_alloc.c | 2 +-
net/can/isotp.c | 10 ++-
net/ipv4/esp4.c | 5 +-
net/ipv6/esp6.c | 5 +-
net/ipv6/ip6_gre.c | 14 ++--
net/ipv6/route.c | 11 +--
net/l3mdev/l3mdev.c | 2 +-
net/netlink/af_netlink.c | 7 ++
net/openvswitch/flow_netlink.c | 2 +-
net/packet/af_packet.c | 13 ++--
net/rxrpc/net_ns.c | 2 +
net/sched/cls_u32.c | 8 +--
net/smc/af_smc.c | 4 +-
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/atmel/sam9g20_wm8731.c | 61 ----------------
sound/soc/codecs/msm8916-wcd-digital.c | 9 ++-
sound/soc/codecs/wcd934x.c | 26 +------
sound/soc/soc-dapm.c | 6 +-
sound/usb/midi.c | 1 +
sound/usb/usbaudio.h | 2 +-
tools/lib/perf/evlist.c | 3 +-
tools/perf/builtin-report.c | 14 ++++
.../drivers/net/mlxsw/vxlan_flooding.sh | 17 +++++
88 files changed, 485 insertions(+), 362 deletions(-)
--
2.20.1
1
81

[PATCH openEuler-1.0-LTS] perf/core: Fix data race between perf_event_set_output() and perf_mmap_close()
by Yongqiang Liu 26 Jul '22
by Yongqiang Liu 26 Jul '22
26 Jul '22
From: Yang Jihong <yangjihong1(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc7
commit 68e3c69803dada336893640110cb87221bb01dcf
category: bugfix
bugzilla: 187299, https://gitee.com/src-openeuler/kernel/issues/I5ISXP
CVE: NA
--------------------------------
Yang Jihing reported a race between perf_event_set_output() and
perf_mmap_close():
CPU1 CPU2
perf_mmap_close(e2)
if (atomic_dec_and_test(&e2->rb->mmap_count)) // 1 - > 0
detach_rest = true
ioctl(e1, IOC_SET_OUTPUT, e2)
perf_event_set_output(e1, e2)
...
list_for_each_entry_rcu(e, &e2->rb->event_list, rb_entry)
ring_buffer_attach(e, NULL);
// e1 isn't yet added and
// therefore not detached
ring_buffer_attach(e1, e2->rb)
list_add_rcu(&e1->rb_entry,
&e2->rb->event_list)
After this; e1 is attached to an unmapped rb and a subsequent
perf_mmap() will loop forever more:
again:
mutex_lock(&e->mmap_mutex);
if (event->rb) {
...
if (!atomic_inc_not_zero(&e->rb->mmap_count)) {
...
mutex_unlock(&e->mmap_mutex);
goto again;
}
}
The loop in perf_mmap_close() holds e2->mmap_mutex, while the attach
in perf_event_set_output() holds e1->mmap_mutex. As such there is no
serialization to avoid this race.
Change perf_event_set_output() to take both e1->mmap_mutex and
e2->mmap_mutex to alleviate that problem. Additionally, have the loop
in perf_mmap() detach the rb directly, this avoids having to wait for
the concurrent perf_mmap_close() to get around to doing it to make
progress.
Fixes: 9bb5d40cd93c ("perf: Fix mmap() accounting hole")
Reported-by: Yang Jihong <yangjihong1(a)huawei.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz(a)infradead.org>
Tested-by: Yang Jihong <yangjihong1(a)huawei.com>
Link: https://lkml.kernel.org/r/YsQ3jm2GR38SW7uD@worktop.programming.kicks-ass.net
Signed-off-by: Yang Jihong <yangjihong1(a)huawei.com>
Reviewed-by: Kuohai Xu <xukuohai(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/events/core.c | 45 ++++++++++++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 14 deletions(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 98d12fc3976a..616cccf9c835 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5727,10 +5727,10 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
if (!atomic_inc_not_zero(&event->rb->mmap_count)) {
/*
- * Raced against perf_mmap_close() through
- * perf_event_set_output(). Try again, hope for better
- * luck.
+ * Raced against perf_mmap_close(); remove the
+ * event and try again.
*/
+ ring_buffer_attach(event, NULL);
mutex_unlock(&event->mmap_mutex);
goto again;
}
@@ -10453,14 +10453,25 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
goto out;
}
+static void mutex_lock_double(struct mutex *a, struct mutex *b)
+{
+ if (b < a)
+ swap(a, b);
+
+ mutex_lock(a);
+ mutex_lock_nested(b, SINGLE_DEPTH_NESTING);
+}
+
static int
perf_event_set_output(struct perf_event *event, struct perf_event *output_event)
{
struct ring_buffer *rb = NULL;
int ret = -EINVAL;
- if (!output_event)
+ if (!output_event) {
+ mutex_lock(&event->mmap_mutex);
goto set;
+ }
/* don't allow circular references */
if (event == output_event)
@@ -10498,8 +10509,15 @@ perf_event_set_output(struct perf_event *event, struct perf_event *output_event)
event->pmu != output_event->pmu)
goto out;
+ /*
+ * Hold both mmap_mutex to serialize against perf_mmap_close(). Since
+ * output_event is already on rb->event_list, and the list iteration
+ * restarts after every removal, it is guaranteed this new event is
+ * observed *OR* if output_event is already removed, it's guaranteed we
+ * observe !rb->mmap_count.
+ */
+ mutex_lock_double(&event->mmap_mutex, &output_event->mmap_mutex);
set:
- mutex_lock(&event->mmap_mutex);
/* Can't redirect output if we've got an active mmap() */
if (atomic_read(&event->mmap_count))
goto unlock;
@@ -10509,6 +10527,12 @@ perf_event_set_output(struct perf_event *event, struct perf_event *output_event)
rb = ring_buffer_get(output_event);
if (!rb)
goto unlock;
+
+ /* did we race against perf_mmap_close() */
+ if (!atomic_read(&rb->mmap_count)) {
+ ring_buffer_put(rb);
+ goto unlock;
+ }
}
ring_buffer_attach(event, rb);
@@ -10516,20 +10540,13 @@ perf_event_set_output(struct perf_event *event, struct perf_event *output_event)
ret = 0;
unlock:
mutex_unlock(&event->mmap_mutex);
+ if (output_event)
+ mutex_unlock(&output_event->mmap_mutex);
out:
return ret;
}
-static void mutex_lock_double(struct mutex *a, struct mutex *b)
-{
- if (b < a)
- swap(a, b);
-
- mutex_lock(a);
- mutex_lock_nested(b, SINGLE_DEPTH_NESTING);
-}
-
static int perf_event_set_clock(struct perf_event *event, clockid_t clk_id)
{
bool nmi_safe = false;
--
2.25.1
1
0

25 Jul '22
From: Amir Goldstein <amir73il(a)gmail.com>
mainline inclusion
from mainline-v5.19-rc1
commit a32e697cda27679a0327ae2cafdad8c7170f548f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5IGXM
CVE: NA
--------------------------------
The inotify mask flags IN_ONESHOT and IN_EXCL_UNLINK are not "internal
to kernel" and should be exposed in procfs fdinfo so CRIU can restore
them.
Fixes: 6933599697c9 ("inotify: hide internal kernel bits from fdinfo")
Link: https://lore.kernel.org/r/20220422120327.3459282-2-amir73il@gmail.com
Signed-off-by: Amir Goldstein <amir73il(a)gmail.com>
Signed-off-by: Jan Kara <jack(a)suse.cz>
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
fs/notify/fdinfo.c | 11 ++---------
fs/notify/inotify/inotify.h | 12 ++++++++++++
fs/notify/inotify/inotify_user.c | 2 +-
3 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/fs/notify/fdinfo.c b/fs/notify/fdinfo.c
index c4f18a8a8161..a67483ce2ee1 100644
--- a/fs/notify/fdinfo.c
+++ b/fs/notify/fdinfo.c
@@ -84,16 +84,9 @@ static void inotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
inode_mark = container_of(mark, struct inotify_inode_mark, fsn_mark);
inode = igrab(fsnotify_conn_inode(mark->connector));
if (inode) {
- /*
- * IN_ALL_EVENTS represents all of the mask bits
- * that we expose to userspace. There is at
- * least one bit (FS_EVENT_ON_CHILD) which is
- * used only internally to the kernel.
- */
- u32 mask = mark->mask & IN_ALL_EVENTS;
- seq_printf(m, "inotify wd:%x ino:%lx sdev:%x mask:%x ignored_mask:%x ",
+ seq_printf(m, "inotify wd:%x ino:%lx sdev:%x mask:%x ignored_mask:0 ",
inode_mark->wd, inode->i_ino, inode->i_sb->s_dev,
- mask, mark->ignored_mask);
+ inotify_mark_user_mask(mark));
show_mark_fhandle(m, inode);
seq_putc(m, '\n');
iput(inode);
diff --git a/fs/notify/inotify/inotify.h b/fs/notify/inotify/inotify.h
index 7e4578d35b61..5d94c00b1233 100644
--- a/fs/notify/inotify/inotify.h
+++ b/fs/notify/inotify/inotify.h
@@ -21,6 +21,18 @@ static inline struct inotify_event_info *INOTIFY_E(struct fsnotify_event *fse)
return container_of(fse, struct inotify_event_info, fse);
}
+/*
+ * INOTIFY_USER_FLAGS represents all of the mask bits that we expose to
+ * userspace. There is at least one bit (FS_EVENT_ON_CHILD) which is
+ * used only internally to the kernel.
+ */
+#define INOTIFY_USER_MASK (IN_ALL_EVENTS | IN_ONESHOT | IN_EXCL_UNLINK)
+
+static inline __u32 inotify_mark_user_mask(struct fsnotify_mark *fsn_mark)
+{
+ return fsn_mark->mask & INOTIFY_USER_MASK;
+}
+
extern void inotify_ignored_and_remove_idr(struct fsnotify_mark *fsn_mark,
struct fsnotify_group *group);
extern int inotify_handle_event(struct fsnotify_group *group,
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index 73b47cb533f2..156faf3d1288 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -96,7 +96,7 @@ static inline __u32 inotify_arg_to_mask(u32 arg)
mask = (FS_IN_IGNORED | FS_EVENT_ON_CHILD | FS_UNMOUNT);
/* mask off the flags used to open the fd */
- mask |= (arg & (IN_ALL_EVENTS | IN_ONESHOT | IN_EXCL_UNLINK));
+ mask |= (arg & INOTIFY_USER_MASK);
return mask;
}
--
2.25.1
1
0
Dear all,
openEuler 22.09创新版本Alpha版本在经过社区各SIG组协作开发,CI/CD SIG规模构建,及QA SIG Alpha版本质量评估,满足alpha版本发布质量标准,现正式发布该alpha版本,社区各SIG组及所有爱好者均可以下载并试用alpha ,Alpha 版本包含 openEuler 22.09 版本的几乎全量组件(少量持续编译/构建失败包清单详见邮件正文编译构建章节),版本测试能力/策略由 openEuler QA SIG团队指导,社区各个SIG组自主开展组件自验证,社区一起协作支撑openEuler 22.09创新版本issue发现和定位修复,您发现和定位修复每一个issue不仅可以解决您使用openEuler创新版本的问题点,更可以支撑社区一起持续优化提升百万级openEuler用户的体验!
Alpha版本作为beta版本的前置自验证版本,经过社区联合协作自验证和issue修复后,下一个版本里程碑点(预计在2022/08/01)将会提供 Beta 版本。
openEuler 22.09版本release plan公示链接:
https://gitee.com/openeuler/release-management/blob/master/openEuler-22.09/…
openEuler 22.09 Alpha版本下载链接:
http://121.36.84.172/dailybuild/openEuler-22.09/openeuler-2022-07-25-10-43-…
openEuler 22.09 Alpha版本发布质量评估规范公示链接:
https://gitee.com/openeuler/QA/blob/master/Test_Checklist/%E7%A4%BE%E5%8C%B…
openEuler 22.09 Alpha版本自验证进展与质量结果同步方式:
建议各sig组及社区用户均可以在QA-sig下以ISSUE方式同步自验证进展和自验证结果,您的自验证结果将是Alpha版本质量评估的充分信息依据;
社区QA 版本测试提单规范
https://gitee.com/openeuler/QA/blob/839f952696f271f83c018ccf3218cf493b92d65…
社区QA 测试平台 radiates
https://radiatest.openeuler.org<https://radiatest.openeuler.org/>
openEuler 22.09 Alpha版本已知待修复单包构建失败问题清单:
里程碑地址:https://e.gitee.com/open_euler/milestones/170898/issues/table
里程碑
任务ID
任务标题
任务状态
关联仓库
Sig
openEuler-22.09-Dailybuild
I5HVUZ
ima-evm-utils build problem in openEuler:22.09
待办的
ima-evm-utils
Base-service
openEuler-22.09-Dailybuild
I5HVVF
mysql5 build problem in openEuler:22.09
待办的
mysql5
DB
openEuler-22.09-Dailybuild
I5HZVX
folks build problem in openEuler:22.09
待办的
folks
GNOME
openEuler-22.09-Dailybuild
I5HZW3
subunit build problem in openEuler:22.09
待办的
subunit
Programming-language
openEuler-22.09-Dailybuild
I5I1ZZ
ceph build problem in openEuler:22.09
待办的
ceph
sig-SDS
openEuler-22.09-Dailybuild
I5I6MO
libgit2 build problem in openEuler:22.09
待办的
libgit2
Base-service
openEuler-22.09-Dailybuild
I5IH5G
gpgme build problem in openEuler:22.09
待办的
gpgme
Base-service
openEuler-22.09-Dailybuild
I5IH69
iotop build problem in openEuler:22.09
待办的
iotop
Storage
openEuler-22.09-Dailybuild
I5IH6M
libpwquality build problem in openEuler:22.09
待办的
libpwquality
sig-security-facility
openEuler-22.09-Dailybuild
I5IH6T
nftables build problem in openEuler:22.09
待办的
nftables
Networking
openEuler-22.09-Dailybuild
I5ILK7
bamf build problem in openEuler:22.09:Epol
待办的
bamf
sig-UKUI
openEuler-22.09-Dailybuild
I5ILK8
vdsm-jsonrpc-java build problem in openEuler:22.09:Epol
待办的
vdsm-jsonrpc-java
oVirt
openEuler-22.09-Dailybuild
I5ILKA
python-crypto build problem in openEuler:22.09
待办的
python-crypto
Base-service
openEuler-22.09-Dailybuild
I5ILKE
sssd build problem in openEuler:22.09
待办的
sssd
Base-service
openEuler-22.09-Dailybuild
I5IQZF
highlight build problem in openEuler:22.09:Epol
待办的
highlight
oVirt
openEuler 22.09 Alpha版本已知待修复单包安装失败软件包清单:
安装校验项
架构
jenkins任务地址
ISO二进制范围
x86_64
https://openeulerjenkins.osinfra.cn/job/openEuler-OS-build/job/check_rpm_in…
Epol二进制范围
x86_64
https://openeulerjenkins.osinfra.cn/job/openEuler-OS-build/job/check_rpm_in…
ISO二进制范围
aarch64
https://openeulerjenkins.osinfra.cn/job/openEuler-OS-build/job/check_rpm_in…
Epol二进制范围
aarch64
https://openeulerjenkins.osinfra.cn/job/openEuler-OS-build/job/check_rpm_in…
二进制包名
源码包名
Sig
python3-jupyter
python-jupyter
#N/A
python3-nni
python-nni
A-Tune
setroubleshoot-plugins
setroubleshoot-plugins
Base-service
backupninja
backupninja
Application
blueman
blueman
sig-UKUI
cinnamon
cinnamon
sig-cinnamon
cinnamon-devel-doc
cinnamon
sig-cinnamon
claws-mail-plugins
claws-mail
sig-UKUI
claws-mail-plugins-bsfilter
claws-mail
sig-UKUI
claws-mail-plugins-bogofilter
claws-mail
sig-UKUI
cockpit-ovirt-dashboard
cockpit-ovirt
oVirt
ovirt-hosted-engine-setup
ovirt-hosted-engine-setup
oVirt
ovirt-host
ovirt-host
oVirt
dde
dde
sig-DDE
dde-control-center
dde-control-center
sig-DDE
startdde
startdde
sig-DDE
dde-daemon
dde-daemon
sig-DDE
dde-session-ui
dde-session-ui
sig-DDE
dde-desktop
dde-file-manager
sig-DDE
dde-launcher
dde-launcher
sig-DDE
dde-file-manager
dde-file-manager
sig-DDE
libdde-file-manager
dde-file-manager
sig-DDE
dde-disk-mount-plugin
dde-file-manager
sig-DDE
dde-file-manager-devel
dde-file-manager
sig-DDE
dde-launcher-devel
dde-launcher
sig-DDE
deepin-compressor
deepin-compressor
sig-DDE
deepin-font-manager
deepin-font-manager
sig-DDE
libdeepin-font-manager
deepin-font-manager
sig-DDE
deepin-screen-recorder
deepin-screen-recorder
sig-DDE
kwin
kwin
sig-KDE
kwin-common
kwin
sig-KDE
kwin-devel
kwin
sig-KDE
kwin-doc
kwin
sig-KDE
kwin-wayland
kwin
sig-KDE
kwin-x11
kwin
sig-KDE
lastpass-cli
lastpass-cli
Application
openstack-dashboard
openstack-dashboard
#N/A
python3-horizon
openstack-dashboard
#N/A
ovirt-engine
ovirt-engine
oVirt
ovirt-engine-setup-plugin-ovirt-engine
ovirt-engine
oVirt
ovirt-provider-ovn
ovirt-provider-ovn
oVirt
ovirt-engine-backend
ovirt-engine
oVirt
ovirt-engine-dbscripts
ovirt-engine
oVirt
ovirt-engine-dwh
ovirt-engine-dwh
oVirt
ovirt-engine-dwh-grafana-integration-setup
ovirt-engine-dwh
oVirt
ovirt-engine-dwh-setup
ovirt-engine-dwh
oVirt
ovirt-engine-restapi
ovirt-engine
oVirt
ovirt-engine-setup
ovirt-engine
oVirt
ovirt-engine-setup-plugin-cinderlib
ovirt-engine
oVirt
ovirt-engine-setup-plugin-imageio
ovirt-engine
oVirt
ovirt-engine-setup-plugin-vmconsole-proxy-helper
ovirt-engine
oVirt
ovirt-engine-tools
ovirt-engine
oVirt
ovirt-engine-webadmin-portal
ovirt-engine
oVirt
ovirt-engine-ui-extensions
ovirt-engine-ui-extensions
oVirt
ovirt-engine-vmconsole-proxy-helper
ovirt-engine
oVirt
ovirt-provider-ovn-driver
ovirt-provider-ovn
oVirt
python3-graphviz
python-graphviz
sig-python-modules
python3-ironic-ui
python-ironic-ui
sig-openstack
python3-mitmproxy
python-mitmproxy
sig-python-modules
python3-muranoclient
python-muranoclient
sig-openstack
python3-neutron-tempest-plugin
python-neutron-tempest-plugin
sig-openstack
python3-os-xenapi-tests
python-os-xenapi
sig-openstack
python3-pep517
python-pep517
sig-python-modules
python3-pip-api
python-pip-api
sig-openstack
python3-requirementslib
python-requirementslib
sig-openstack
python3-senlinclient
python-senlinclient
sig-openstack
python3-trove-tempest-plugin
python-trove-tempest-plugin
sig-openstack
ukui
ukui-desktop-environment
sig-UKUI
ukui-desktop-environment
ukui-desktop-environment
sig-UKUI
ukui-desktop-environment-core
ukui-desktop-environment
sig-UKUI
kylin-music
kylin-music
sig-UKUI
------
BR
陈亚强(openEuler release management sig)
1
0

[PATCH openEuler-1.0-LTS] io_uring: always grab file table for deferred statx
by Yongqiang Liu 22 Jul '22
by Yongqiang Liu 22 Jul '22
22 Jul '22
From: Jens Axboe <axboe(a)kernel.dk>
stable inclusion
from stable-v5.10.118
commit 3c48558be571e01f67e65edcf03193484eeb2b79
category: bugfix
bugzilla: 187134, https://gitee.com/openeuler/kernel/issues/I5HEXY
CVE: NA
--------------------------------
Lee reports that there's a use-after-free of the process file table.
There's an assumption that we don't need the file table for some
variants of statx invocation, but that turns out to be false and we
end up with not grabbing a reference for the request even if the
deferred execution uses it.
Get rid of the REQ_F_NO_FILE_TABLE optimization for statx, and always
grab that reference.
This issues doesn't exist upstream since the native workers got
introduced with 5.12.
Link: https://lore.kernel.org/io-uring/YoOJ%2FT4QRKC+fAZE@google.com/
Reported-by: Lee Jones <lee.jones(a)linaro.org>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io_uring.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 7ae8ba98e73b..8a96b7df4112 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -3836,12 +3836,8 @@ static int io_statx(struct io_kiocb *req, bool force_nonblock)
struct io_statx *ctx = &req->statx;
int ret;
- if (force_nonblock) {
- /* only need file table for an actual valid fd */
- if (ctx->dfd == -1 || ctx->dfd == AT_FDCWD)
- req->flags |= REQ_F_NO_FILE_TABLE;
+ if (force_nonblock)
return -EAGAIN;
- }
ret = do_statx(ctx->dfd, ctx->filename, ctx->flags, ctx->mask,
ctx->buffer);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] bpf: Don't redirect packets with invalid pkt_len
by Yongqiang Liu 22 Jul '22
by Yongqiang Liu 22 Jul '22
22 Jul '22
From: Zhengchao Shao <shaozhengchao(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5HWKR
CVE: NA
--------------------------------
Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
skbs, that is, the flow->head is null.
The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
run a bpf prog which redirects empty skbs.
So we should determine whether the length of the packet modified by bpf
prog or others like bpf_prog_test is valid before forwarding it directly.
LINK: [1] https://syzkaller.appspot.com/bug?id=0b84da80c2917757915afa89f7738a9d16ec96…
LINK: [2] https://www.spinics.net/lists/netdev/msg777503.html
Reported-by: syzbot+7a12909485b94426aceb(a)syzkaller.appspotmail.com
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Conflict:
net/bpf/test_run.c
Reviewed-by: Stanislav Fomichev <sdf(a)google.com>
Link: https://lore.kernel.org/r/20220715115559.139691-1-shaozhengchao@huawei.com
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
include/linux/skbuff.h | 8 ++++++++
net/bpf/test_run.c | 6 ++++++
net/core/dev.c | 1 +
3 files changed, 15 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index e9f100bd73d9..dbdb03ac557f 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -2077,6 +2077,14 @@ static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
#endif /* NET_SKBUFF_DATA_USES_OFFSET */
+static inline void skb_assert_len(struct sk_buff *skb)
+{
+#ifdef CONFIG_DEBUG_NET
+ if (WARN_ONCE(!skb->len, "%s\n", __func__))
+ DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
+#endif /* CONFIG_DEBUG_NET */
+}
+
/*
* Add data to an sk_buff
*/
diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index f4078830ea50..fba139c995aa 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -144,6 +144,12 @@ int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
__skb_push(skb, hh_len);
if (is_direct_pkt_access)
bpf_compute_data_pointers(skb);
+
+ if (!skb->len) {
+ kfree_skb(skb);
+ return -EINVAL;
+ }
+
retval = bpf_test_run(prog, skb, repeat, &duration);
if (!is_l2) {
if (skb_headroom(skb) < hh_len) {
diff --git a/net/core/dev.c b/net/core/dev.c
index 5bc0e56216c9..078e8a231616 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3775,6 +3775,7 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
bool again = false;
skb_reset_mac_header(skb);
+ skb_assert_len(skb);
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP))
__skb_tstamp_tx(skb, NULL, skb->sk, SCM_TSTAMP_SCHED);
--
2.25.1
1
0

22 Jul '22
This patchset aims to start a discussion about potential applications of BPF to
the scheduler. It also aims to land some very basic BPF infrastructure necessary
to add new BPF hooks to the scheduler, a minimal set of useful helpers,
corresponding libbpf changes, etc.
[Testing]
kernel options:
CONFIG_BPF_SCHED=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_EVENTS=y
Test passed with below step:
1.cd tools/testing/selftests/bpf & make
2.run cmd: ./test_progs -t test_sched
3.it will show like this:
# ./test_progs -t test_sched
#113/1 sched_tgidpid_mode:OK
#113/2 sched_cgid_mode:OK
#113 test_sched:OK
Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
Chen Hui (1):
sched: Move some definition to sched.h
Ren Zhijie (1):
bpf: sched: add selftests for BPF_PROG_TYPE_SCHED
Roman Gushchin (6):
bpf: sched: basic infrastructure for scheduler bpf
bpf: sched: add convenient helpers to identify sched entities
bpf: sched: introduce bpf_sched_enable()
sched: cfs: add bpf hooks to control wakeup and tick preemption
libbpf: add support for scheduler bpf programs
bpftool: recognize scheduler programs
include/linux/bpf_sched.h | 50 +++++
include/linux/bpf_types.h | 4 +
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 25 +++
init/Kconfig | 10 +
kernel/bpf/btf.c | 1 +
kernel/bpf/syscall.c | 20 ++
kernel/bpf/trampoline.c | 1 +
kernel/bpf/verifier.c | 11 +-
kernel/sched/Makefile | 1 +
kernel/sched/bpf_sched.c | 138 ++++++++++++
kernel/sched/fair.c | 79 +++----
kernel/sched/sched.h | 52 +++++
scripts/bpf_helpers_doc.py | 2 +
tools/bpf/bpftool/common.c | 1 +
tools/bpf/bpftool/prog.c | 1 +
tools/include/uapi/linux/bpf.h | 25 +++
tools/lib/bpf/bpf.c | 3 +-
tools/lib/bpf/libbpf.c | 33 ++-
tools/lib/bpf/libbpf.h | 4 +
tools/lib/bpf/libbpf.map | 3 +
.../selftests/bpf/prog_tests/test_sched.c | 160 ++++++++++++++
tools/testing/selftests/bpf/progs/sched.c | 203 ++++++++++++++++++
23 files changed, 780 insertions(+), 52 deletions(-)
create mode 100644 include/linux/bpf_sched.h
create mode 100644 include/linux/sched_hook_defs.h
create mode 100644 kernel/sched/bpf_sched.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_sched.c
create mode 100644 tools/testing/selftests/bpf/progs/sched.c
--
2.20.1
1
0

[PATCH openEuler-22.09 v2 1/8] bpf: sched: basic infrastructure for scheduler bpf
by Zheng Zengkai 22 Jul '22
by Zheng Zengkai 22 Jul '22
22 Jul '22
From: Roman Gushchin <guro(a)fb.com>
maillist inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5F6X6
CVE: NA
Reference: https://lore.kernel.org/all/20210916162451.709260-1-guro@fb.com/
-------------------
This commit introduces basic definitions and infrastructure for
scheduler bpf programs. It defines the BPF_PROG_TYPE_SCHED program
type and the BPF_SCHED attachment type.
The implementation is inspired by lsm bpf programs and is based on
kretprobes. This will allow to add new hooks with a minimal changes to
the kernel code and without any changes to libbpf/bpftool.
It's very convenient as I anticipate a large number of private patches
being used for a long time before (or if at all) reaching upstream.
Sched programs are expected to return an int, which meaning will be
context defined.
This patch doesn't add any real scheduler hooks (only a stub), it will
be done by following patches in the series.
Scheduler bpf programs as now are very restricted in what they can do:
only the bpf_printk() helper is available. The scheduler context can
impose significant restrictions on what's safe and what's not. So
let's extend their abilities on case by case basis when a need arise.
Signed-off-by: Roman Gushchin <guro(a)fb.com>
Signed-off-by: Chen Hui <judy.chenhui(a)huawei.com>
Signed-off-by: Ren Zhijie <renzhijie2(a)huawei.com>
---
include/linux/bpf_sched.h | 26 ++++++++++++++
include/linux/bpf_types.h | 4 +++
include/linux/sched_hook_defs.h | 2 ++
include/uapi/linux/bpf.h | 2 ++
init/Kconfig | 10 ++++++
kernel/bpf/btf.c | 1 +
kernel/bpf/syscall.c | 9 +++++
kernel/bpf/trampoline.c | 1 +
kernel/bpf/verifier.c | 11 +++++-
kernel/sched/Makefile | 1 +
kernel/sched/bpf_sched.c | 62 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 2 ++
12 files changed, 130 insertions(+), 1 deletion(-)
create mode 100644 include/linux/bpf_sched.h
create mode 100644 include/linux/sched_hook_defs.h
create mode 100644 kernel/sched/bpf_sched.c
diff --git a/include/linux/bpf_sched.h b/include/linux/bpf_sched.h
new file mode 100644
index 000000000000..874393e6a6aa
--- /dev/null
+++ b/include/linux/bpf_sched.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_BPF_SCHED_H
+#define _LINUX_BPF_SCHED_H
+
+#include <linux/bpf.h>
+
+#ifdef CONFIG_BPF_SCHED
+
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) \
+ RET bpf_sched_##NAME(__VA_ARGS__);
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+
+int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog);
+
+#else /* !CONFIG_BPF_SCHED */
+
+static inline int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog)
+{
+ return -EOPNOTSUPP;
+}
+
+#endif /* CONFIG_BPF_SCHED */
+#endif /* _LINUX_BPF_SCHED_H */
diff --git a/include/linux/bpf_types.h b/include/linux/bpf_types.h
index a8137bb6dd3c..5732b485c539 100644
--- a/include/linux/bpf_types.h
+++ b/include/linux/bpf_types.h
@@ -77,6 +77,10 @@ BPF_PROG_TYPE(BPF_PROG_TYPE_LSM, lsm,
void *, void *)
#endif /* CONFIG_BPF_LSM */
#endif
+#ifdef CONFIG_BPF_SCHED
+BPF_PROG_TYPE(BPF_PROG_TYPE_SCHED, bpf_sched,
+ void *, void *)
+#endif /* CONFIG_BPF_SCHED */
BPF_MAP_TYPE(BPF_MAP_TYPE_ARRAY, array_map_ops)
BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_ARRAY, percpu_array_map_ops)
diff --git a/include/linux/sched_hook_defs.h b/include/linux/sched_hook_defs.h
new file mode 100644
index 000000000000..14344004e335
--- /dev/null
+++ b/include/linux/sched_hook_defs.h
@@ -0,0 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+BPF_SCHED_HOOK(int, 0, dummy, void)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 8fae845d80e2..4f8f3f2113a7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -199,6 +199,7 @@ enum bpf_prog_type {
BPF_PROG_TYPE_EXT,
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
+ BPF_PROG_TYPE_SCHED,
};
enum bpf_attach_type {
@@ -240,6 +241,7 @@ enum bpf_attach_type {
BPF_XDP_CPUMAP,
BPF_SK_LOOKUP,
BPF_XDP,
+ BPF_SCHED,
__MAX_BPF_ATTACH_TYPE
};
diff --git a/init/Kconfig b/init/Kconfig
index 27c5ed16fef1..c3fa3240d87d 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1749,6 +1749,16 @@ config BPF_LSM
If you are unsure how to answer this question, answer N.
+config BPF_SCHED
+ bool "SCHED Instrumentation with BPF"
+ depends on BPF_EVENTS
+ depends on BPF_SYSCALL
+ help
+ Enables instrumentation of the sched hooks with eBPF programs for
+ implementing dynamic scheduling Policies.
+
+ If you are unsure how to answer this question, answer N.
+
config BPF_SYSCALL
bool "Enable bpf() system call"
select BPF
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index fba28f17e61a..9a0a9895ec62 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -4479,6 +4479,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
return true;
t = btf_type_by_id(btf, t->type);
break;
+ case BPF_SCHED:
case BPF_MODIFY_RETURN:
/* For now the BPF_MODIFY_RETURN can only be attached to
* functions that return an int.
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 419dbc3d060e..ff65862ae5ce 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -1997,6 +1997,7 @@ bpf_prog_load_check_attach(enum bpf_prog_type prog_type,
case BPF_PROG_TYPE_LSM:
case BPF_PROG_TYPE_STRUCT_OPS:
case BPF_PROG_TYPE_EXT:
+ case BPF_PROG_TYPE_SCHED:
break;
default:
return -EINVAL;
@@ -2108,6 +2109,7 @@ static bool is_perfmon_prog_type(enum bpf_prog_type prog_type)
case BPF_PROG_TYPE_LSM:
case BPF_PROG_TYPE_STRUCT_OPS: /* has access to struct sock */
case BPF_PROG_TYPE_EXT: /* extends any prog */
+ case BPF_PROG_TYPE_SCHED:
return true;
default:
return false;
@@ -2608,6 +2610,12 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog,
goto out_put_prog;
}
break;
+ case BPF_PROG_TYPE_SCHED:
+ if (prog->expected_attach_type != BPF_SCHED) {
+ err = -EINVAL;
+ goto out_put_prog;
+ }
+ break;
default:
err = -EINVAL;
goto out_put_prog;
@@ -2838,6 +2846,7 @@ static int bpf_raw_tracepoint_open(const union bpf_attr *attr)
case BPF_PROG_TYPE_TRACING:
case BPF_PROG_TYPE_EXT:
case BPF_PROG_TYPE_LSM:
+ case BPF_PROG_TYPE_SCHED:
if (attr->raw_tracepoint.name) {
/* The attach point for this category of programs
* should be specified via btf_id during program load.
diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c
index 986dabc3d11f..cc6ba35a1d14 100644
--- a/kernel/bpf/trampoline.c
+++ b/kernel/bpf/trampoline.c
@@ -357,6 +357,7 @@ static enum bpf_tramp_prog_type bpf_attach_type_to_tramp(struct bpf_prog *prog)
switch (prog->expected_attach_type) {
case BPF_TRACE_FENTRY:
return BPF_TRAMP_FENTRY;
+ case BPF_SCHED:
case BPF_MODIFY_RETURN:
return BPF_TRAMP_MODIFY_RETURN;
case BPF_TRACE_FEXIT:
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 6423f1714a2f..d26104b258ba 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -22,6 +22,7 @@
#include <linux/error-injection.h>
#include <linux/bpf_lsm.h>
#include <linux/btf_ids.h>
+#include <linux/bpf_sched.h>
#include "disasm.h"
@@ -12178,6 +12179,7 @@ int bpf_check_attach_target(struct bpf_verifier_log *log,
case BPF_LSM_MAC:
case BPF_TRACE_FENTRY:
case BPF_TRACE_FEXIT:
+ case BPF_SCHED:
if (!btf_type_is_func(t)) {
bpf_log(log, "attach_btf_id %u is not a function\n",
btf_id);
@@ -12283,7 +12285,8 @@ static int check_attach_btf_id(struct bpf_verifier_env *env)
if (prog->type != BPF_PROG_TYPE_TRACING &&
prog->type != BPF_PROG_TYPE_LSM &&
- prog->type != BPF_PROG_TYPE_EXT)
+ prog->type != BPF_PROG_TYPE_EXT &&
+ prog->type != BPF_PROG_TYPE_SCHED)
return 0;
ret = bpf_check_attach_target(&env->log, prog, tgt_prog, btf_id, &tgt_info);
@@ -12323,6 +12326,12 @@ static int check_attach_btf_id(struct bpf_verifier_env *env)
return ret;
}
+ if (prog->type == BPF_PROG_TYPE_SCHED) {
+ ret = bpf_sched_verify_prog(&env->log, prog);
+ if (ret < 0)
+ return ret;
+ }
+
key = bpf_trampoline_compute_key(tgt_prog, btf_id);
tr = bpf_trampoline_get(key, &tgt_info);
if (!tr)
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
index 5fc9c9b70862..8ae9e39eb83a 100644
--- a/kernel/sched/Makefile
+++ b/kernel/sched/Makefile
@@ -36,3 +36,4 @@ obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_CPU_ISOLATION) += isolation.o
obj-$(CONFIG_PSI) += psi.o
+obj-$(CONFIG_BPF_SCHED) += bpf_sched.o
\ No newline at end of file
diff --git a/kernel/sched/bpf_sched.c b/kernel/sched/bpf_sched.c
new file mode 100644
index 000000000000..2f05c186cfd0
--- /dev/null
+++ b/kernel/sched/bpf_sched.c
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/bpf.h>
+#include <linux/cgroup.h>
+#include <linux/bpf_verifier.h>
+#include <linux/bpf_sched.h>
+#include <linux/btf_ids.h>
+#include "sched.h"
+
+/*
+ * For every hook declare a nop function where a BPF program can be attached.
+ */
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) \
+noinline RET bpf_sched_##NAME(__VA_ARGS__) \
+{ \
+ return DEFAULT; \
+}
+
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) BTF_ID(func, bpf_sched_##NAME)
+BTF_SET_START(bpf_sched_hooks)
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+BTF_SET_END(bpf_sched_hooks)
+
+int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog)
+{
+ if (!prog->gpl_compatible) {
+ bpf_log(vlog,
+ "sched programs must have a GPL compatible license\n");
+ return -EINVAL;
+ }
+
+ if (!btf_id_set_contains(&bpf_sched_hooks, prog->aux->attach_btf_id)) {
+ bpf_log(vlog, "attach_btf_id %u points to wrong type name %s\n",
+ prog->aux->attach_btf_id, prog->aux->attach_func_name);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static const struct bpf_func_proto *
+bpf_sched_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
+{
+ switch (func_id) {
+ case BPF_FUNC_trace_printk:
+ return bpf_get_trace_printk_proto();
+ default:
+ return NULL;
+ }
+}
+
+const struct bpf_prog_ops bpf_sched_prog_ops = {
+};
+
+const struct bpf_verifier_ops bpf_sched_verifier_ops = {
+ .get_func_proto = bpf_sched_func_proto,
+ .is_valid_access = btf_ctx_access,
+};
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index a44cb5155825..7d7c04f698ec 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -199,6 +199,7 @@ enum bpf_prog_type {
BPF_PROG_TYPE_EXT,
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
+ BPF_PROG_TYPE_SCHED,
};
enum bpf_attach_type {
@@ -240,6 +241,7 @@ enum bpf_attach_type {
BPF_XDP_CPUMAP,
BPF_SK_LOOKUP,
BPF_XDP,
+ BPF_SCHED,
__MAX_BPF_ATTACH_TYPE
};
--
2.20.1
1
7

[PATCH openEuler-22.09 1/7] bpf: sched: basic infrastructure for scheduler bpf
by Zheng Zengkai 22 Jul '22
by Zheng Zengkai 22 Jul '22
22 Jul '22
From: Roman Gushchin <guro(a)fb.com>
maillist inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5F6X6
CVE: NA
Reference: https://lore.kernel.org/all/20210916162451.709260-1-guro@fb.com/
-------------------
This commit introduces basic definitions and infrastructure for
scheduler bpf programs. It defines the BPF_PROG_TYPE_SCHED program
type and the BPF_SCHED attachment type.
The implementation is inspired by lsm bpf programs and is based on
kretprobes. This will allow to add new hooks with a minimal changes to
the kernel code and without any changes to libbpf/bpftool.
It's very convenient as I anticipate a large number of private patches
being used for a long time before (or if at all) reaching upstream.
Sched programs are expected to return an int, which meaning will be
context defined.
This patch doesn't add any real scheduler hooks (only a stub), it will
be done by following patches in the series.
Scheduler bpf programs as now are very restricted in what they can do:
only the bpf_printk() helper is available. The scheduler context can
impose significant restrictions on what's safe and what's not. So
let's extend their abilities on case by case basis when a need arise.
Signed-off-by: Roman Gushchin <guro(a)fb.com>
Signed-off-by: Chen Hui <judy.chenhui(a)huawei.com>
Signed-off-by: Ren Zhijie <renzhijie2(a)huawei.com>
---
include/linux/bpf_sched.h | 26 ++++++++++++++
include/linux/bpf_types.h | 4 +++
include/linux/sched_hook_defs.h | 2 ++
include/uapi/linux/bpf.h | 2 ++
init/Kconfig | 10 ++++++
kernel/bpf/btf.c | 1 +
kernel/bpf/syscall.c | 9 +++++
kernel/bpf/trampoline.c | 1 +
kernel/bpf/verifier.c | 11 +++++-
kernel/sched/Makefile | 1 +
kernel/sched/bpf_sched.c | 62 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 2 ++
12 files changed, 130 insertions(+), 1 deletion(-)
create mode 100644 include/linux/bpf_sched.h
create mode 100644 include/linux/sched_hook_defs.h
create mode 100644 kernel/sched/bpf_sched.c
diff --git a/include/linux/bpf_sched.h b/include/linux/bpf_sched.h
new file mode 100644
index 000000000000..874393e6a6aa
--- /dev/null
+++ b/include/linux/bpf_sched.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_BPF_SCHED_H
+#define _LINUX_BPF_SCHED_H
+
+#include <linux/bpf.h>
+
+#ifdef CONFIG_BPF_SCHED
+
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) \
+ RET bpf_sched_##NAME(__VA_ARGS__);
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+
+int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog);
+
+#else /* !CONFIG_BPF_SCHED */
+
+static inline int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog)
+{
+ return -EOPNOTSUPP;
+}
+
+#endif /* CONFIG_BPF_SCHED */
+#endif /* _LINUX_BPF_SCHED_H */
diff --git a/include/linux/bpf_types.h b/include/linux/bpf_types.h
index a8137bb6dd3c..5732b485c539 100644
--- a/include/linux/bpf_types.h
+++ b/include/linux/bpf_types.h
@@ -77,6 +77,10 @@ BPF_PROG_TYPE(BPF_PROG_TYPE_LSM, lsm,
void *, void *)
#endif /* CONFIG_BPF_LSM */
#endif
+#ifdef CONFIG_BPF_SCHED
+BPF_PROG_TYPE(BPF_PROG_TYPE_SCHED, bpf_sched,
+ void *, void *)
+#endif /* CONFIG_BPF_SCHED */
BPF_MAP_TYPE(BPF_MAP_TYPE_ARRAY, array_map_ops)
BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_ARRAY, percpu_array_map_ops)
diff --git a/include/linux/sched_hook_defs.h b/include/linux/sched_hook_defs.h
new file mode 100644
index 000000000000..14344004e335
--- /dev/null
+++ b/include/linux/sched_hook_defs.h
@@ -0,0 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+BPF_SCHED_HOOK(int, 0, dummy, void)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 8fae845d80e2..4f8f3f2113a7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -199,6 +199,7 @@ enum bpf_prog_type {
BPF_PROG_TYPE_EXT,
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
+ BPF_PROG_TYPE_SCHED,
};
enum bpf_attach_type {
@@ -240,6 +241,7 @@ enum bpf_attach_type {
BPF_XDP_CPUMAP,
BPF_SK_LOOKUP,
BPF_XDP,
+ BPF_SCHED,
__MAX_BPF_ATTACH_TYPE
};
diff --git a/init/Kconfig b/init/Kconfig
index 27c5ed16fef1..c3fa3240d87d 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1749,6 +1749,16 @@ config BPF_LSM
If you are unsure how to answer this question, answer N.
+config BPF_SCHED
+ bool "SCHED Instrumentation with BPF"
+ depends on BPF_EVENTS
+ depends on BPF_SYSCALL
+ help
+ Enables instrumentation of the sched hooks with eBPF programs for
+ implementing dynamic scheduling Policies.
+
+ If you are unsure how to answer this question, answer N.
+
config BPF_SYSCALL
bool "Enable bpf() system call"
select BPF
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index fba28f17e61a..9a0a9895ec62 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -4479,6 +4479,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
return true;
t = btf_type_by_id(btf, t->type);
break;
+ case BPF_SCHED:
case BPF_MODIFY_RETURN:
/* For now the BPF_MODIFY_RETURN can only be attached to
* functions that return an int.
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 419dbc3d060e..ff65862ae5ce 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -1997,6 +1997,7 @@ bpf_prog_load_check_attach(enum bpf_prog_type prog_type,
case BPF_PROG_TYPE_LSM:
case BPF_PROG_TYPE_STRUCT_OPS:
case BPF_PROG_TYPE_EXT:
+ case BPF_PROG_TYPE_SCHED:
break;
default:
return -EINVAL;
@@ -2108,6 +2109,7 @@ static bool is_perfmon_prog_type(enum bpf_prog_type prog_type)
case BPF_PROG_TYPE_LSM:
case BPF_PROG_TYPE_STRUCT_OPS: /* has access to struct sock */
case BPF_PROG_TYPE_EXT: /* extends any prog */
+ case BPF_PROG_TYPE_SCHED:
return true;
default:
return false;
@@ -2608,6 +2610,12 @@ static int bpf_tracing_prog_attach(struct bpf_prog *prog,
goto out_put_prog;
}
break;
+ case BPF_PROG_TYPE_SCHED:
+ if (prog->expected_attach_type != BPF_SCHED) {
+ err = -EINVAL;
+ goto out_put_prog;
+ }
+ break;
default:
err = -EINVAL;
goto out_put_prog;
@@ -2838,6 +2846,7 @@ static int bpf_raw_tracepoint_open(const union bpf_attr *attr)
case BPF_PROG_TYPE_TRACING:
case BPF_PROG_TYPE_EXT:
case BPF_PROG_TYPE_LSM:
+ case BPF_PROG_TYPE_SCHED:
if (attr->raw_tracepoint.name) {
/* The attach point for this category of programs
* should be specified via btf_id during program load.
diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c
index 986dabc3d11f..cc6ba35a1d14 100644
--- a/kernel/bpf/trampoline.c
+++ b/kernel/bpf/trampoline.c
@@ -357,6 +357,7 @@ static enum bpf_tramp_prog_type bpf_attach_type_to_tramp(struct bpf_prog *prog)
switch (prog->expected_attach_type) {
case BPF_TRACE_FENTRY:
return BPF_TRAMP_FENTRY;
+ case BPF_SCHED:
case BPF_MODIFY_RETURN:
return BPF_TRAMP_MODIFY_RETURN;
case BPF_TRACE_FEXIT:
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 6423f1714a2f..d26104b258ba 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -22,6 +22,7 @@
#include <linux/error-injection.h>
#include <linux/bpf_lsm.h>
#include <linux/btf_ids.h>
+#include <linux/bpf_sched.h>
#include "disasm.h"
@@ -12178,6 +12179,7 @@ int bpf_check_attach_target(struct bpf_verifier_log *log,
case BPF_LSM_MAC:
case BPF_TRACE_FENTRY:
case BPF_TRACE_FEXIT:
+ case BPF_SCHED:
if (!btf_type_is_func(t)) {
bpf_log(log, "attach_btf_id %u is not a function\n",
btf_id);
@@ -12283,7 +12285,8 @@ static int check_attach_btf_id(struct bpf_verifier_env *env)
if (prog->type != BPF_PROG_TYPE_TRACING &&
prog->type != BPF_PROG_TYPE_LSM &&
- prog->type != BPF_PROG_TYPE_EXT)
+ prog->type != BPF_PROG_TYPE_EXT &&
+ prog->type != BPF_PROG_TYPE_SCHED)
return 0;
ret = bpf_check_attach_target(&env->log, prog, tgt_prog, btf_id, &tgt_info);
@@ -12323,6 +12326,12 @@ static int check_attach_btf_id(struct bpf_verifier_env *env)
return ret;
}
+ if (prog->type == BPF_PROG_TYPE_SCHED) {
+ ret = bpf_sched_verify_prog(&env->log, prog);
+ if (ret < 0)
+ return ret;
+ }
+
key = bpf_trampoline_compute_key(tgt_prog, btf_id);
tr = bpf_trampoline_get(key, &tgt_info);
if (!tr)
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
index 5fc9c9b70862..8ae9e39eb83a 100644
--- a/kernel/sched/Makefile
+++ b/kernel/sched/Makefile
@@ -36,3 +36,4 @@ obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_CPU_ISOLATION) += isolation.o
obj-$(CONFIG_PSI) += psi.o
+obj-$(CONFIG_BPF_SCHED) += bpf_sched.o
\ No newline at end of file
diff --git a/kernel/sched/bpf_sched.c b/kernel/sched/bpf_sched.c
new file mode 100644
index 000000000000..2f05c186cfd0
--- /dev/null
+++ b/kernel/sched/bpf_sched.c
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/bpf.h>
+#include <linux/cgroup.h>
+#include <linux/bpf_verifier.h>
+#include <linux/bpf_sched.h>
+#include <linux/btf_ids.h>
+#include "sched.h"
+
+/*
+ * For every hook declare a nop function where a BPF program can be attached.
+ */
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) \
+noinline RET bpf_sched_##NAME(__VA_ARGS__) \
+{ \
+ return DEFAULT; \
+}
+
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+
+#define BPF_SCHED_HOOK(RET, DEFAULT, NAME, ...) BTF_ID(func, bpf_sched_##NAME)
+BTF_SET_START(bpf_sched_hooks)
+#include <linux/sched_hook_defs.h>
+#undef BPF_SCHED_HOOK
+BTF_SET_END(bpf_sched_hooks)
+
+int bpf_sched_verify_prog(struct bpf_verifier_log *vlog,
+ const struct bpf_prog *prog)
+{
+ if (!prog->gpl_compatible) {
+ bpf_log(vlog,
+ "sched programs must have a GPL compatible license\n");
+ return -EINVAL;
+ }
+
+ if (!btf_id_set_contains(&bpf_sched_hooks, prog->aux->attach_btf_id)) {
+ bpf_log(vlog, "attach_btf_id %u points to wrong type name %s\n",
+ prog->aux->attach_btf_id, prog->aux->attach_func_name);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static const struct bpf_func_proto *
+bpf_sched_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
+{
+ switch (func_id) {
+ case BPF_FUNC_trace_printk:
+ return bpf_get_trace_printk_proto();
+ default:
+ return NULL;
+ }
+}
+
+const struct bpf_prog_ops bpf_sched_prog_ops = {
+};
+
+const struct bpf_verifier_ops bpf_sched_verifier_ops = {
+ .get_func_proto = bpf_sched_func_proto,
+ .is_valid_access = btf_ctx_access,
+};
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index a44cb5155825..7d7c04f698ec 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -199,6 +199,7 @@ enum bpf_prog_type {
BPF_PROG_TYPE_EXT,
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
+ BPF_PROG_TYPE_SCHED,
};
enum bpf_attach_type {
@@ -240,6 +241,7 @@ enum bpf_attach_type {
BPF_XDP_CPUMAP,
BPF_SK_LOOKUP,
BPF_XDP,
+ BPF_SCHED,
__MAX_BPF_ATTACH_TYPE
};
--
2.20.1
1
6

21 Jul '22
*** BLURB HERE ***
Hui Tang (6):
sched: Introduce dynamic affinity for cfs scheduler
cpuset: Introduce new interface for scheduler dynamic affinity
sched: Adjust wakeup cpu range according CPU util dynamicly
sched: Adjust cpu range in load balance dynamicly
sched: Add statistics for scheduler dynamic affinity
config: enable CONFIG_QOS_SCHED_DYNAMIC_AFFINITY by default
arch/arm64/configs/hulk_defconfig | 1 +
arch/arm64/configs/openeuler_defconfig | 1 +
arch/x86/configs/hulk_defconfig | 1 +
arch/x86/configs/openeuler_defconfig | 1 +
include/linux/sched.h | 36 ++++++
include/linux/sched/sysctl.h | 4 +
init/Kconfig | 10 ++
init/init_task.c | 3 +
kernel/cgroup/cpuset.c | 151 ++++++++++++++++++++++-
kernel/fork.c | 13 ++
kernel/sched/core.c | 103 ++++++++++++++++
kernel/sched/debug.c | 7 ++
kernel/sched/fair.c | 159 +++++++++++++++++++++++++
kernel/sysctl.c | 11 ++
14 files changed, 500 insertions(+), 1 deletion(-)
--
2.25.1
1
6

[PATCH openEuler-1.0-LTS 1/3] video: fbdev: sm712fb: Fix crash in smtcfb_read()
by Yongqiang Liu 21 Jul '22
by Yongqiang Liu 21 Jul '22
21 Jul '22
From: Helge Deller <deller(a)gmx.de>
stable inclusion
from stable-v4.19.238
commit 1caa40af491dcfe17b3ae870a854388d8ea01984
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5GKWU
CVE: CVE-2022-2380
--------------------------------
Zheyu Ma reported this crash in the sm712fb driver when reading
three bytes from the framebuffer:
BUG: unable to handle page fault for address: ffffc90001ffffff
RIP: 0010:smtcfb_read+0x230/0x3e0
Call Trace:
vfs_read+0x198/0xa00
? do_sys_openat2+0x27d/0x350
? __fget_light+0x54/0x340
ksys_read+0xce/0x190
do_syscall_64+0x43/0x90
Fix it by removing the open-coded endianess fixup-code and
by moving the pointer post decrement out the fb_readl() function.
Reported-by: Zheyu Ma <zheyuma97(a)gmail.com>
Signed-off-by: Helge Deller <deller(a)gmx.de>
Tested-by: Zheyu Ma <zheyuma97(a)gmail.com>
Cc: stable(a)vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Xia Longlong <xialonglong1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/sm712fb.c | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
diff --git a/drivers/video/fbdev/sm712fb.c b/drivers/video/fbdev/sm712fb.c
index f1dcc6766d1e..0713b8444ecc 100644
--- a/drivers/video/fbdev/sm712fb.c
+++ b/drivers/video/fbdev/sm712fb.c
@@ -1047,7 +1047,7 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
if (count + p > total_size)
count = total_size - p;
- buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
+ buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
@@ -1059,24 +1059,13 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
while (count) {
c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
dst = buffer;
- for (i = c >> 2; i--;) {
- *dst = fb_readl(src++);
- *dst = big_swap(*dst);
- dst++;
- }
- if (c & 3) {
- u8 *dst8 = (u8 *)dst;
- u8 __iomem *src8 = (u8 __iomem *)src;
+ for (i = (c + 3) >> 2; i--;) {
+ u32 val;
- for (i = c & 3; i--;) {
- if (i & 1) {
- *dst8++ = fb_readb(++src8);
- } else {
- *dst8++ = fb_readb(--src8);
- src8 += 2;
- }
- }
- src = (u32 __iomem *)src8;
+ val = fb_readl(src);
+ *dst = big_swap(val);
+ src++;
+ dst++;
}
if (copy_to_user(buf, buffer, c)) {
--
2.25.1
1
2
您好!
Kernel SIG 邀请您参加 2022-07-22 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler kernel SIG例会
会议内容:
1、introduce scheduler BPF特性回合评审
2、支持在离线混部任务优先级负载均衡特性回合评审
3、kernel仓支持PR回合补丁介绍
4、kernel仓库瘦身讨论
会议链接:https://us06web.zoom.us/j/81074273618?pwd=dTV6UmRETzR6Umd3amU0OFRXVlhndz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-07-22 14:00,
The subject of the conference is openEuler kernel SIG例会,
Summary:
1、introduce scheduler BPF特性回合评审
2、支持在离线混部任务优先级负载均衡特性回合评审
3、kernel仓支持PR回合补丁介绍
4、kernel仓库瘦身讨论
You can join the meeting at https://us06web.zoom.us/j/81074273618?pwd=dTV6UmRETzR6Umd3amU0OFRXVlhndz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS 1/2] block: don't delete queue kobject before its children
by Yongqiang Liu 20 Jul '22
by Yongqiang Liu 20 Jul '22
20 Jul '22
From: Eric Biggers <ebiggers(a)google.com>
stable inclusion
from linux-4.19.238
commit b2001eb10f59363da930cdd6e086a2861986fa18
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EWKO
CVE: NA
--------------------------------
[ Upstream commit 0f69288253e9fc7c495047720e523b9f1aba5712 ]
kobjects aren't supposed to be deleted before their child kobjects are
deleted. Apparently this is usually benign; however, a WARN will be
triggered if one of the child kobjects has a named attribute group:
sysfs group 'modes' not found for kobject 'crypto'
WARNING: CPU: 0 PID: 1 at fs/sysfs/group.c:278 sysfs_remove_group+0x72/0x80
...
Call Trace:
sysfs_remove_groups+0x29/0x40 fs/sysfs/group.c:312
__kobject_del+0x20/0x80 lib/kobject.c:611
kobject_cleanup+0xa4/0x140 lib/kobject.c:696
kobject_release lib/kobject.c:736 [inline]
kref_put include/linux/kref.h:65 [inline]
kobject_put+0x53/0x70 lib/kobject.c:753
blk_crypto_sysfs_unregister+0x10/0x20 block/blk-crypto-sysfs.c:159
blk_unregister_queue+0xb0/0x110 block/blk-sysfs.c:962
del_gendisk+0x117/0x250 block/genhd.c:610
Fix this by moving the kobject_del() and the corresponding
kobject_uevent() to the correct place.
Fixes: 2c2086afc2b8 ("block: Protect less code with sysfs_lock in blk_{un,}register_queue()")
Reviewed-by: Hannes Reinecke <hare(a)suse.de>
Reviewed-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Reviewed-by: Bart Van Assche <bvanassche(a)acm.org>
Signed-off-by: Eric Biggers <ebiggers(a)google.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Link: https://lore.kernel.org/r/20220124215938.2769-3-ebiggers@kernel.org
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Conflict:
block/blk-sysfs.c
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-sysfs.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 6beca7743c11..ee963759ae10 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -1037,8 +1037,6 @@ void blk_unregister_queue(struct gendisk *disk)
blk_mq_unregister_dev(disk_to_dev(disk), q);
mutex_unlock(&q->sysfs_lock);
- kobject_uevent(&q->kobj, KOBJ_REMOVE);
- kobject_del(&q->kobj);
blk_trace_remove_sysfs(disk_to_dev(disk));
mutex_lock(&q->sysfs_lock);
@@ -1046,5 +1044,9 @@ void blk_unregister_queue(struct gendisk *disk)
elv_unregister_queue(q);
mutex_unlock(&q->sysfs_lock);
+ /* Now that we've deleted all child objects, we can delete the queue. */
+ kobject_uevent(&q->kobj, KOBJ_REMOVE);
+ kobject_del(&q->kobj);
+
kobject_put(&disk_to_dev(disk)->kobj);
}
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/2] etmem:fix kasan slab-out-of-bounds in do_swapcache_reclaim
by Laibin Qiu 20 Jul '22
by Laibin Qiu 20 Jul '22
20 Jul '22
From: liubo <liubo254(a)huawei.com>
euleros inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GN7K
CVE: NA
--------------------------------
In the do_swapcache_reclaim interface,
there is a slab-out-of-bounds kasan problem;
The reason for the problem is that when
list_for_each_entry_safe_reverse_from traverses
the LRU linked list, it does not consider that next may be
equal to the head address, which may lead to the
head address being accessed as the page address,
causing problems.
In response to the above problems,
add a judgment about whether pos is head.
Signed-off-by: liubo <liubo254(a)huawei.com>
Reviewed-by: Miaohe Lin <linmiaohe(a)huawei.com>
Reviewed-by: wangkefeng <wangkefeng.wang(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
mm/vmscan.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 42f24473756b..011827f666cc 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -4555,7 +4555,6 @@ EXPORT_SYMBOL_GPL(get_page_from_vaddr);
static int add_page_for_reclaim_swapcache(struct page *page,
struct list_head *pagelist, struct lruvec *lruvec, enum lru_list lru)
{
- struct list_head *src = &lruvec->lists[lru];
struct page *head;
/* If the page is mapped by more than one process, do not swap it */
@@ -4574,7 +4573,6 @@ static int add_page_for_reclaim_swapcache(struct page *page,
reliable_lru_add(lru, head, -hpage_nr_pages(head));
break;
case -EBUSY:
- list_move(&head->lru, src);
return -1;
default:
break;
@@ -4744,7 +4742,7 @@ int do_swapcache_reclaim(unsigned long *swapcache_watermark,
* check if pos page is been released or not in LRU list, if true,
* cancel the subsequent page scanning of the current node.
*/
- if (!pos) {
+ if (!pos || &pos->lru == src) {
spin_unlock_irq(&pgdat->lru_lock);
continue;
}
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/8] ext4: fix race condition between ext4_ioctl_setflags and ext4_fiemap
by Yongqiang Liu 20 Jul '22
by Yongqiang Liu 20 Jul '22
20 Jul '22
From: Baokun Li <libaokun1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187222, https://gitee.com/openeuler/kernel/issues/I5H3KE
CVE: NA
--------------------------------
Hulk Robot reported a BUG:
==================================================================
kernel BUG at fs/ext4/extents_status.c:762!
invalid opcode: 0000 [#1] SMP KASAN PTI
[...]
Call Trace:
ext4_cache_extents+0x238/0x2f0
ext4_find_extent+0x785/0xa40
ext4_fiemap+0x36d/0xe90
do_vfs_ioctl+0x6af/0x1200
[...]
==================================================================
Above issue may happen as follows:
-------------------------------------
cpu1 cpu2
_____________________|_____________________
do_vfs_ioctl
ext4_ioctl
ext4_ioctl_setflags
ext4_ind_migrate
do_vfs_ioctl
ioctl_fiemap
ext4_fiemap
ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)
ext4_fill_fiemap_extents
down_write(&EXT4_I(inode)->i_data_sem);
ext4_ext_check_inode
ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS)
memset(ei->i_data, 0, sizeof(ei->i_data))
up_write(&EXT4_I(inode)->i_data_sem);
down_read(&EXT4_I(inode)->i_data_sem);
ext4_find_extent
ext4_cache_extents
ext4_es_cache_extent
BUG_ON(end < lblk)
We can easily reproduce this problem with the syzkaller testcase:
```
02:37:07 executing program 3:
r0 = openat(0xffffffffffffff9c, &(0x7f0000000040)='./file0\x00', 0x26e1, 0x0)
ioctl$FS_IOC_FSSETXATTR(r0, 0x40086602, &(0x7f0000000080)={0x17e})
mkdirat(0xffffffffffffff9c, &(0x7f00000000c0)='./file1\x00', 0x1ff)
r1 = openat(0xffffffffffffff9c, &(0x7f0000000100)='./file1\x00', 0x0, 0x0)
ioctl$FS_IOC_FIEMAP(r1, 0xc020660b, &(0x7f0000000180)={0x0, 0x1, 0x0, 0xef3, 0x6, []}) (async, rerun: 32)
ioctl$FS_IOC_FSSETXATTR(r1, 0x40086602, &(0x7f0000000140)={0x17e}) (rerun: 32)
```
To solve this issue, we use __generic_block_fiemap() instead of
generic_block_fiemap() and add inode_lock_shared to avoid race condition.
Reported-by: Hulk Robot <hulkci(a)huawei.com>
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/ext4/extents.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index d08e6d4afba6..8e5ed3e315cd 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -5267,13 +5267,18 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
return error;
}
+ inode_lock_shared(inode);
/* fallback to generic here if not in extents fmt */
- if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)))
- return generic_block_fiemap(inode, fieinfo, start, len,
+ if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
+ error = __generic_block_fiemap(inode, fieinfo, start, len,
ext4_get_block);
+ goto out_unlock;
+ }
- if (fiemap_check_flags(fieinfo, EXT4_FIEMAP_FLAGS))
- return -EBADR;
+ if (fiemap_check_flags(fieinfo, EXT4_FIEMAP_FLAGS)) {
+ error = -EBADR;
+ goto out_unlock;
+ }
if (fieinfo->fi_flags & FIEMAP_FLAG_XATTR) {
error = ext4_xattr_fiemap(inode, fieinfo);
@@ -5294,6 +5299,8 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
error = ext4_fill_fiemap_extents(inode, start_blk,
len_blks, fieinfo);
}
+out_unlock:
+ inode_unlock_shared(inode);
return error;
}
--
2.25.1
1
7

[PATCH openEuler-5.10 01/29] crypto: hisilicon/sec - don't sleep when in softirq
by Zheng Zengkai 19 Jul '22
by Zheng Zengkai 19 Jul '22
19 Jul '22
From: Zhengchao Shao <shaozhengchao(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc6
commit 02884a4f12de11f54d4ca67a07dd1f111d96fdbd
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GEVR
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git/c…
--------------------------------
When kunpeng920 encryption driver is used to deencrypt and decrypt
packets during the softirq, it is not allowed to use mutex lock. The
kernel will report the following error:
BUG: scheduling while atomic: swapper/57/0/0x00000300
Call trace:
dump_backtrace+0x0/0x1e4
show_stack+0x20/0x2c
dump_stack+0xd8/0x140
__schedule_bug+0x68/0x80
__schedule+0x728/0x840
schedule+0x50/0xe0
schedule_preempt_disabled+0x18/0x24
__mutex_lock.constprop.0+0x594/0x5dc
__mutex_lock_slowpath+0x1c/0x30
mutex_lock+0x50/0x60
sec_request_init+0x8c/0x1a0 [hisi_sec2]
sec_process+0x28/0x1ac [hisi_sec2]
sec_skcipher_crypto+0xf4/0x1d4 [hisi_sec2]
sec_skcipher_encrypt+0x1c/0x30 [hisi_sec2]
crypto_skcipher_encrypt+0x2c/0x40
crypto_authenc_encrypt+0xc8/0xfc [authenc]
crypto_aead_encrypt+0x2c/0x40
echainiv_encrypt+0x144/0x1a0 [echainiv]
crypto_aead_encrypt+0x2c/0x40
esp_output_tail+0x348/0x5c0 [esp4]
esp_output+0x120/0x19c [esp4]
xfrm_output_one+0x25c/0x4d4
xfrm_output_resume+0x6c/0x1fc
xfrm_output+0xac/0x3c0
xfrm4_output+0x64/0x130
ip_build_and_send_pkt+0x158/0x20c
tcp_v4_send_synack+0xdc/0x1f0
tcp_conn_request+0x7d0/0x994
tcp_v4_conn_request+0x58/0x6c
tcp_v6_conn_request+0xf0/0x100
tcp_rcv_state_process+0x1cc/0xd60
tcp_v4_do_rcv+0x10c/0x250
tcp_v4_rcv+0xfc4/0x10a4
ip_protocol_deliver_rcu+0xf4/0x200
ip_local_deliver_finish+0x58/0x70
ip_local_deliver+0x68/0x120
ip_sublist_rcv_finish+0x70/0x94
ip_list_rcv_finish.constprop.0+0x17c/0x1d0
ip_sublist_rcv+0x40/0xb0
ip_list_rcv+0x140/0x1dc
__netif_receive_skb_list_core+0x154/0x28c
__netif_receive_skb_list+0x120/0x1a0
netif_receive_skb_list_internal+0xe4/0x1f0
napi_complete_done+0x70/0x1f0
gro_cell_poll+0x9c/0xb0
napi_poll+0xcc/0x264
net_rx_action+0xd4/0x21c
__do_softirq+0x130/0x358
irq_exit+0x11c/0x13c
__handle_domain_irq+0x88/0xf0
gic_handle_irq+0x78/0x2c0
el1_irq+0xb8/0x140
arch_cpu_idle+0x18/0x40
default_idle_call+0x5c/0x1c0
cpuidle_idle_call+0x174/0x1b0
do_idle+0xc8/0x160
cpu_startup_entry+0x30/0x11c
secondary_start_kernel+0x158/0x1e4
softirq: huh, entered softirq 3 NET_RX 0000000093774ee4 with
preempt_count 00000100, exited with fffffe00?
Fixes: 416d82204df4 ("crypto: hisilicon - add HiSilicon SEC V2 driver")
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Signed-off-by: Herbert Xu <herbert(a)gondor.apana.org.au>
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/crypto/hisilicon/sec2/sec.h | 2 +-
drivers/crypto/hisilicon/sec2/sec_crypto.c | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/crypto/hisilicon/sec2/sec.h b/drivers/crypto/hisilicon/sec2/sec.h
index c2e9b01187a7..a44c8dba3cda 100644
--- a/drivers/crypto/hisilicon/sec2/sec.h
+++ b/drivers/crypto/hisilicon/sec2/sec.h
@@ -119,7 +119,7 @@ struct sec_qp_ctx {
struct idr req_idr;
struct sec_alg_res res[QM_Q_DEPTH];
struct sec_ctx *ctx;
- struct mutex req_lock;
+ spinlock_t req_lock;
struct list_head backlog;
struct hisi_acc_sgl_pool *c_in_pool;
struct hisi_acc_sgl_pool *c_out_pool;
diff --git a/drivers/crypto/hisilicon/sec2/sec_crypto.c b/drivers/crypto/hisilicon/sec2/sec_crypto.c
index 6eebe739893c..71dfa7db6394 100644
--- a/drivers/crypto/hisilicon/sec2/sec_crypto.c
+++ b/drivers/crypto/hisilicon/sec2/sec_crypto.c
@@ -127,11 +127,11 @@ static int sec_alloc_req_id(struct sec_req *req, struct sec_qp_ctx *qp_ctx)
{
int req_id;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
req_id = idr_alloc_cyclic(&qp_ctx->req_idr, NULL,
0, QM_Q_DEPTH, GFP_ATOMIC);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
if (unlikely(req_id < 0)) {
dev_err(req->ctx->dev, "alloc req id fail!\n");
return req_id;
@@ -156,9 +156,9 @@ static void sec_free_req_id(struct sec_req *req)
qp_ctx->req_list[req_id] = NULL;
req->qp_ctx = NULL;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
idr_remove(&qp_ctx->req_idr, req_id);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
}
static u8 pre_parse_finished_bd(struct bd_status *status, void *resp)
@@ -273,7 +273,7 @@ static int sec_bd_send(struct sec_ctx *ctx, struct sec_req *req)
!(req->flag & CRYPTO_TFM_REQ_MAY_BACKLOG))
return -EBUSY;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
ret = hisi_qp_send(qp_ctx->qp, &req->sec_sqe);
if (ctx->fake_req_limit <=
@@ -281,10 +281,10 @@ static int sec_bd_send(struct sec_ctx *ctx, struct sec_req *req)
list_add_tail(&req->backlog_head, &qp_ctx->backlog);
atomic64_inc(&ctx->sec->debug.dfx.send_cnt);
atomic64_inc(&ctx->sec->debug.dfx.send_busy_cnt);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
return -EBUSY;
}
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
if (unlikely(ret == -EBUSY))
return -ENOBUFS;
@@ -487,7 +487,7 @@ static int sec_create_qp_ctx(struct hisi_qm *qm, struct sec_ctx *ctx,
qp->req_cb = sec_req_cb;
- mutex_init(&qp_ctx->req_lock);
+ spin_lock_init(&qp_ctx->req_lock);
idr_init(&qp_ctx->req_idr);
INIT_LIST_HEAD(&qp_ctx->backlog);
@@ -1382,7 +1382,7 @@ static struct sec_req *sec_back_req_clear(struct sec_ctx *ctx,
{
struct sec_req *backlog_req = NULL;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
if (ctx->fake_req_limit >=
atomic_read(&qp_ctx->qp->qp_status.used) &&
!list_empty(&qp_ctx->backlog)) {
@@ -1390,7 +1390,7 @@ static struct sec_req *sec_back_req_clear(struct sec_ctx *ctx,
typeof(*backlog_req), backlog_head);
list_del(&backlog_req->backlog_head);
}
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
return backlog_req;
}
--
2.20.1
1
28

[PATCH openEuler-5.10-LTS 1/5] crypto: hisilicon/sec - don't sleep when in softirq
by Zheng Zengkai 19 Jul '22
by Zheng Zengkai 19 Jul '22
19 Jul '22
From: Zhengchao Shao <shaozhengchao(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc6
commit 02884a4f12de11f54d4ca67a07dd1f111d96fdbd
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GEVR
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git/c…
--------------------------------
When kunpeng920 encryption driver is used to deencrypt and decrypt
packets during the softirq, it is not allowed to use mutex lock. The
kernel will report the following error:
BUG: scheduling while atomic: swapper/57/0/0x00000300
Call trace:
dump_backtrace+0x0/0x1e4
show_stack+0x20/0x2c
dump_stack+0xd8/0x140
__schedule_bug+0x68/0x80
__schedule+0x728/0x840
schedule+0x50/0xe0
schedule_preempt_disabled+0x18/0x24
__mutex_lock.constprop.0+0x594/0x5dc
__mutex_lock_slowpath+0x1c/0x30
mutex_lock+0x50/0x60
sec_request_init+0x8c/0x1a0 [hisi_sec2]
sec_process+0x28/0x1ac [hisi_sec2]
sec_skcipher_crypto+0xf4/0x1d4 [hisi_sec2]
sec_skcipher_encrypt+0x1c/0x30 [hisi_sec2]
crypto_skcipher_encrypt+0x2c/0x40
crypto_authenc_encrypt+0xc8/0xfc [authenc]
crypto_aead_encrypt+0x2c/0x40
echainiv_encrypt+0x144/0x1a0 [echainiv]
crypto_aead_encrypt+0x2c/0x40
esp_output_tail+0x348/0x5c0 [esp4]
esp_output+0x120/0x19c [esp4]
xfrm_output_one+0x25c/0x4d4
xfrm_output_resume+0x6c/0x1fc
xfrm_output+0xac/0x3c0
xfrm4_output+0x64/0x130
ip_build_and_send_pkt+0x158/0x20c
tcp_v4_send_synack+0xdc/0x1f0
tcp_conn_request+0x7d0/0x994
tcp_v4_conn_request+0x58/0x6c
tcp_v6_conn_request+0xf0/0x100
tcp_rcv_state_process+0x1cc/0xd60
tcp_v4_do_rcv+0x10c/0x250
tcp_v4_rcv+0xfc4/0x10a4
ip_protocol_deliver_rcu+0xf4/0x200
ip_local_deliver_finish+0x58/0x70
ip_local_deliver+0x68/0x120
ip_sublist_rcv_finish+0x70/0x94
ip_list_rcv_finish.constprop.0+0x17c/0x1d0
ip_sublist_rcv+0x40/0xb0
ip_list_rcv+0x140/0x1dc
__netif_receive_skb_list_core+0x154/0x28c
__netif_receive_skb_list+0x120/0x1a0
netif_receive_skb_list_internal+0xe4/0x1f0
napi_complete_done+0x70/0x1f0
gro_cell_poll+0x9c/0xb0
napi_poll+0xcc/0x264
net_rx_action+0xd4/0x21c
__do_softirq+0x130/0x358
irq_exit+0x11c/0x13c
__handle_domain_irq+0x88/0xf0
gic_handle_irq+0x78/0x2c0
el1_irq+0xb8/0x140
arch_cpu_idle+0x18/0x40
default_idle_call+0x5c/0x1c0
cpuidle_idle_call+0x174/0x1b0
do_idle+0xc8/0x160
cpu_startup_entry+0x30/0x11c
secondary_start_kernel+0x158/0x1e4
softirq: huh, entered softirq 3 NET_RX 0000000093774ee4 with
preempt_count 00000100, exited with fffffe00?
Fixes: 416d82204df4 ("crypto: hisilicon - add HiSilicon SEC V2 driver")
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Signed-off-by: Herbert Xu <herbert(a)gondor.apana.org.au>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/crypto/hisilicon/sec2/sec.h | 2 +-
drivers/crypto/hisilicon/sec2/sec_crypto.c | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/crypto/hisilicon/sec2/sec.h b/drivers/crypto/hisilicon/sec2/sec.h
index d97cf02b1df7..cff00fd29765 100644
--- a/drivers/crypto/hisilicon/sec2/sec.h
+++ b/drivers/crypto/hisilicon/sec2/sec.h
@@ -119,7 +119,7 @@ struct sec_qp_ctx {
struct idr req_idr;
struct sec_alg_res res[QM_Q_DEPTH];
struct sec_ctx *ctx;
- struct mutex req_lock;
+ spinlock_t req_lock;
struct list_head backlog;
struct hisi_acc_sgl_pool *c_in_pool;
struct hisi_acc_sgl_pool *c_out_pool;
diff --git a/drivers/crypto/hisilicon/sec2/sec_crypto.c b/drivers/crypto/hisilicon/sec2/sec_crypto.c
index 9d0a39f60fb2..b2228a935dcd 100644
--- a/drivers/crypto/hisilicon/sec2/sec_crypto.c
+++ b/drivers/crypto/hisilicon/sec2/sec_crypto.c
@@ -127,11 +127,11 @@ static int sec_alloc_req_id(struct sec_req *req, struct sec_qp_ctx *qp_ctx)
{
int req_id;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
req_id = idr_alloc_cyclic(&qp_ctx->req_idr, NULL,
0, QM_Q_DEPTH, GFP_ATOMIC);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
if (unlikely(req_id < 0)) {
dev_err(req->ctx->dev, "alloc req id fail!\n");
return req_id;
@@ -156,9 +156,9 @@ static void sec_free_req_id(struct sec_req *req)
qp_ctx->req_list[req_id] = NULL;
req->qp_ctx = NULL;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
idr_remove(&qp_ctx->req_idr, req_id);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
}
static u8 pre_parse_finished_bd(struct bd_status *status, void *resp)
@@ -273,7 +273,7 @@ static int sec_bd_send(struct sec_ctx *ctx, struct sec_req *req)
!(req->flag & CRYPTO_TFM_REQ_MAY_BACKLOG))
return -EBUSY;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
ret = hisi_qp_send(qp_ctx->qp, &req->sec_sqe);
if (ctx->fake_req_limit <=
@@ -281,10 +281,10 @@ static int sec_bd_send(struct sec_ctx *ctx, struct sec_req *req)
list_add_tail(&req->backlog_head, &qp_ctx->backlog);
atomic64_inc(&ctx->sec->debug.dfx.send_cnt);
atomic64_inc(&ctx->sec->debug.dfx.send_busy_cnt);
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
return -EBUSY;
}
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
if (unlikely(ret == -EBUSY))
return -ENOBUFS;
@@ -487,7 +487,7 @@ static int sec_create_qp_ctx(struct hisi_qm *qm, struct sec_ctx *ctx,
qp->req_cb = sec_req_cb;
- mutex_init(&qp_ctx->req_lock);
+ spin_lock_init(&qp_ctx->req_lock);
idr_init(&qp_ctx->req_idr);
INIT_LIST_HEAD(&qp_ctx->backlog);
@@ -1382,7 +1382,7 @@ static struct sec_req *sec_back_req_clear(struct sec_ctx *ctx,
{
struct sec_req *backlog_req = NULL;
- mutex_lock(&qp_ctx->req_lock);
+ spin_lock_bh(&qp_ctx->req_lock);
if (ctx->fake_req_limit >=
atomic_read(&qp_ctx->qp->qp_status.used) &&
!list_empty(&qp_ctx->backlog)) {
@@ -1390,7 +1390,7 @@ static struct sec_req *sec_back_req_clear(struct sec_ctx *ctx,
typeof(*backlog_req), backlog_head);
list_del(&backlog_req->backlog_head);
}
- mutex_unlock(&qp_ctx->req_lock);
+ spin_unlock_bh(&qp_ctx->req_lock);
return backlog_req;
}
--
2.20.1
1
4

[PATCH openEuler-5.10 01/46] Driver for Zhaoxin CPU core temperature monitoring
by Zheng Zengkai 19 Jul '22
by Zheng Zengkai 19 Jul '22
19 Jul '22
From: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
zhaoxin inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I52DS7
CVE: NA
--------------------------------------------
Add support for the temperature sensor inside CPU.
Supported are all known variants of the Zhaoxin processors.
v1: Fix some character encoding mistaken.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
---
drivers/hwmon/Kconfig | 9 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/via-cputemp.c | 1 -
drivers/hwmon/zhaoxin-cputemp.c | 292 ++++++++++++++++++++++++++++++++
4 files changed, 302 insertions(+), 1 deletion(-)
create mode 100644 drivers/hwmon/zhaoxin-cputemp.c
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 45a1a5969d01..f2fe56e6f8bd 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1899,6 +1899,15 @@ config SENSORS_VIA_CPUTEMP
sensor inside your CPU. Supported are all known variants of
the VIA C7 and Nano.
+config SENSORS_ZHAOXIN_CPUTEMP
+ tristate "Zhaoxin CPU temperature sensor"
+ depends on X86
+ select HWMON_VID
+ help
+ If you say yes here you get support for the temperature
+ sensor inside your CPU. Supported are all known variants of
+ the Zhaoxin processors.
+
config SENSORS_VIA686A
tristate "VIA686A"
depends on PCI
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index c22a5316bd91..95908c478b94 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -184,6 +184,7 @@ obj-$(CONFIG_SENSORS_TMP421) += tmp421.o
obj-$(CONFIG_SENSORS_TMP513) += tmp513.o
obj-$(CONFIG_SENSORS_VEXPRESS) += vexpress-hwmon.o
obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
+obj-$(CONFIG_SENSORS_ZHAOXIN_CPUTEMP) += zhaoxin-cputemp.o
obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
obj-$(CONFIG_SENSORS_VT1211) += vt1211.o
obj-$(CONFIG_SENSORS_VT8231) += vt8231.o
diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
index e5d18dac8ee7..0a5057dbe51a 100644
--- a/drivers/hwmon/via-cputemp.c
+++ b/drivers/hwmon/via-cputemp.c
@@ -273,7 +273,6 @@ static const struct x86_cpu_id __initconst cputemp_ids[] = {
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_A, NULL),
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_D, NULL),
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_NANO, NULL),
- X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 7, X86_MODEL_ANY, NULL),
{}
};
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
diff --git a/drivers/hwmon/zhaoxin-cputemp.c b/drivers/hwmon/zhaoxin-cputemp.c
new file mode 100644
index 000000000000..39e729590eba
--- /dev/null
+++ b/drivers/hwmon/zhaoxin-cputemp.c
@@ -0,0 +1,292 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * zhaoxin-cputemp.c - Driver for Zhaoxin CPU core temperature monitoring
+ */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-vid.h>
+#include <linux/sysfs.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/list.h>
+#include <linux/platform_device.h>
+#include <linux/cpu.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+#include <asm/cpu_device_id.h>
+
+#define DRVNAME "zhaoxin_cputemp"
+
+enum { SHOW_TEMP, SHOW_LABEL, SHOW_NAME };
+
+/* Functions declaration */
+
+struct zhaoxin_cputemp_data {
+ struct device *hwmon_dev;
+ const char *name;
+ u8 vrm;
+ u32 id;
+ u32 msr_temp;
+ u32 msr_vid;
+};
+
+/* Sysfs stuff */
+
+static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
+ char *buf)
+{
+ int ret;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+
+ if (attr->index == SHOW_NAME)
+ ret = sprintf(buf, "%s\n", data->name);
+ else /* show label */
+ ret = sprintf(buf, "Core %d\n", data->id);
+ return ret;
+}
+
+static ssize_t temp_show(struct device *dev, struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%lu\n", ((unsigned long)eax & 0xffffff) * 1000);
+}
+
+static ssize_t cpu0_vid_show(struct device *dev, struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_vid, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%d\n", vid_from_reg(~edx & 0x7f, data->vrm));
+}
+
+static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, SHOW_TEMP);
+static SENSOR_DEVICE_ATTR_RO(temp1_label, name, SHOW_LABEL);
+static SENSOR_DEVICE_ATTR_RO(name, name, SHOW_NAME);
+
+static struct attribute *zhaoxin_cputemp_attributes[] = {
+ &sensor_dev_attr_name.dev_attr.attr,
+ &sensor_dev_attr_temp1_label.dev_attr.attr,
+ &sensor_dev_attr_temp1_input.dev_attr.attr,
+ NULL
+};
+
+static const struct attribute_group zhaoxin_cputemp_group = {
+ .attrs = zhaoxin_cputemp_attributes,
+};
+
+/* Optional attributes */
+static DEVICE_ATTR_RO(cpu0_vid);
+
+static int zhaoxin_cputemp_probe(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data;
+ int err;
+ u32 eax, edx;
+
+ data = devm_kzalloc(&pdev->dev, sizeof(struct zhaoxin_cputemp_data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
+ data->id = pdev->id;
+ data->name = "zhaoxin_cputemp";
+ data->msr_temp = 0x1423;
+
+ /* test if we can access the TEMPERATURE MSR */
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err) {
+ dev_err(&pdev->dev, "Unable to access TEMPERATURE MSR, giving up\n");
+ return err;
+ }
+
+ platform_set_drvdata(pdev, data);
+
+ err = sysfs_create_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ if (err)
+ return err;
+
+ if (data->msr_vid)
+ data->vrm = vid_which_vrm();
+
+ if (data->vrm) {
+ err = device_create_file(&pdev->dev, &dev_attr_cpu0_vid);
+ if (err)
+ goto exit_remove;
+ }
+
+ data->hwmon_dev = hwmon_device_register(&pdev->dev);
+ if (IS_ERR(data->hwmon_dev)) {
+ err = PTR_ERR(data->hwmon_dev);
+ dev_err(&pdev->dev, "Class registration failed (%d)\n", err);
+ goto exit_remove;
+ }
+
+ return 0;
+
+exit_remove:
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return err;
+}
+
+static int zhaoxin_cputemp_remove(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data = platform_get_drvdata(pdev);
+
+ hwmon_device_unregister(data->hwmon_dev);
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return 0;
+}
+
+static struct platform_driver zhaoxin_cputemp_driver = {
+ .driver = {
+ .name = DRVNAME,
+ },
+ .probe = zhaoxin_cputemp_probe,
+ .remove = zhaoxin_cputemp_remove,
+};
+
+struct pdev_entry {
+ struct list_head list;
+ struct platform_device *pdev;
+ unsigned int cpu;
+};
+
+static LIST_HEAD(pdev_list);
+static DEFINE_MUTEX(pdev_list_mutex);
+
+static int zhaoxin_cputemp_online(unsigned int cpu)
+{
+ int err;
+ struct platform_device *pdev;
+ struct pdev_entry *pdev_entry;
+
+ pdev = platform_device_alloc(DRVNAME, cpu);
+ if (!pdev) {
+ err = -ENOMEM;
+ pr_err("Device allocation failed\n");
+ goto exit;
+ }
+
+ pdev_entry = kzalloc(sizeof(struct pdev_entry), GFP_KERNEL);
+ if (!pdev_entry) {
+ err = -ENOMEM;
+ goto exit_device_put;
+ }
+
+ err = platform_device_add(pdev);
+ if (err) {
+ pr_err("Device addition failed (%d)\n", err);
+ goto exit_device_free;
+ }
+
+ pdev_entry->pdev = pdev;
+ pdev_entry->cpu = cpu;
+ mutex_lock(&pdev_list_mutex);
+ list_add_tail(&pdev_entry->list, &pdev_list);
+ mutex_unlock(&pdev_list_mutex);
+
+ return 0;
+
+exit_device_free:
+ kfree(pdev_entry);
+exit_device_put:
+ platform_device_put(pdev);
+exit:
+ return err;
+}
+
+static int zhaoxin_cputemp_down_prep(unsigned int cpu)
+{
+ struct pdev_entry *p;
+
+ mutex_lock(&pdev_list_mutex);
+ list_for_each_entry(p, &pdev_list, list) {
+ if (p->cpu == cpu) {
+ platform_device_unregister(p->pdev);
+ list_del(&p->list);
+ mutex_unlock(&pdev_list_mutex);
+ kfree(p);
+ return 0;
+ }
+ }
+ mutex_unlock(&pdev_list_mutex);
+ return 0;
+}
+
+static const struct x86_cpu_id __initconst cputemp_ids[] = {
+ X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 7, X86_MODEL_ANY, NULL),
+ X86_MATCH_VENDOR_FAM_MODEL(ZHAOXIN, 7, X86_MODEL_ANY, NULL),
+ {}
+};
+MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
+
+static enum cpuhp_state zhaoxin_temp_online;
+
+static int __init zhaoxin_cputemp_init(void)
+{
+ int err;
+
+ if (!x86_match_cpu(cputemp_ids))
+ return -ENODEV;
+
+ err = platform_driver_register(&zhaoxin_cputemp_driver);
+ if (err)
+ goto exit;
+
+ err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "hwmon/zhaoxin:online",
+ zhaoxin_cputemp_online, zhaoxin_cputemp_down_prep);
+ if (err < 0)
+ goto exit_driver_unreg;
+ zhaoxin_temp_online = err;
+
+#ifndef CONFIG_HOTPLUG_CPU
+ if (list_empty(&pdev_list)) {
+ err = -ENODEV;
+ goto exit_hp_unreg;
+ }
+#endif
+ return 0;
+
+#ifndef CONFIG_HOTPLUG_CPU
+exit_hp_unreg:
+ cpuhp_remove_state_nocalls(zhaoxin_temp_online);
+#endif
+exit_driver_unreg:
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+exit:
+ return err;
+}
+
+static void __exit zhaoxin_cputemp_exit(void)
+{
+ cpuhp_remove_state(zhaoxin_temp_online);
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+}
+
+MODULE_DESCRIPTION("Zhaoxin CPU temperature monitor");
+MODULE_LICENSE("GPL");
+
+module_init(zhaoxin_cputemp_init)
+module_exit(zhaoxin_cputemp_exit)
--
2.20.1
1
45

[PATCH openEuler-5.10-LTS 01/10] Driver for Zhaoxin CPU core temperature monitoring
by Zheng Zengkai 19 Jul '22
by Zheng Zengkai 19 Jul '22
19 Jul '22
From: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
zhaoxin inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I52DS7
CVE: NA
--------------------------------------------
Add support for the temperature sensor inside CPU.
Supported are all known variants of the Zhaoxin processors.
v1: Fix some character encoding mistaken.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
---
drivers/hwmon/Kconfig | 9 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/via-cputemp.c | 1 -
drivers/hwmon/zhaoxin-cputemp.c | 292 ++++++++++++++++++++++++++++++++
4 files changed, 302 insertions(+), 1 deletion(-)
create mode 100644 drivers/hwmon/zhaoxin-cputemp.c
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 45a1a5969d01..f2fe56e6f8bd 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1899,6 +1899,15 @@ config SENSORS_VIA_CPUTEMP
sensor inside your CPU. Supported are all known variants of
the VIA C7 and Nano.
+config SENSORS_ZHAOXIN_CPUTEMP
+ tristate "Zhaoxin CPU temperature sensor"
+ depends on X86
+ select HWMON_VID
+ help
+ If you say yes here you get support for the temperature
+ sensor inside your CPU. Supported are all known variants of
+ the Zhaoxin processors.
+
config SENSORS_VIA686A
tristate "VIA686A"
depends on PCI
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index c22a5316bd91..95908c478b94 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -184,6 +184,7 @@ obj-$(CONFIG_SENSORS_TMP421) += tmp421.o
obj-$(CONFIG_SENSORS_TMP513) += tmp513.o
obj-$(CONFIG_SENSORS_VEXPRESS) += vexpress-hwmon.o
obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
+obj-$(CONFIG_SENSORS_ZHAOXIN_CPUTEMP) += zhaoxin-cputemp.o
obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
obj-$(CONFIG_SENSORS_VT1211) += vt1211.o
obj-$(CONFIG_SENSORS_VT8231) += vt8231.o
diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
index e5d18dac8ee7..0a5057dbe51a 100644
--- a/drivers/hwmon/via-cputemp.c
+++ b/drivers/hwmon/via-cputemp.c
@@ -273,7 +273,6 @@ static const struct x86_cpu_id __initconst cputemp_ids[] = {
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_A, NULL),
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_C7_D, NULL),
X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 6, X86_CENTAUR_FAM6_NANO, NULL),
- X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 7, X86_MODEL_ANY, NULL),
{}
};
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
diff --git a/drivers/hwmon/zhaoxin-cputemp.c b/drivers/hwmon/zhaoxin-cputemp.c
new file mode 100644
index 000000000000..39e729590eba
--- /dev/null
+++ b/drivers/hwmon/zhaoxin-cputemp.c
@@ -0,0 +1,292 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * zhaoxin-cputemp.c - Driver for Zhaoxin CPU core temperature monitoring
+ */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-vid.h>
+#include <linux/sysfs.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/list.h>
+#include <linux/platform_device.h>
+#include <linux/cpu.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+#include <asm/cpu_device_id.h>
+
+#define DRVNAME "zhaoxin_cputemp"
+
+enum { SHOW_TEMP, SHOW_LABEL, SHOW_NAME };
+
+/* Functions declaration */
+
+struct zhaoxin_cputemp_data {
+ struct device *hwmon_dev;
+ const char *name;
+ u8 vrm;
+ u32 id;
+ u32 msr_temp;
+ u32 msr_vid;
+};
+
+/* Sysfs stuff */
+
+static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
+ char *buf)
+{
+ int ret;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+
+ if (attr->index == SHOW_NAME)
+ ret = sprintf(buf, "%s\n", data->name);
+ else /* show label */
+ ret = sprintf(buf, "Core %d\n", data->id);
+ return ret;
+}
+
+static ssize_t temp_show(struct device *dev, struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%lu\n", ((unsigned long)eax & 0xffffff) * 1000);
+}
+
+static ssize_t cpu0_vid_show(struct device *dev, struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_vid, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%d\n", vid_from_reg(~edx & 0x7f, data->vrm));
+}
+
+static SENSOR_DEVICE_ATTR_RO(temp1_input, temp, SHOW_TEMP);
+static SENSOR_DEVICE_ATTR_RO(temp1_label, name, SHOW_LABEL);
+static SENSOR_DEVICE_ATTR_RO(name, name, SHOW_NAME);
+
+static struct attribute *zhaoxin_cputemp_attributes[] = {
+ &sensor_dev_attr_name.dev_attr.attr,
+ &sensor_dev_attr_temp1_label.dev_attr.attr,
+ &sensor_dev_attr_temp1_input.dev_attr.attr,
+ NULL
+};
+
+static const struct attribute_group zhaoxin_cputemp_group = {
+ .attrs = zhaoxin_cputemp_attributes,
+};
+
+/* Optional attributes */
+static DEVICE_ATTR_RO(cpu0_vid);
+
+static int zhaoxin_cputemp_probe(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data;
+ int err;
+ u32 eax, edx;
+
+ data = devm_kzalloc(&pdev->dev, sizeof(struct zhaoxin_cputemp_data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
+ data->id = pdev->id;
+ data->name = "zhaoxin_cputemp";
+ data->msr_temp = 0x1423;
+
+ /* test if we can access the TEMPERATURE MSR */
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err) {
+ dev_err(&pdev->dev, "Unable to access TEMPERATURE MSR, giving up\n");
+ return err;
+ }
+
+ platform_set_drvdata(pdev, data);
+
+ err = sysfs_create_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ if (err)
+ return err;
+
+ if (data->msr_vid)
+ data->vrm = vid_which_vrm();
+
+ if (data->vrm) {
+ err = device_create_file(&pdev->dev, &dev_attr_cpu0_vid);
+ if (err)
+ goto exit_remove;
+ }
+
+ data->hwmon_dev = hwmon_device_register(&pdev->dev);
+ if (IS_ERR(data->hwmon_dev)) {
+ err = PTR_ERR(data->hwmon_dev);
+ dev_err(&pdev->dev, "Class registration failed (%d)\n", err);
+ goto exit_remove;
+ }
+
+ return 0;
+
+exit_remove:
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return err;
+}
+
+static int zhaoxin_cputemp_remove(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data = platform_get_drvdata(pdev);
+
+ hwmon_device_unregister(data->hwmon_dev);
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return 0;
+}
+
+static struct platform_driver zhaoxin_cputemp_driver = {
+ .driver = {
+ .name = DRVNAME,
+ },
+ .probe = zhaoxin_cputemp_probe,
+ .remove = zhaoxin_cputemp_remove,
+};
+
+struct pdev_entry {
+ struct list_head list;
+ struct platform_device *pdev;
+ unsigned int cpu;
+};
+
+static LIST_HEAD(pdev_list);
+static DEFINE_MUTEX(pdev_list_mutex);
+
+static int zhaoxin_cputemp_online(unsigned int cpu)
+{
+ int err;
+ struct platform_device *pdev;
+ struct pdev_entry *pdev_entry;
+
+ pdev = platform_device_alloc(DRVNAME, cpu);
+ if (!pdev) {
+ err = -ENOMEM;
+ pr_err("Device allocation failed\n");
+ goto exit;
+ }
+
+ pdev_entry = kzalloc(sizeof(struct pdev_entry), GFP_KERNEL);
+ if (!pdev_entry) {
+ err = -ENOMEM;
+ goto exit_device_put;
+ }
+
+ err = platform_device_add(pdev);
+ if (err) {
+ pr_err("Device addition failed (%d)\n", err);
+ goto exit_device_free;
+ }
+
+ pdev_entry->pdev = pdev;
+ pdev_entry->cpu = cpu;
+ mutex_lock(&pdev_list_mutex);
+ list_add_tail(&pdev_entry->list, &pdev_list);
+ mutex_unlock(&pdev_list_mutex);
+
+ return 0;
+
+exit_device_free:
+ kfree(pdev_entry);
+exit_device_put:
+ platform_device_put(pdev);
+exit:
+ return err;
+}
+
+static int zhaoxin_cputemp_down_prep(unsigned int cpu)
+{
+ struct pdev_entry *p;
+
+ mutex_lock(&pdev_list_mutex);
+ list_for_each_entry(p, &pdev_list, list) {
+ if (p->cpu == cpu) {
+ platform_device_unregister(p->pdev);
+ list_del(&p->list);
+ mutex_unlock(&pdev_list_mutex);
+ kfree(p);
+ return 0;
+ }
+ }
+ mutex_unlock(&pdev_list_mutex);
+ return 0;
+}
+
+static const struct x86_cpu_id __initconst cputemp_ids[] = {
+ X86_MATCH_VENDOR_FAM_MODEL(CENTAUR, 7, X86_MODEL_ANY, NULL),
+ X86_MATCH_VENDOR_FAM_MODEL(ZHAOXIN, 7, X86_MODEL_ANY, NULL),
+ {}
+};
+MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
+
+static enum cpuhp_state zhaoxin_temp_online;
+
+static int __init zhaoxin_cputemp_init(void)
+{
+ int err;
+
+ if (!x86_match_cpu(cputemp_ids))
+ return -ENODEV;
+
+ err = platform_driver_register(&zhaoxin_cputemp_driver);
+ if (err)
+ goto exit;
+
+ err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "hwmon/zhaoxin:online",
+ zhaoxin_cputemp_online, zhaoxin_cputemp_down_prep);
+ if (err < 0)
+ goto exit_driver_unreg;
+ zhaoxin_temp_online = err;
+
+#ifndef CONFIG_HOTPLUG_CPU
+ if (list_empty(&pdev_list)) {
+ err = -ENODEV;
+ goto exit_hp_unreg;
+ }
+#endif
+ return 0;
+
+#ifndef CONFIG_HOTPLUG_CPU
+exit_hp_unreg:
+ cpuhp_remove_state_nocalls(zhaoxin_temp_online);
+#endif
+exit_driver_unreg:
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+exit:
+ return err;
+}
+
+static void __exit zhaoxin_cputemp_exit(void)
+{
+ cpuhp_remove_state(zhaoxin_temp_online);
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+}
+
+MODULE_DESCRIPTION("Zhaoxin CPU temperature monitor");
+MODULE_LICENSE("GPL");
+
+module_init(zhaoxin_cputemp_init)
+module_exit(zhaoxin_cputemp_exit)
--
2.20.1
1
9
Backport 5.10.112 LTS patches from upstream.
git cherry-pick v5.10.111..v5.10.112~1 -s
Complicts:
Already merged(10):
80a4df14643f7 hamradio: defer 6pack kfree after unregister_netdev
cfa98ffc42f16 hamradio: remove needs_free_netdev to avoid UAF
5ea00fc60676 ax25: add refcount in ax25_dev to avoid UAF bugs
5ddae8d06441 ax25: fix reference count leaks of ax25_dev
57cc15f5fd55 ax25: fix UAF bugs of net_device caused by rebinding operation
b20a5ab0f5fb ax25: Fix refcount leaks caused by ax25_cb_del()
a4942c6fea87 ax25: fix UAF bug in ax25_send_control()
145ea8d213e8 ax25: fix NPD bug in ax25_disconnect
f934fa478dd1 ax25: Fix NULL pointer dereferences in ax25 timers
5c62d3bf1410 ax25: Fix UAF bugs in ax25 timers
Rejected(1, KABI changed and hard to fix):
845f44ce3d9f net/sched: flower: fix parsing of ethertype following VLAN header
KABI fixes(2):
scsi: iscsi: fix kabi broken in struct iscsi_cls_conn
scsi: iscsi: fix kabi broken in struct iscsi_transport
Total patches: 104 - 10 - 1 + 2 = 95
Adrian Hunter (1):
perf tools: Fix misleading add event PMU debug message
Ajish Koshy (2):
scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
scsi: pm80xx: Enable upper inbound, outbound queues
Alexey Galakhov (1):
scsi: mvsas: Add PCI ID of RocketRaid 2640
Andy Chiu (1):
net: axienet: setup mdio unconditionally
Anna-Maria Behnsen (1):
timers: Fix warning condition in __run_timers()
Athira Rajeev (1):
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu
set
Aurabindo Pillai (1):
drm/amd: Add USBC connector ID
Benedikt Spranger (1):
net/sched: taprio: Check if socket flags are valid
Borislav Petkov (1):
perf/imx_ddr: Fix undefined behavior due to shift overflowing the
constant
Calvin Johnson (1):
net: mdio: Alphabetically sort header inclusion
Chandrakanth patil (1):
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan
Chao Gao (1):
dma-direct: avoid redundant memory sync for swiotlb
Charlene Liu (1):
drm/amd/display: fix audio format not updated after edid updated
Chiawen Huang (1):
drm/amd/display: FEC check in timing validation
Christian Lamparter (1):
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
Chuck Lever (1):
SUNRPC: Fix the svc_deferred_event trace class
Cristian Marussi (1):
firmware: arm_scmi: Fix sorting of retrieved clock rates
Darrick J. Wong (1):
btrfs: fix fallocate to use file_modified to update permissions
consistently
Dinh Nguyen (1):
net: ethernet: stmmac: fix altr_tse_pcs function when using a
fixed-link
Duoming Zhou (1):
drivers: net: slip: fix NPD bug in sl_tx_timeout()
Fabio M. De Francesco (1):
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
Felix Kuehling (1):
drm/amdkfd: Use drm_priv to pass VM from KFD to amdgpu
Guillaume Nault (1):
veth: Ensure eth header is in skb's linear part
Harshit Mogalapalli (1):
cifs: potential buffer overflow in handling symlinks
James Smart (1):
scsi: lpfc: Fix queue failures when recovering from PCI parity error
Jason A. Donenfeld (1):
gcc-plugins: latent_entropy: use /dev/urandom
Jeremy Linton (1):
net: bcmgenet: Revert "Use stronger register read/writes to assure
ordering"
Jia-Ju Bai (1):
btrfs: fix root ref counts in error handling in btrfs_get_root_ref
Joey Gouly (1):
arm64: alternatives: mark patch_alternative() as `noinstr`
Johan Hovold (1):
memory: renesas-rpc-if: fix platform-device leak in error path
Johannes Berg (1):
nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size
Jonathan Bakker (1):
regulator: wm8994: Add an off-on delay for WM8994 variant
Josef Bacik (1):
btrfs: do not warn for free space inode in cow_file_range
Juergen Gross (1):
mm, page_alloc: fix build_zonerefs_node()
Karsten Graul (1):
net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
Khazhismel Kumykov (1):
dm mpath: only use ktime_get_ns() in historical selector
Kyle Copperfield (1):
media: rockchip/rga: do proper error checking in probe
Leo (Hanghong) Ma (1):
drm/amd/display: Update VTEM Infopacket definition
Leo Ruan (1):
gpu: ipu-v3: Fix dev_dbg frequency output
Li Nan (1):
scsi: iscsi: fix kabi broken in struct iscsi_transport
Lin Ma (1):
nfc: nci: add flush_workqueue to prevent uaf
Linus Torvalds (1):
gpiolib: acpi: use correct format characters
Marcelo Ricardo Leitner (1):
net/sched: fix initialization order when updating chain 0 head
Marcin Kozlowski (1):
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup
Mario Limonciello (2):
cpuidle: PSCI: Move the `has_lpi` check to the beginning of the
function
ACPI: processor idle: Check for architectural support for LPI
Martin Leung (1):
drm/amd/display: Revert FEC check in validation
Martin Povišer (1):
i2c: pasemi: Wait for write xfers to finish
Melissa Wen (1):
drm/amd/display: don't ignore alpha property on pre-multiplied mode
Miaoqian Lin (1):
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
Michael Kelley (1):
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
Michael Walle (1):
net: dsa: felix: suppress -EPROBE_DEFER errors
Mike Christie (10):
scsi: iscsi: Stop queueing during ep_disconnect
scsi: iscsi: Force immediate failure during shutdown
scsi: iscsi: Use system_unbound_wq for destroy_work
scsi: iscsi: Rel ref after iscsi_lookup_endpoint()
scsi: iscsi: Fix in-kernel conn failure handling
scsi: iscsi: Move iscsi_ep_disconnect()
scsi: iscsi: Fix offload conn cleanup when iscsid restarts
scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
scsi: iscsi: Fix endpoint reuse regression
scsi: iscsi: Fix unbound endpoint error handling
Mikulas Patocka (1):
dm integrity: fix memory corruption when tag_size is less than digest
size
Minchan Kim (1):
mm: fix unexpected zeroed page mapping with zram swap
Nadav Amit (1):
smp: Fix offline cpu check in flush_smp_call_function_queue()
Naohiro Aota (1):
btrfs: mark resumed async balance as writing
Nathan Chancellor (2):
btrfs: remove unused variable in
btrfs_{start,write}_dirty_block_groups()
ARM: davinci: da850-evm: Avoid NULL pointer dereference
Nicolas Dichtel (1):
ipv6: fix panic when forwarding a pkt with no in6 dev
Patrick Wang (1):
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
Paul Gortmaker (1):
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
Petr Malat (1):
sctp: Initialize daddr on peeled off socket
QintaoShen (1):
drm/amdkfd: Check for potential null return of kmalloc_array()
Rameshkumar Sundaram (1):
cfg80211: hold bss_lock while updating nontrans_list
Randy Dunlap (1):
net: micrel: fix KS8851_MLL Kconfig
Rei Yamamoto (1):
genirq/affinity: Consider that CPUs on nodes can be unbalanced
Rob Clark (2):
drm/msm: Add missing put_task_struct() in debugfs path
drm/msm: Fix range size vs end confusion
Roman Li (1):
drm/amd/display: Fix allocate_mst_payload assert on resume
Sean Christopherson (1):
KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded
Stephen Boyd (1):
drm/msm/dsi: Use connector directly in
msm_dsi_manager_connector_init()
Steve Capper (1):
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry
Tao Jin (1):
ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers
Tianci Yin (1):
drm/amdgpu/vcn: improve vcn dpg stop procedure
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo PD50PNT
Toke Høiland-Jørgensen (2):
ath9k: Properly clear TX status area before reporting to mac80211
ath9k: Fix usage of driver-private space in tx_info
Tomasz Moń (1):
drm/amdgpu: Enable gfxoff quirk on MacBook Pro
Tushar Patel (1):
drm/amdkfd: Fix Incorrect VMIDs passed to HWS
Tyrel Datwyler (1):
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
Vadim Pasternak (1):
mlxsw: i2c: Fix initialization error flow
Xiaoguang Wang (1):
scsi: target: tcmu: Fix possible page UAF
Xiaomeng Tong (1):
myri10ge: fix an incorrect free for skb in myri10ge_sw_tso
Zhang Wensheng (1):
scsi: iscsi: fix kabi broken in struct iscsi_cls_conn
arch/arm/mach-davinci/board-da850-evm.c | 4 +-
arch/arm64/kernel/alternative.c | 6 +-
arch/arm64/kernel/cpuidle.c | 6 +-
arch/x86/include/asm/kvm_host.h | 5 +-
arch/x86/kvm/mmu/mmu.c | 20 +-
arch/x86/kvm/x86.c | 20 +-
drivers/acpi/processor_idle.c | 15 +-
drivers/ata/libata-core.c | 3 +
drivers/firmware/arm_scmi/clock.c | 3 +-
drivers/gpio/gpiolib-acpi.c | 4 +-
drivers/gpu/drm/amd/amdgpu/ObjectID.h | 1 +
.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 +
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 3 +
drivers/gpu/drm/amd/amdkfd/kfd_device.c | 11 +-
drivers/gpu/drm/amd/amdkfd/kfd_events.c | 2 +
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-
.../gpu/drm/amd/display/dc/core/dc_resource.c | 4 +-
.../amd/display/dc/dcn10/dcn10_hw_sequencer.c | 14 +-
.../drm/amd/display/dc/dcn20/dcn20_hwseq.c | 14 +-
.../display/modules/info_packet/info_packet.c | 5 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 +-
drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +-
drivers/gpu/drm/msm/msm_gem.c | 1 +
drivers/gpu/ipu-v3/ipu-di.c | 5 +-
drivers/hv/ring_buffer.c | 11 +-
drivers/i2c/busses/i2c-pasemi.c | 6 +
drivers/infiniband/ulp/iser/iscsi_iser.c | 9 +-
drivers/md/dm-historical-service-time.c | 10 +-
drivers/md/dm-integrity.c | 7 +-
drivers/media/platform/rockchip/rga/rga.c | 2 +-
drivers/memory/atmel-ebi.c | 23 +-
drivers/memory/renesas-rpc-if.c | 10 +-
drivers/net/dsa/ocelot/felix_vsc9959.c | 2 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 +-
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 1 +
drivers/net/ethernet/micrel/Kconfig | 1 +
.../net/ethernet/myricom/myri10ge/myri10ge.c | 6 +-
.../ethernet/stmicro/stmmac/altr_tse_pcs.c | 8 -
.../ethernet/stmicro/stmmac/altr_tse_pcs.h | 4 +
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 13 +-
.../net/ethernet/xilinx/xilinx_axienet_main.c | 13 +-
drivers/net/mdio/mdio-bcm-unimac.c | 16 +-
drivers/net/mdio/mdio-bitbang.c | 4 +-
drivers/net/mdio/mdio-cavium.c | 2 +-
drivers/net/mdio/mdio-gpio.c | 10 +-
drivers/net/mdio/mdio-ipq4019.c | 4 +-
drivers/net/mdio/mdio-ipq8064.c | 4 +-
drivers/net/mdio/mdio-mscc-miim.c | 8 +-
drivers/net/mdio/mdio-mux-bcm-iproc.c | 10 +-
drivers/net/mdio/mdio-mux-gpio.c | 8 +-
drivers/net/mdio/mdio-mux-mmioreg.c | 6 +-
drivers/net/mdio/mdio-mux-multiplexer.c | 2 +-
drivers/net/mdio/mdio-mux.c | 6 +-
drivers/net/mdio/mdio-octeon.c | 8 +-
drivers/net/mdio/mdio-thunder.c | 10 +-
drivers/net/mdio/mdio-xgene.c | 6 +-
drivers/net/mdio/of_mdio.c | 10 +-
drivers/net/slip/slip.c | 2 +-
drivers/net/usb/aqc111.c | 9 +-
drivers/net/veth.c | 2 +-
drivers/net/wireless/ath/ath9k/main.c | 2 +-
drivers/net/wireless/ath/ath9k/xmit.c | 33 +-
drivers/perf/fsl_imx8_ddr_perf.c | 2 +-
drivers/regulator/wm8994-regulator.c | 42 +-
drivers/scsi/be2iscsi/be_iscsi.c | 19 +-
drivers/scsi/be2iscsi/be_main.c | 8 +-
drivers/scsi/bnx2i/bnx2i_iscsi.c | 31 +-
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 8 +-
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 8 +-
drivers/scsi/cxgbi/libcxgbi.c | 12 +-
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c | 2 +-
drivers/scsi/libiscsi.c | 70 ++-
drivers/scsi/lpfc/lpfc_init.c | 2 +
drivers/scsi/megaraid/megaraid_sas.h | 3 +
drivers/scsi/megaraid/megaraid_sas_base.c | 7 +
drivers/scsi/mvsas/mv_init.c | 1 +
drivers/scsi/pm8001/pm80xx_hwi.c | 33 +-
drivers/scsi/qedi/qedi_iscsi.c | 32 +-
drivers/scsi/qla4xxx/ql4_os.c | 8 +-
drivers/scsi/scsi_transport_iscsi.c | 587 +++++++++++-------
drivers/target/target_core_user.c | 3 +-
fs/btrfs/block-group.c | 4 -
fs/btrfs/disk-io.c | 5 +-
fs/btrfs/file.c | 13 +-
fs/btrfs/inode.c | 1 -
fs/btrfs/volumes.c | 2 +
fs/cifs/link.c | 3 +
include/asm-generic/tlb.h | 10 +-
include/scsi/iscsi_if.h | 1 +
include/scsi/libiscsi.h | 1 +
include/scsi/scsi_transport_iscsi.h | 39 +-
include/trace/events/sunrpc.h | 7 +-
kernel/dma/direct.h | 3 +-
kernel/irq/affinity.c | 5 +-
kernel/smp.c | 2 +-
kernel/time/tick-sched.c | 2 +-
kernel/time/timer.c | 11 +-
mm/kmemleak.c | 8 +-
mm/page_alloc.c | 2 +-
mm/page_io.c | 54 --
net/ipv6/ip6_output.c | 2 +-
net/nfc/nci/core.c | 4 +
net/sched/cls_api.c | 2 +-
net/sched/sch_taprio.c | 3 +-
net/sctp/socket.c | 2 +-
net/smc/smc_pnet.c | 5 +-
net/wireless/nl80211.c | 3 +-
net/wireless/scan.c | 2 +
scripts/gcc-plugins/latent_entropy_plugin.c | 44 +-
sound/core/pcm_misc.c | 2 +-
sound/pci/hda/patch_realtek.c | 2 +
tools/perf/util/parse-events.c | 5 +-
.../testing/selftests/mqueue/mq_perf_tests.c | 25 +-
115 files changed, 1046 insertions(+), 565 deletions(-)
--
2.20.1
1
95

19 Jul '22
From: Wang Wensheng <wangwensheng4(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DS9S
CVE: NA
--------------------------------------------------
This is not used for THP but the user page table is just like THP. The
user alloc hugepages via a special driver and its vma is not marked with
VM_HUGETLB. This commit allow to share those vma to kernel.
Signed-off-by: Wang Wensheng <wangwensheng4(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/share_pool.h | 1 +
mm/share_pool.c | 44 +++++++++++++++++++++++++++++++++-----
2 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/include/linux/share_pool.h b/include/linux/share_pool.h
index 6f294911c6af..d95084b8f624 100644
--- a/include/linux/share_pool.h
+++ b/include/linux/share_pool.h
@@ -178,6 +178,7 @@ struct sp_walk_data {
unsigned long uva_aligned;
unsigned long page_size;
bool is_hugepage;
+ bool is_page_type_set;
pmd_t *pmd;
};
diff --git a/mm/share_pool.c b/mm/share_pool.c
index 76088952d0a5..60ad48e238c4 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -2994,9 +2994,40 @@ EXPORT_SYMBOL_GPL(mg_sp_make_share_k2u);
static int sp_pmd_entry(pmd_t *pmd, unsigned long addr,
unsigned long next, struct mm_walk *walk)
{
+ struct page *page;
struct sp_walk_data *sp_walk_data = walk->private;
+ /*
+ * There exist a scene in DVPP where the pagetable is huge page but its
+ * vma doesn't record it, something like THP.
+ * So we cannot make out whether it is a hugepage map until we access the
+ * pmd here. If mixed size of pages appear, just return an error.
+ */
+ if (pmd_huge(*pmd)) {
+ if (!sp_walk_data->is_page_type_set) {
+ sp_walk_data->is_page_type_set = true;
+ sp_walk_data->is_hugepage = true;
+ } else if (!sp_walk_data->is_hugepage)
+ return -EFAULT;
+
+ /* To skip pte level walk */
+ walk->action = ACTION_CONTINUE;
+
+ page = pmd_page(*pmd);
+ get_page(page);
+ sp_walk_data->pages[sp_walk_data->page_count++] = page;
+
+ return 0;
+ }
+
+ if (!sp_walk_data->is_page_type_set) {
+ sp_walk_data->is_page_type_set = true;
+ sp_walk_data->is_hugepage = false;
+ } else if (sp_walk_data->is_hugepage)
+ return -EFAULT;
+
sp_walk_data->pmd = pmd;
+
return 0;
}
@@ -3140,6 +3171,8 @@ static int __sp_walk_page_range(unsigned long uva, unsigned long size,
sp_walk.pmd_entry = sp_pmd_entry;
}
+ sp_walk_data->is_page_type_set = false;
+ sp_walk_data->page_count = 0;
sp_walk_data->page_size = page_size;
uva_aligned = ALIGN_DOWN(uva, page_size);
sp_walk_data->uva_aligned = uva_aligned;
@@ -3164,8 +3197,12 @@ static int __sp_walk_page_range(unsigned long uva, unsigned long size,
ret = walk_page_range(mm, uva_aligned, uva_aligned + size_aligned,
&sp_walk, sp_walk_data);
- if (ret)
+ if (ret) {
+ while (sp_walk_data->page_count--)
+ put_page(pages[sp_walk_data->page_count]);
kvfree(pages);
+ sp_walk_data->pages = NULL;
+ }
return ret;
}
@@ -3201,9 +3238,7 @@ void *sp_make_share_u2k(unsigned long uva, unsigned long size, int pid)
int ret = 0;
struct mm_struct *mm = current->mm;
void *p = ERR_PTR(-ESRCH);
- struct sp_walk_data sp_walk_data = {
- .page_count = 0,
- };
+ struct sp_walk_data sp_walk_data;
struct vm_struct *area;
check_interrupt_context();
@@ -3544,7 +3579,6 @@ int sp_walk_page_range(unsigned long uva, unsigned long size,
return -ESRCH;
}
- sp_walk_data->page_count = 0;
down_write(&mm->mmap_lock);
if (likely(!mm->core_state))
ret = __sp_walk_page_range(uva, size, mm, sp_walk_data);
--
2.20.1
1
22
Backport 5.10.112 LTS patches from upstream.
git cherry-pick v5.10.111..v5.10.112~1 -s
Complicts:
Already merged(10):
80a4df14643f7 hamradio: defer 6pack kfree after unregister_netdev
cfa98ffc42f16 hamradio: remove needs_free_netdev to avoid UAF
5ea00fc60676 ax25: add refcount in ax25_dev to avoid UAF bugs
5ddae8d06441 ax25: fix reference count leaks of ax25_dev
57cc15f5fd55 ax25: fix UAF bugs of net_device caused by rebinding operation
b20a5ab0f5fb ax25: Fix refcount leaks caused by ax25_cb_del()
a4942c6fea87 ax25: fix UAF bug in ax25_send_control()
145ea8d213e8 ax25: fix NPD bug in ax25_disconnect
f934fa478dd1 ax25: Fix NULL pointer dereferences in ax25 timers
5c62d3bf1410 ax25: Fix UAF bugs in ax25 timers
Total patches: 104 - 10 = 94
Adrian Hunter (1):
perf tools: Fix misleading add event PMU debug message
Ajish Koshy (2):
scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
scsi: pm80xx: Enable upper inbound, outbound queues
Alexey Galakhov (1):
scsi: mvsas: Add PCI ID of RocketRaid 2640
Andy Chiu (1):
net: axienet: setup mdio unconditionally
Anna-Maria Behnsen (1):
timers: Fix warning condition in __run_timers()
Athira Rajeev (1):
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu
set
Aurabindo Pillai (1):
drm/amd: Add USBC connector ID
Benedikt Spranger (1):
net/sched: taprio: Check if socket flags are valid
Borislav Petkov (1):
perf/imx_ddr: Fix undefined behavior due to shift overflowing the
constant
Calvin Johnson (1):
net: mdio: Alphabetically sort header inclusion
Chandrakanth patil (1):
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan
Chao Gao (1):
dma-direct: avoid redundant memory sync for swiotlb
Charlene Liu (1):
drm/amd/display: fix audio format not updated after edid updated
Chiawen Huang (1):
drm/amd/display: FEC check in timing validation
Christian Lamparter (1):
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
Chuck Lever (1):
SUNRPC: Fix the svc_deferred_event trace class
Cristian Marussi (1):
firmware: arm_scmi: Fix sorting of retrieved clock rates
Darrick J. Wong (1):
btrfs: fix fallocate to use file_modified to update permissions
consistently
Dinh Nguyen (1):
net: ethernet: stmmac: fix altr_tse_pcs function when using a
fixed-link
Duoming Zhou (1):
drivers: net: slip: fix NPD bug in sl_tx_timeout()
Fabio M. De Francesco (1):
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
Felix Kuehling (1):
drm/amdkfd: Use drm_priv to pass VM from KFD to amdgpu
Guillaume Nault (1):
veth: Ensure eth header is in skb's linear part
Harshit Mogalapalli (1):
cifs: potential buffer overflow in handling symlinks
James Smart (1):
scsi: lpfc: Fix queue failures when recovering from PCI parity error
Jason A. Donenfeld (1):
gcc-plugins: latent_entropy: use /dev/urandom
Jeremy Linton (1):
net: bcmgenet: Revert "Use stronger register read/writes to assure
ordering"
Jia-Ju Bai (1):
btrfs: fix root ref counts in error handling in btrfs_get_root_ref
Joey Gouly (1):
arm64: alternatives: mark patch_alternative() as `noinstr`
Johan Hovold (1):
memory: renesas-rpc-if: fix platform-device leak in error path
Johannes Berg (1):
nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size
Jonathan Bakker (1):
regulator: wm8994: Add an off-on delay for WM8994 variant
Josef Bacik (1):
btrfs: do not warn for free space inode in cow_file_range
Juergen Gross (1):
mm, page_alloc: fix build_zonerefs_node()
Karsten Graul (1):
net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
Khazhismel Kumykov (1):
dm mpath: only use ktime_get_ns() in historical selector
Kyle Copperfield (1):
media: rockchip/rga: do proper error checking in probe
Leo (Hanghong) Ma (1):
drm/amd/display: Update VTEM Infopacket definition
Leo Ruan (1):
gpu: ipu-v3: Fix dev_dbg frequency output
Lin Ma (1):
nfc: nci: add flush_workqueue to prevent uaf
Linus Torvalds (1):
gpiolib: acpi: use correct format characters
Marcelo Ricardo Leitner (1):
net/sched: fix initialization order when updating chain 0 head
Marcin Kozlowski (1):
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup
Mario Limonciello (2):
cpuidle: PSCI: Move the `has_lpi` check to the beginning of the
function
ACPI: processor idle: Check for architectural support for LPI
Martin Leung (1):
drm/amd/display: Revert FEC check in validation
Martin Povišer (1):
i2c: pasemi: Wait for write xfers to finish
Melissa Wen (1):
drm/amd/display: don't ignore alpha property on pre-multiplied mode
Miaoqian Lin (1):
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
Michael Kelley (1):
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
Michael Walle (1):
net: dsa: felix: suppress -EPROBE_DEFER errors
Mike Christie (10):
scsi: iscsi: Stop queueing during ep_disconnect
scsi: iscsi: Force immediate failure during shutdown
scsi: iscsi: Use system_unbound_wq for destroy_work
scsi: iscsi: Rel ref after iscsi_lookup_endpoint()
scsi: iscsi: Fix in-kernel conn failure handling
scsi: iscsi: Move iscsi_ep_disconnect()
scsi: iscsi: Fix offload conn cleanup when iscsid restarts
scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
scsi: iscsi: Fix endpoint reuse regression
scsi: iscsi: Fix unbound endpoint error handling
Mikulas Patocka (1):
dm integrity: fix memory corruption when tag_size is less than digest
size
Minchan Kim (1):
mm: fix unexpected zeroed page mapping with zram swap
Nadav Amit (1):
smp: Fix offline cpu check in flush_smp_call_function_queue()
Naohiro Aota (1):
btrfs: mark resumed async balance as writing
Nathan Chancellor (2):
btrfs: remove unused variable in
btrfs_{start,write}_dirty_block_groups()
ARM: davinci: da850-evm: Avoid NULL pointer dereference
Nicolas Dichtel (1):
ipv6: fix panic when forwarding a pkt with no in6 dev
Patrick Wang (1):
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
Paul Gortmaker (1):
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
Petr Malat (1):
sctp: Initialize daddr on peeled off socket
QintaoShen (1):
drm/amdkfd: Check for potential null return of kmalloc_array()
Rameshkumar Sundaram (1):
cfg80211: hold bss_lock while updating nontrans_list
Randy Dunlap (1):
net: micrel: fix KS8851_MLL Kconfig
Rei Yamamoto (1):
genirq/affinity: Consider that CPUs on nodes can be unbalanced
Rob Clark (2):
drm/msm: Add missing put_task_struct() in debugfs path
drm/msm: Fix range size vs end confusion
Roman Li (1):
drm/amd/display: Fix allocate_mst_payload assert on resume
Sean Christopherson (1):
KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded
Stephen Boyd (1):
drm/msm/dsi: Use connector directly in
msm_dsi_manager_connector_init()
Steve Capper (1):
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry
Tao Jin (1):
ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers
Tianci Yin (1):
drm/amdgpu/vcn: improve vcn dpg stop procedure
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo PD50PNT
Toke Høiland-Jørgensen (2):
ath9k: Properly clear TX status area before reporting to mac80211
ath9k: Fix usage of driver-private space in tx_info
Tomasz Moń (1):
drm/amdgpu: Enable gfxoff quirk on MacBook Pro
Tushar Patel (1):
drm/amdkfd: Fix Incorrect VMIDs passed to HWS
Tyrel Datwyler (1):
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
Vadim Pasternak (1):
mlxsw: i2c: Fix initialization error flow
Vlad Buslov (1):
net/sched: flower: fix parsing of ethertype following VLAN header
Xiaoguang Wang (1):
scsi: target: tcmu: Fix possible page UAF
Xiaomeng Tong (1):
myri10ge: fix an incorrect free for skb in myri10ge_sw_tso
arch/arm/mach-davinci/board-da850-evm.c | 4 +-
arch/arm64/kernel/alternative.c | 6 +-
arch/arm64/kernel/cpuidle.c | 6 +-
arch/x86/include/asm/kvm_host.h | 5 +-
arch/x86/kvm/mmu/mmu.c | 20 +-
arch/x86/kvm/x86.c | 20 +-
drivers/acpi/processor_idle.c | 15 +-
drivers/ata/libata-core.c | 3 +
drivers/firmware/arm_scmi/clock.c | 3 +-
drivers/gpio/gpiolib-acpi.c | 4 +-
drivers/gpu/drm/amd/amdgpu/ObjectID.h | 1 +
.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 +
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 3 +
drivers/gpu/drm/amd/amdkfd/kfd_device.c | 11 +-
drivers/gpu/drm/amd/amdkfd/kfd_events.c | 2 +
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-
.../gpu/drm/amd/display/dc/core/dc_resource.c | 4 +-
.../amd/display/dc/dcn10/dcn10_hw_sequencer.c | 14 +-
.../drm/amd/display/dc/dcn20/dcn20_hwseq.c | 14 +-
.../display/modules/info_packet/info_packet.c | 5 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 +-
drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +-
drivers/gpu/drm/msm/msm_gem.c | 1 +
drivers/gpu/ipu-v3/ipu-di.c | 5 +-
drivers/hv/ring_buffer.c | 11 +-
drivers/i2c/busses/i2c-pasemi.c | 6 +
drivers/infiniband/ulp/iser/iscsi_iser.c | 2 +
drivers/md/dm-historical-service-time.c | 10 +-
drivers/md/dm-integrity.c | 7 +-
drivers/media/platform/rockchip/rga/rga.c | 2 +-
drivers/memory/atmel-ebi.c | 23 +-
drivers/memory/renesas-rpc-if.c | 10 +-
drivers/net/dsa/ocelot/felix_vsc9959.c | 2 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 +-
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 1 +
drivers/net/ethernet/micrel/Kconfig | 1 +
.../net/ethernet/myricom/myri10ge/myri10ge.c | 6 +-
.../ethernet/stmicro/stmmac/altr_tse_pcs.c | 8 -
.../ethernet/stmicro/stmmac/altr_tse_pcs.h | 4 +
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 13 +-
.../net/ethernet/xilinx/xilinx_axienet_main.c | 13 +-
drivers/net/mdio/mdio-bcm-unimac.c | 16 +-
drivers/net/mdio/mdio-bitbang.c | 4 +-
drivers/net/mdio/mdio-cavium.c | 2 +-
drivers/net/mdio/mdio-gpio.c | 10 +-
drivers/net/mdio/mdio-ipq4019.c | 4 +-
drivers/net/mdio/mdio-ipq8064.c | 4 +-
drivers/net/mdio/mdio-mscc-miim.c | 8 +-
drivers/net/mdio/mdio-mux-bcm-iproc.c | 10 +-
drivers/net/mdio/mdio-mux-gpio.c | 8 +-
drivers/net/mdio/mdio-mux-mmioreg.c | 6 +-
drivers/net/mdio/mdio-mux-multiplexer.c | 2 +-
drivers/net/mdio/mdio-mux.c | 6 +-
drivers/net/mdio/mdio-octeon.c | 8 +-
drivers/net/mdio/mdio-thunder.c | 10 +-
drivers/net/mdio/mdio-xgene.c | 6 +-
drivers/net/mdio/of_mdio.c | 10 +-
drivers/net/slip/slip.c | 2 +-
drivers/net/usb/aqc111.c | 9 +-
drivers/net/veth.c | 2 +-
drivers/net/wireless/ath/ath9k/main.c | 2 +-
drivers/net/wireless/ath/ath9k/xmit.c | 33 +-
drivers/perf/fsl_imx8_ddr_perf.c | 2 +-
drivers/regulator/wm8994-regulator.c | 42 +-
drivers/scsi/be2iscsi/be_iscsi.c | 19 +-
drivers/scsi/be2iscsi/be_main.c | 1 +
drivers/scsi/bnx2i/bnx2i_iscsi.c | 24 +-
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 1 +
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 1 +
drivers/scsi/cxgbi/libcxgbi.c | 12 +-
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c | 2 +-
drivers/scsi/libiscsi.c | 70 ++-
drivers/scsi/lpfc/lpfc_init.c | 2 +
drivers/scsi/megaraid/megaraid_sas.h | 3 +
drivers/scsi/megaraid/megaraid_sas_base.c | 7 +
drivers/scsi/mvsas/mv_init.c | 1 +
drivers/scsi/pm8001/pm80xx_hwi.c | 33 +-
drivers/scsi/qedi/qedi_iscsi.c | 26 +-
drivers/scsi/qla4xxx/ql4_os.c | 2 +
drivers/scsi/scsi_transport_iscsi.c | 541 +++++++++++-------
drivers/target/target_core_user.c | 3 +-
fs/btrfs/block-group.c | 4 -
fs/btrfs/disk-io.c | 5 +-
fs/btrfs/file.c | 13 +-
fs/btrfs/inode.c | 1 -
fs/btrfs/volumes.c | 2 +
fs/cifs/link.c | 3 +
include/asm-generic/tlb.h | 10 +-
include/net/flow_dissector.h | 2 +
include/scsi/libiscsi.h | 1 +
include/scsi/scsi_transport_iscsi.h | 14 +-
include/trace/events/sunrpc.h | 7 +-
kernel/dma/direct.h | 3 +-
kernel/irq/affinity.c | 5 +-
kernel/smp.c | 2 +-
kernel/time/tick-sched.c | 2 +-
kernel/time/timer.c | 11 +-
mm/kmemleak.c | 8 +-
mm/page_alloc.c | 2 +-
mm/page_io.c | 54 --
net/core/flow_dissector.c | 1 +
net/ipv6/ip6_output.c | 2 +-
net/nfc/nci/core.c | 4 +
net/sched/cls_api.c | 2 +-
net/sched/cls_flower.c | 18 +-
net/sched/sch_taprio.c | 3 +-
net/sctp/socket.c | 2 +-
net/smc/smc_pnet.c | 5 +-
net/wireless/nl80211.c | 3 +-
net/wireless/scan.c | 2 +
scripts/gcc-plugins/latent_entropy_plugin.c | 44 +-
sound/core/pcm_misc.c | 2 +-
sound/pci/hda/patch_realtek.c | 2 +
tools/perf/util/parse-events.c | 5 +-
.../testing/selftests/mqueue/mq_perf_tests.c | 25 +-
117 files changed, 959 insertions(+), 554 deletions(-)
--
2.20.1
1
94
Backport 5.10.111 LTS patches from upstream.
Complicts:
Already merged(4):
2dc49f58a29c ubifs: Rectify space amount budget for mkdir/tmpfile operations
c688705a3978 Revert "NFSv4: Handle the special Linux file open access mode"
2827328e646d io_uring: fix race between timeout flush and removal
4665722d36ad cgroup: Use open-time credentials for process migraton perm checks
Context conflict(3):
4820847e8bc2 usb: ehci: add pci device support for Aspeed platforms
8a7ada4b8f5d scsi: hisi_sas: Free irq vectors in order for v3 HW
9de98470db6e arm64: Add part number for Arm Cortex-A78AE
Rejected(1):
2f2f017ea873 dm: requeue IO if mapping table not yet available
Implement changed(-1+1):
d36febbcd537 powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit
Added(1):
ipv6: fix kabi for mc_forwarding in struct ipv6_devconf
Total patches: 170 - 4 - 1 + 1 - 1 + 1 = 166
Adam Wujek (1):
clk: si5341: fix reported clk_rate when output divider is 2
Adrian Hunter (1):
perf tools: Fix perf's libperf_print callback
Aharon Landau (1):
RDMA/mlx5: Don't remove cache MRs when a delay is needed
Alex Deucher (2):
drm/amdkfd: make CRAT table missing message informational only
drm/amdgpu/smu10: fix SoC/fclk units in auto mode
Alexander Lobakin (1):
MIPS: fix fortify panic when copying asm exception handlers
Amjad Ouled-Ameur (1):
phy: amlogic: meson8b-usb2: Use dev_err_probe()
Anatolii Gerasymenko (2):
ice: Set txq_teid to ICE_INVAL_TEID on ring creation
ice: Do not skip not enabled queues in ice_vc_dis_qs_msg
Andre Przywara (1):
irqchip/gic, gic-v3: Prevent GSI to SGI translations
Andrea Parri (Microsoft) (1):
Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb()
Andreas Gruenbacher (2):
gfs2: Check for active reservation in gfs2_release
gfs2: gfs2_setattr_size error path fix
Andy Gospodarek (1):
bnxt_en: reserve space inside receive page for skb_shared_info
Anisse Astier (1):
drm: Add orientation quirk for GPD Win Max
Arnaldo Carvalho de Melo (4):
perf build: Don't use -ffat-lto-objects in the python feature test
when building with clang-13
perf python: Fix probing for some clang command line options
tools build: Filter out options and warnings not supported by clang
tools build: Use $(shell ) instead of `` to get embedded libperl's
ccopts
Avraham Stern (1):
cfg80211: don't add non transmitted BSS to 6GHz scanned channels
Bob Peterson (1):
gfs2: Fix gfs2_release for non-writers regression
Chanho Park (1):
arm64: Add part number for Arm Cortex-A78AE
Chen-Yu Tsai (1):
net: stmmac: Fix unset max_speed difference between DT and non-DT
platforms
Christian Lamparter (1):
ata: sata_dwc_460ex: Fix crash due to OOB write
Christophe JAILLET (1):
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()
Dale Zhao (1):
drm/amd/display: Add signal type check when verify stream backends
same
Damien Le Moal (5):
scsi: pm8001: Fix pm80xx_pci_mem_copy() interface
scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
scsi: pm8001: Fix task leak in pm8001_send_abort_all()
scsi: pm8001: Fix tag leaks on error
scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req()
Dan Carpenter (1):
drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()
David Ahern (1):
ipv6: Fix stats accounting in ip6_pkt_drop
Denis Nikitin (1):
perf session: Remap buf if there is no space for event
Dongli Zhang (1):
xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32
Douglas Miller (1):
RDMA/hfi1: Fix use-after-free bug for mm struct
Dust Li (1):
net/smc: correct settings of RMB window update limit
Eric Dumazet (2):
ipv6: make mc_forwarding atomic
rxrpc: fix a race in rxrpc_exit_net()
Ethan Lien (1):
btrfs: fix qgroup reserve overflow the qgroup limit
Evgeny Boger (1):
power: supply: axp20x_battery: properly report current when
discharging
Fangrui Song (1):
arm64: module: remove (NOLOAD) from linker script
Guilherme G. Piccoli (1):
Drivers: hv: vmbus: Fix potential crash on module unload
Guo Ren (1):
arm64: patch_text: Fixup last cpu should be master
Guo Xuenan (1):
lz4: fix LZ4_decompress_safe_partial read out of bound
H. Nikolaus Schaller (1):
usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm
Haimin Zhang (1):
jfs: prevent NULL deref in diFree
Hangyu Hua (2):
mips: ralink: fix a refcount leak in ill_acc_of_setup()
powerpc/secvar: fix refcount leak in format_show()
Hans de Goede (1):
power: supply: axp288-charger: Set Vhold to 4.4V
Harold Huang (1):
tuntap: add sanity checks about msg_controllen in sendmsg
Helge Deller (1):
parisc: Fix CPU affinity for Lasi, WAX and Dino chips
Hou Wenlong (1):
KVM: x86/emulator: Emulate RDPID only if it is enabled in guest
Hou Zhiqiang (1):
PCI: endpoint: Fix alignment fault error in copy tests
Ido Schimmel (1):
ipv4: Invalidate neighbour for broadcast address upon address addition
Ilan Peer (1):
iwlwifi: mvm: Correctly set fragmented EBS
Ilya Maximets (2):
net: openvswitch: don't send internal clone attribute to the
userspace.
net: openvswitch: fix leak of nested actions
Ivan Vecera (1):
ice: Clear default forwarding VSI during VSI release
Jakub Kicinski (2):
net: account alternate interface name memory
net: limit altnames to 64k total
Jakub Sitnicki (1):
bpf: Make dst_port field in struct bpf_sock 16-bit wide
James Clark (1):
perf: arm-spe: Fix perf report --mem-mode
Jamie Bainbridge (1):
qede: confirm skb is allocated before using
Jianglei Nie (1):
scsi: libfc: Fix use after free in fc_exch_abts_resp()
Jiasheng Jiang (2):
rtc: wm8350: Handle error for wm8350_register_irq
drm/imx: imx-ldb: Check for null pointer after calling kmemdup
Jim Mattson (1):
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
Jiri Slaby (1):
serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()
John David Anglin (1):
parisc: Fix patch code locking and flushing
Jordy Zomer (1):
dm ioctl: prevent potential spectre v1 gadget
José Expósito (1):
drm/imx: Fix memory leak in imx_pd_connector_get_modes
Kaiwen Hu (1):
btrfs: prevent subvol with swapfile from being deleted
Kalle Valo (1):
ath11k: mhi: use mhi_sync_power_up()
Kamal Dasu (1):
spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op()
Karol Herbst (1):
drm/nouveau/pmu: Add missing callbacks for Tegra devices
Kees Cook (1):
ubsan: remove CONFIG_UBSAN_OBJECT_SIZE
Kefeng Wang (1):
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit
Krzysztof Kozlowski (1):
MIPS: ingenic: correct unit node address
Lee Jones (1):
drm/amdkfd: Create file descriptor after client is added to
smi_clients list
Li Chen (1):
PCI: endpoint: Fix misused goto label
Lorenzo Bianconi (1):
mt76: dma: initialize skip_unmap in mt76_dma_rx_fill
Lucas Denefle (1):
w1: w1_therm: fixes w1_seq for ds28ea00 sensors
Luiz Augusto von Dentz (2):
Bluetooth: Fix not checking for valid hdev on
bt_dev_{info,warn,err,dbg}
Bluetooth: Fix use after free in hci_send_acl
Lv Yunlong (1):
drbd: Fix five use after free bugs in get_initial_state
Maciej Fijalkowski (1):
ice: synchronize_rcu() when terminating rings
Manivannan Sadhasivam (1):
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
Marc Zyngier (1):
irqchip/gic-v3: Fix GICR_CTLR.RWP polling
Martin Habets (1):
sfc: Do not free an empty page_ring
Mauricio Faria de Oliveira (1):
mm: fix race between MADV_FREE reclaim and blkdev direct IO read
Max Filippov (1):
xtensa: fix DTC warning unit_address_format
Maxim Kiselev (1):
powerpc: dts: t104xrdb: fix phy type for FMAN 4/5
Maxim Mikityanskiy (1):
bpf: Support dual-stack sockets in bpf_tcp_check_syncookie
Maxime Ripard (1):
clk: Enforce that disjoints limits are invalid
Miaohe Lin (1):
mm/mempolicy: fix mpol_new leak in shared_policy_replace
Miaoqian Lin (1):
dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe
Michael Chan (1):
bnxt_en: Eliminate unintended link toggle during FW reset
Michael Walle (2):
net: sfp: add 2500base-X quirk for Lantech SFP module
net: phy: mscc-miim: reject clause 45 register accesses
Minghao Chi (CGEL ZTE) (1):
Bluetooth: use memset avoid memory leaks
Nathan Chancellor (1):
x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy
Neal Liu (1):
usb: ehci: add pci device support for Aspeed platforms
NeilBrown (5):
SUNRPC/call_alloc: async tasks mustn't block waiting for memory
SUNRPC/xprt: async tasks mustn't block waiting for memory
SUNRPC: remove scheduling boost for "SWAPPER" tasks.
NFS: swap IO handling is slightly different for O_DIRECT IO
NFS: swap-out must always use STABLE writes.
Niels Dossche (1):
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race
condition
Nikolay Aleksandrov (1):
net: ipv4: fix route with nexthop object delete warning
Oliver Hartkopp (1):
can: isotp: set default value for N_As to 50 micro seconds
Pali Rohár (2):
PCI: aardvark: Fix support for MSI interrupts
Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning"
Paolo Bonzini (1):
mmmremap.c: avoid pointless invalidate_range_start/end on
mremap(old_size=0)
Pavel Begunkov (1):
io_uring: don't touch scm_fp_list after queueing skb
Pawan Gupta (2):
x86/pm: Save the MSR validity status at context setup
x86/speculation: Restore speculation related MSRs during S3 resume
Peter Xu (1):
mm: don't skip swap entry even if zap_details specified
Qi Liu (1):
scsi: hisi_sas: Free irq vectors in order for v3 HW
Qinghua Jin (1):
minix: fix bug when opening a file with O_DIRECT
Rajneesh Bhardwaj (1):
drm/amdgpu: Fix recursive locking warning
Randy Dunlap (3):
scsi: aha152x: Fix aha152x_setup() __setup handler return value
init/main.c: return 1 from handled __setup() functions
virtio_console: eliminate anonymous module_init & module_exit
Sachin Sant (1):
selftests/cgroup: Fix build on older distros
Sasha Levin (1):
Revert "hv: utils: add PTP_1588_CLOCK to Kconfig to fix build"
Sebastian Andrzej Siewior (1):
tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH.
Shreeya Patel (1):
gpio: Restrict usage of GPIO chip irq members before initialization
Sourabh Jain (1):
powerpc: Set crashkernel offset to mid of RMA region
Stefan Wahren (1):
staging: vchiq_core: handle NULL result of find_service_by_handle
Sven Eckelmann (1):
macvtap: advertise link netns via netlink
Tejun Heo (3):
selftests: cgroup: Make cg_create() use 0755 for permission instead of
0644
selftests: cgroup: Test open-time credential usage for migration
checks
selftests: cgroup: Test open-time cgroup namespace usage for migration
checks
Tony Lindgren (2):
clk: ti: Preserve node in ti_dt_clocks_register()
iommu/omap: Fix regression in probe for NULL pointer dereference
Trond Myklebust (7):
NFSv4: Protect the state recovery thread against direct reclaim
SUNRPC: Fix socket waits for write buffer space
NFS: nfsiod should not block forever in mempool_alloc()
NFS: Avoid writeback threads getting stuck in mempool_alloc()
SUNRPC: Handle ENOMEM in call_transmit_status()
SUNRPC: Handle low memory situations in call_status()
SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
Venkateswara Naralasetty (1):
ath11k: fix kernel panic during unload/load ath11k modules
Vinod Koul (1):
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on
error"
Waiman Long (1):
mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning
Wang Yufen (1):
netlabel: fix out-of-bounds memory accesses
Wayne Chang (2):
usb: gadget: tegra-xudc: Do not program SPARAM
usb: gadget: tegra-xudc: Fix control endpoint's definitions
Wolfram Sang (1):
mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is
complete
Xiaoke Wang (1):
staging: wfx: fix an error handling in wfx_init_common()
Xiaomeng Tong (1):
perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator
Xin Xiong (2):
drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj
NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify()
Xiubo Li (1):
ceph: fix memory leak in ceph_readdir when note_last_dentry returns
error
Yang Guang (3):
ptp: replace snprintf with sysfs_emit
scsi: mvsas: Replace snprintf() with sysfs_emit()
scsi: bfa: Replace snprintf() with sysfs_emit()
Yang Li (1):
mt76: mt7615: Fix assigning negative values to unsigned variable
Yann Gautier (1):
mmc: mmci: stm32: correctly check all elements of sg list
Yonghong Song (1):
libbpf: Fix build issue with llvm-readelf
Zekun Shen (1):
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111
Zheng Zengkai (2):
ipv6: fix kabi for mc_forwarding in struct ipv6_devconf
Revert "powerpc: Fix virt_addr_valid() check"
Zhou Guanghui (1):
iommu/arm-smmu-v3: fix event handling soft lockup
Ziyang Xuan (1):
net/tls: fix slab-out-of-bounds bug in decrypt_internal
arch/arm64/include/asm/cputype.h | 2 +
arch/arm64/include/asm/module.lds.h | 6 +-
arch/arm64/kernel/insn.c | 4 +-
arch/arm64/kernel/proton-pack.c | 1 +
arch/mips/boot/dts/ingenic/jz4780.dtsi | 2 +-
arch/mips/include/asm/setup.h | 2 +-
arch/mips/kernel/traps.c | 22 +--
arch/mips/ralink/ill_acc.c | 1 +
arch/parisc/kernel/patch.c | 25 ++-
arch/powerpc/boot/dts/fsl/t104xrdb.dtsi | 4 +-
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/kernel/rtas.c | 6 +
arch/powerpc/kernel/secvar-sysfs.c | 9 +-
arch/powerpc/kexec/core.c | 15 +-
arch/x86/Kconfig | 5 +
arch/x86/kvm/emulate.c | 4 +-
arch/x86/kvm/kvm_emulate.h | 1 +
arch/x86/kvm/svm/pmu.c | 8 +-
arch/x86/kvm/x86.c | 6 +
arch/x86/power/cpu.c | 21 ++-
arch/x86/xen/smp_hvm.c | 6 +
arch/x86/xen/time.c | 24 ++-
arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi | 8 +-
arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi | 8 +-
arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi | 4 +-
drivers/ata/sata_dwc_460ex.c | 6 +-
drivers/block/drbd/drbd_int.h | 8 +-
drivers/block/drbd/drbd_nl.c | 41 +++--
drivers/block/drbd/drbd_state.c | 18 +-
drivers/block/drbd/drbd_state_change.h | 8 +-
drivers/char/virtio_console.c | 8 +-
drivers/clk/clk-si5341.c | 16 +-
drivers/clk/clk.c | 24 +++
drivers/clk/ti/clk.c | 13 +-
drivers/dma/sh/shdma-base.c | 4 +-
drivers/gpio/gpiolib.c | 19 ++
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 2 +-
drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c | 24 ++-
.../gpu/drm/amd/display/dc/core/dc_resource.c | 3 +
.../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c | 8 +-
.../gpu/drm/drm_panel_orientation_quirks.c | 6 +
drivers/gpu/drm/imx/imx-ldb.c | 2 +
drivers/gpu/drm/imx/parallel-display.c | 4 +-
.../gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c | 1 +
.../gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c | 1 +
.../gpu/drm/nouveau/nvkm/subdev/pmu/priv.h | 1 +
drivers/hv/Kconfig | 1 -
drivers/hv/channel_mgmt.c | 6 +-
drivers/hv/vmbus_drv.c | 9 +-
drivers/infiniband/hw/hfi1/mmu_rb.c | 6 +
drivers/infiniband/hw/mlx5/mr.c | 4 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 +
drivers/iommu/omap-iommu.c | 2 +-
drivers/irqchip/irq-gic-v3.c | 14 +-
drivers/irqchip/irq-gic.c | 6 +
drivers/md/dm-ioctl.c | 2 +
drivers/mmc/host/mmci_stm32_sdmmc.c | 6 +-
drivers/mmc/host/renesas_sdhi_core.c | 4 +-
drivers/mmc/host/sdhci-xenon.c | 10 --
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 3 +-
.../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 +-
.../net/ethernet/freescale/dpaa2/dpaa2-ptp.c | 4 +-
drivers/net/ethernet/intel/ice/ice.h | 2 +-
drivers/net/ethernet/intel/ice/ice_lib.c | 3 +
drivers/net/ethernet/intel/ice/ice_main.c | 4 +-
.../net/ethernet/intel/ice/ice_virtchnl_pf.c | 4 +-
drivers/net/ethernet/intel/ice/ice_xsk.c | 4 +-
drivers/net/ethernet/qlogic/qede/qede_fp.c | 3 +
drivers/net/ethernet/sfc/rx_common.c | 3 +
.../ethernet/stmicro/stmmac/stmmac_platform.c | 3 +-
drivers/net/macvtap.c | 6 +
drivers/net/mdio/mdio-mscc-miim.c | 6 +
drivers/net/phy/sfp-bus.c | 6 +
drivers/net/tap.c | 3 +-
drivers/net/tun.c | 3 +-
drivers/net/wireless/ath/ath11k/ahb.c | 2 +
drivers/net/wireless/ath/ath11k/mhi.c | 2 +-
drivers/net/wireless/ath/ath5k/eeprom.c | 3 +
drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 5 +-
drivers/net/wireless/mediatek/mt76/dma.c | 1 +
.../net/wireless/mediatek/mt76/mt7615/mac.c | 2 +-
drivers/parisc/dino.c | 41 ++++-
drivers/parisc/gsc.c | 31 ++++
drivers/parisc/gsc.h | 1 +
drivers/parisc/lasi.c | 7 +-
drivers/parisc/wax.c | 7 +-
drivers/pci/controller/pci-aardvark.c | 16 +-
drivers/pci/endpoint/functions/pci-epf-test.c | 14 +-
drivers/pci/hotplug/pciehp_hpc.c | 2 +
drivers/perf/qcom_l2_pmu.c | 6 +-
drivers/phy/amlogic/phy-meson8b-usb2.c | 5 +-
drivers/power/supply/axp20x_battery.c | 13 +-
drivers/power/supply/axp288_charger.c | 14 +-
drivers/ptp/ptp_sysfs.c | 4 +-
drivers/rtc/rtc-wm8350.c | 11 +-
drivers/scsi/aha152x.c | 6 +-
drivers/scsi/bfa/bfad_attr.c | 26 +--
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 16 +-
drivers/scsi/libfc/fc_exch.c | 1 +
drivers/scsi/mvsas/mv_init.c | 4 +-
drivers/scsi/pm8001/pm8001_hwi.c | 27 ++-
drivers/scsi/pm8001/pm8001_sas.c | 2 +-
drivers/scsi/pm8001/pm80xx_hwi.c | 17 +-
drivers/scsi/zorro7xx.c | 2 +
drivers/spi/spi-bcm-qspi.c | 4 +-
.../interface/vchiq_arm/vchiq_core.c | 6 +
drivers/staging/wfx/main.c | 7 +-
drivers/tty/serial/samsung_tty.c | 5 +-
drivers/usb/dwc3/dwc3-omap.c | 2 +-
drivers/usb/gadget/udc/tegra-xudc.c | 20 +--
drivers/usb/host/ehci-pci.c | 9 +
drivers/vhost/net.c | 1 +
drivers/w1/slaves/w1_therm.c | 8 +-
fs/btrfs/extent_io.h | 2 +-
fs/btrfs/inode.c | 22 +++
fs/ceph/dir.c | 11 +-
fs/gfs2/bmap.c | 2 +-
fs/gfs2/file.c | 3 +-
fs/gfs2/inode.c | 2 +-
fs/gfs2/rgrp.c | 7 +-
fs/gfs2/rgrp.h | 2 +-
fs/gfs2/super.c | 2 +-
fs/io_uring.c | 8 +-
fs/jfs/inode.c | 3 +-
fs/minix/inode.c | 3 +-
fs/nfs/direct.c | 48 +++--
fs/nfs/file.c | 4 +-
fs/nfs/internal.h | 7 +
fs/nfs/nfs42proc.c | 9 +-
fs/nfs/nfs4state.c | 12 ++
fs/nfs/pagelist.c | 10 +-
fs/nfs/pnfs_nfs.c | 8 +-
fs/nfs/write.c | 34 ++--
include/linux/gpio/driver.h | 9 +
include/linux/ipv6.h | 2 +-
include/linux/mmzone.h | 11 +-
include/linux/nfs_fs.h | 10 +-
include/net/arp.h | 1 +
include/net/bluetooth/bluetooth.h | 14 +-
include/uapi/linux/bpf.h | 3 +-
include/uapi/linux/can/isotp.h | 28 ++-
init/main.c | 6 +-
lib/lz4/lz4_decompress.c | 8 +-
lib/test_ubsan.c | 11 --
mm/memory.c | 25 ++-
mm/mempolicy.c | 1 +
mm/mremap.c | 3 +
mm/rmap.c | 25 ++-
net/batman-adv/multicast.c | 2 +-
net/bluetooth/hci_event.c | 3 +-
net/bluetooth/l2cap_core.c | 1 +
net/can/isotp.c | 12 +-
net/core/filter.c | 27 ++-
net/core/rtnetlink.c | 13 +-
net/ipv4/arp.c | 9 +-
net/ipv4/fib_frontend.c | 5 +-
net/ipv4/fib_semantics.c | 7 +-
net/ipv4/inet_hashtables.c | 53 +++---
net/ipv6/addrconf.c | 4 +-
net/ipv6/inet6_hashtables.c | 5 +-
net/ipv6/ip6_input.c | 2 +-
net/ipv6/ip6mr.c | 8 +-
net/ipv6/route.c | 2 +-
net/netlabel/netlabel_kapi.c | 2 +
net/openvswitch/actions.c | 2 +-
net/openvswitch/flow_netlink.c | 99 ++++++++++-
net/rxrpc/net_ns.c | 2 +-
net/smc/smc_core.c | 2 +-
net/sunrpc/clnt.c | 7 +
net/sunrpc/sched.c | 11 +-
net/sunrpc/svcsock.c | 4 +-
net/sunrpc/xprt.c | 16 +-
net/sunrpc/xprtrdma/transport.c | 6 +-
net/sunrpc/xprtsock.c | 54 ++++--
net/tls/tls_sw.c | 2 +-
net/wireless/scan.c | 9 +-
scripts/Makefile.ubsan | 1 -
tools/build/feature/Makefile | 9 +-
tools/lib/bpf/Makefile | 4 +-
tools/perf/Makefile.config | 6 +
tools/perf/arch/arm64/util/arm-spe.c | 6 +
tools/perf/perf.c | 2 +-
tools/perf/util/session.c | 15 +-
tools/perf/util/setup.py | 8 +-
tools/testing/selftests/cgroup/cgroup_util.c | 6 +-
tools/testing/selftests/cgroup/test_core.c | 165 ++++++++++++++++++
191 files changed, 1365 insertions(+), 496 deletions(-)
--
2.20.1
1
165

14 Jul '22
From: Zheng Yejian <zhengyejian1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187209, https://gitee.com/openeuler/kernel/issues/I5GWFT
CVE: NA
--------------------------------
Syzkaller report a softlockup problem, see following logs:
[ 41.463870] watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [ksoftirqd/0:9]
[ 41.509763] Modules linked in:
[ 41.512295] CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 4.19.90 #13
[ 41.516134] Hardware name: linux,dummy-virt (DT)
[ 41.519182] pstate: 80c00005 (Nzcv daif +PAN +UAO)
[ 41.522415] pc : perf_trace_buf_alloc+0x138/0x238
[ 41.525583] lr : perf_trace_buf_alloc+0x138/0x238
[ 41.528656] sp : ffff8000c137e880
[ 41.531050] x29: ffff8000c137e880 x28: ffff20000850ced0
[ 41.534759] x27: 0000000000000000 x26: ffff8000c137e9c0
[ 41.538456] x25: ffff8000ce5c2ae0 x24: ffff200008358b08
[ 41.542151] x23: 0000000000000000 x22: ffff2000084a50ac
[ 41.545834] x21: ffff8000c137e880 x20: 000000000000001c
[ 41.549516] x19: ffff7dffbfdf88e8 x18: 0000000000000000
[ 41.553202] x17: 0000000000000000 x16: 0000000000000000
[ 41.556892] x15: 1ffff00036e07805 x14: 0000000000000000
[ 41.560592] x13: 0000000000000004 x12: 0000000000000000
[ 41.564315] x11: 1fffefbff7fbf120 x10: ffff0fbff7fbf120
[ 41.568003] x9 : dfff200000000000 x8 : ffff7dffbfdf8904
[ 41.571699] x7 : 0000000000000000 x6 : ffff0fbff7fbf121
[ 41.575398] x5 : ffff0fbff7fbf121 x4 : ffff0fbff7fbf121
[ 41.579086] x3 : ffff20000850cdc8 x2 : 0000000000000008
[ 41.582773] x1 : ffff8000c1376000 x0 : 0000000000000100
[ 41.586495] Call trace:
[ 41.588922] perf_trace_buf_alloc+0x138/0x238
[ 41.591912] perf_ftrace_function_call+0x1ac/0x248
[ 41.595123] ftrace_ops_no_ops+0x3a4/0x488
[ 41.597998] ftrace_graph_call+0x0/0xc
[ 41.600715] rcu_dynticks_curr_cpu_in_eqs+0x14/0x70
[ 41.603962] rcu_is_watching+0xc/0x20
[ 41.606635] ftrace_ops_no_ops+0x240/0x488
[ 41.609530] ftrace_graph_call+0x0/0xc
[ 41.612249] __read_once_size_nocheck.constprop.0+0x1c/0x38
[ 41.615905] unwind_frame+0x140/0x358
[ 41.618597] walk_stackframe+0x34/0x60
[ 41.621359] __save_stack_trace+0x204/0x3b8
[ 41.624328] save_stack_trace+0x2c/0x38
[ 41.627112] __kasan_slab_free+0x120/0x228
[ 41.630018] kasan_slab_free+0x10/0x18
[ 41.632752] kfree+0x84/0x250
[ 41.635107] skb_free_head+0x70/0xb0
[ 41.637772] skb_release_data+0x3f8/0x730
[ 41.640626] skb_release_all+0x50/0x68
[ 41.643350] kfree_skb+0x84/0x278
[ 41.645890] kfree_skb_list+0x4c/0x78
[ 41.648595] __dev_queue_xmit+0x1a4c/0x23a0
[ 41.651541] dev_queue_xmit+0x28/0x38
[ 41.654254] ip6_finish_output2+0xeb0/0x1630
[ 41.657261] ip6_finish_output+0x2d8/0x7f8
[ 41.660174] ip6_output+0x19c/0x348
[ 41.663850] mld_sendpack+0x560/0x9e0
[ 41.666564] mld_ifc_timer_expire+0x484/0x8a8
[ 41.669624] call_timer_fn+0x68/0x4b0
[ 41.672355] expire_timers+0x168/0x498
[ 41.675126] run_timer_softirq+0x230/0x7a8
[ 41.678052] __do_softirq+0x2d0/0xba0
[ 41.680763] run_ksoftirqd+0x110/0x1a0
[ 41.683512] smpboot_thread_fn+0x31c/0x620
[ 41.686429] kthread+0x2c8/0x348
[ 41.688927] ret_from_fork+0x10/0x18
Look into above call stack, we found a recursive call in
'ftrace_graph_call', see a snippet:
__read_once_size_nocheck.constprop.0
ftrace_graph_call
......
rcu_dynticks_curr_cpu_in_eqs
ftrace_graph_call
We analyze that 'rcu_dynticks_curr_cpu_in_eqs' should not be tracable,
and we verify that mark related functions as 'notrace' can avoid the
problem.
Comparing mainline kernel, we find that commit ff5c4f5cad33 ("rcu/tree:
Mark the idle relevant functions noinstr") mark related functions as
'noinstr' which implies notrace, noinline and sticks things in the
.noinstr.text section.
Link: https://lore.kernel.org/all/20200416114706.625340212@infradead.org/
Currently 'noinstr' mechanism has not been introduced, so we would not
directly backport that commit (otherwise more changes may be introduced).
Instead, we mark the functions as 'notrace' where it is 'noinstr' in
that commit.
Signed-off-by: Zheng Yejian <zhengyejian1(a)huawei.com>
Reviewed-by: Zhen Lei <thunder.leizhen(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/rcu/tree.c | 22 +++++++++++-----------
kernel/rcu/tree_plugin.h | 4 ++--
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 594d6ea99024..ea05c59096a2 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -275,7 +275,7 @@ static DEFINE_PER_CPU(struct rcu_dynticks, rcu_dynticks) = {
* Record entry into an extended quiescent state. This is only to be
* called when not already in an extended quiescent state.
*/
-static void rcu_dynticks_eqs_enter(void)
+static notrace void rcu_dynticks_eqs_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
int seq;
@@ -298,7 +298,7 @@ static void rcu_dynticks_eqs_enter(void)
* Record exit from an extended quiescent state. This is only to be
* called from an extended quiescent state.
*/
-static void rcu_dynticks_eqs_exit(void)
+static notrace void rcu_dynticks_eqs_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
int seq;
@@ -343,7 +343,7 @@ static void rcu_dynticks_eqs_online(void)
*
* No ordering, as we are sampling CPU-local information.
*/
-bool rcu_dynticks_curr_cpu_in_eqs(void)
+static __always_inline bool rcu_dynticks_curr_cpu_in_eqs(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -706,7 +706,7 @@ static struct rcu_node *rcu_get_root(struct rcu_state *rsp)
* the possibility of usermode upcalls having messed up our count
* of interrupt nesting level during the prior busy period.
*/
-static void rcu_eqs_enter(bool user)
+static notrace void rcu_eqs_enter(bool user)
{
struct rcu_state *rsp;
struct rcu_data *rdp;
@@ -763,7 +763,7 @@ void rcu_idle_enter(void)
* If you add or remove a call to rcu_user_enter(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_user_enter(void)
+notrace void rcu_user_enter(void)
{
lockdep_assert_irqs_disabled();
rcu_eqs_enter(true);
@@ -781,7 +781,7 @@ void rcu_user_enter(void)
* If you add or remove a call to rcu_nmi_exit(), be sure to test
* with CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_nmi_exit(void)
+notrace void rcu_nmi_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -829,7 +829,7 @@ void rcu_nmi_exit(void)
* If you add or remove a call to rcu_irq_exit(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_irq_exit(void)
+notrace void rcu_irq_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -864,7 +864,7 @@ void rcu_irq_exit_irqson(void)
* allow for the possibility of usermode upcalls messing up our count of
* interrupt nesting level during the busy period that is just now starting.
*/
-static void rcu_eqs_exit(bool user)
+static notrace void rcu_eqs_exit(bool user)
{
struct rcu_dynticks *rdtp;
long oldval;
@@ -914,7 +914,7 @@ void rcu_idle_exit(void)
* If you add or remove a call to rcu_user_exit(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_user_exit(void)
+void notrace rcu_user_exit(void)
{
rcu_eqs_exit(1);
}
@@ -932,7 +932,7 @@ void rcu_user_exit(void)
* If you add or remove a call to rcu_nmi_enter(), be sure to test
* with CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_nmi_enter(void)
+notrace void rcu_nmi_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
long incby = 2;
@@ -982,7 +982,7 @@ void rcu_nmi_enter(void)
* If you add or remove a call to rcu_irq_enter(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_irq_enter(void)
+notrace void rcu_irq_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 5f6de49dc78e..568818bef28f 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -2677,7 +2677,7 @@ static void rcu_bind_gp_kthread(void)
}
/* Record the current task on dyntick-idle entry. */
-static void rcu_dynticks_task_enter(void)
+static notrace void rcu_dynticks_task_enter(void)
{
#if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
WRITE_ONCE(current->rcu_tasks_idle_cpu, smp_processor_id());
@@ -2685,7 +2685,7 @@ static void rcu_dynticks_task_enter(void)
}
/* Record no current task on dyntick-idle exit. */
-static void rcu_dynticks_task_exit(void)
+static notrace void rcu_dynticks_task_exit(void)
{
#if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
WRITE_ONCE(current->rcu_tasks_idle_cpu, -1);
--
2.25.1
1
4

14 Jul '22
From: Zheng Yejian <zhengyejian1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187209, https://gitee.com/openeuler/kernel/issues/I5GWFT
CVE: NA
--------------------------------
Syzkaller report a softlockup problem, see following logs:
[ 41.463870] watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [ksoftirqd/0:9]
[ 41.509763] Modules linked in:
[ 41.512295] CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 4.19.90 #13
[ 41.516134] Hardware name: linux,dummy-virt (DT)
[ 41.519182] pstate: 80c00005 (Nzcv daif +PAN +UAO)
[ 41.522415] pc : perf_trace_buf_alloc+0x138/0x238
[ 41.525583] lr : perf_trace_buf_alloc+0x138/0x238
[ 41.528656] sp : ffff8000c137e880
[ 41.531050] x29: ffff8000c137e880 x28: ffff20000850ced0
[ 41.534759] x27: 0000000000000000 x26: ffff8000c137e9c0
[ 41.538456] x25: ffff8000ce5c2ae0 x24: ffff200008358b08
[ 41.542151] x23: 0000000000000000 x22: ffff2000084a50ac
[ 41.545834] x21: ffff8000c137e880 x20: 000000000000001c
[ 41.549516] x19: ffff7dffbfdf88e8 x18: 0000000000000000
[ 41.553202] x17: 0000000000000000 x16: 0000000000000000
[ 41.556892] x15: 1ffff00036e07805 x14: 0000000000000000
[ 41.560592] x13: 0000000000000004 x12: 0000000000000000
[ 41.564315] x11: 1fffefbff7fbf120 x10: ffff0fbff7fbf120
[ 41.568003] x9 : dfff200000000000 x8 : ffff7dffbfdf8904
[ 41.571699] x7 : 0000000000000000 x6 : ffff0fbff7fbf121
[ 41.575398] x5 : ffff0fbff7fbf121 x4 : ffff0fbff7fbf121
[ 41.579086] x3 : ffff20000850cdc8 x2 : 0000000000000008
[ 41.582773] x1 : ffff8000c1376000 x0 : 0000000000000100
[ 41.586495] Call trace:
[ 41.588922] perf_trace_buf_alloc+0x138/0x238
[ 41.591912] perf_ftrace_function_call+0x1ac/0x248
[ 41.595123] ftrace_ops_no_ops+0x3a4/0x488
[ 41.597998] ftrace_graph_call+0x0/0xc
[ 41.600715] rcu_dynticks_curr_cpu_in_eqs+0x14/0x70
[ 41.603962] rcu_is_watching+0xc/0x20
[ 41.606635] ftrace_ops_no_ops+0x240/0x488
[ 41.609530] ftrace_graph_call+0x0/0xc
[ 41.612249] __read_once_size_nocheck.constprop.0+0x1c/0x38
[ 41.615905] unwind_frame+0x140/0x358
[ 41.618597] walk_stackframe+0x34/0x60
[ 41.621359] __save_stack_trace+0x204/0x3b8
[ 41.624328] save_stack_trace+0x2c/0x38
[ 41.627112] __kasan_slab_free+0x120/0x228
[ 41.630018] kasan_slab_free+0x10/0x18
[ 41.632752] kfree+0x84/0x250
[ 41.635107] skb_free_head+0x70/0xb0
[ 41.637772] skb_release_data+0x3f8/0x730
[ 41.640626] skb_release_all+0x50/0x68
[ 41.643350] kfree_skb+0x84/0x278
[ 41.645890] kfree_skb_list+0x4c/0x78
[ 41.648595] __dev_queue_xmit+0x1a4c/0x23a0
[ 41.651541] dev_queue_xmit+0x28/0x38
[ 41.654254] ip6_finish_output2+0xeb0/0x1630
[ 41.657261] ip6_finish_output+0x2d8/0x7f8
[ 41.660174] ip6_output+0x19c/0x348
[ 41.663850] mld_sendpack+0x560/0x9e0
[ 41.666564] mld_ifc_timer_expire+0x484/0x8a8
[ 41.669624] call_timer_fn+0x68/0x4b0
[ 41.672355] expire_timers+0x168/0x498
[ 41.675126] run_timer_softirq+0x230/0x7a8
[ 41.678052] __do_softirq+0x2d0/0xba0
[ 41.680763] run_ksoftirqd+0x110/0x1a0
[ 41.683512] smpboot_thread_fn+0x31c/0x620
[ 41.686429] kthread+0x2c8/0x348
[ 41.688927] ret_from_fork+0x10/0x18
Look into above call stack, we found a recursive call in
'ftrace_graph_call', see a snippet:
__read_once_size_nocheck.constprop.0
ftrace_graph_call
......
rcu_dynticks_curr_cpu_in_eqs
ftrace_graph_call
We analyze that 'rcu_dynticks_curr_cpu_in_eqs' should not be tracable,
and we verify that mark related functions as 'notrace' can avoid the
problem.
Comparing mainline kernel, we find that commit ff5c4f5cad33 ("rcu/tree:
Mark the idle relevant functions noinstr") mark related functions as
'noinstr' which implies notrace, noinline and sticks things in the
.noinstr.text section.
Link: https://lore.kernel.org/all/20200416114706.625340212@infradead.org/
Currently 'noinstr' mechanism has not been introduced, so we would not
directly backport that commit (otherwise more changes may be introduced).
Instead, we mark the functions as 'notrace' where it is 'noinstr' in
that commit.
Signed-off-by: Zheng Yejian <zhengyejian1(a)huawei.com>
Reviewed-by: Zhen Lei <thunder.leizhen(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/rcu/tree.c | 22 +++++++++++-----------
kernel/rcu/tree_plugin.h | 4 ++--
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 594d6ea99024..ea05c59096a2 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -275,7 +275,7 @@ static DEFINE_PER_CPU(struct rcu_dynticks, rcu_dynticks) = {
* Record entry into an extended quiescent state. This is only to be
* called when not already in an extended quiescent state.
*/
-static void rcu_dynticks_eqs_enter(void)
+static notrace void rcu_dynticks_eqs_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
int seq;
@@ -298,7 +298,7 @@ static void rcu_dynticks_eqs_enter(void)
* Record exit from an extended quiescent state. This is only to be
* called from an extended quiescent state.
*/
-static void rcu_dynticks_eqs_exit(void)
+static notrace void rcu_dynticks_eqs_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
int seq;
@@ -343,7 +343,7 @@ static void rcu_dynticks_eqs_online(void)
*
* No ordering, as we are sampling CPU-local information.
*/
-bool rcu_dynticks_curr_cpu_in_eqs(void)
+static __always_inline bool rcu_dynticks_curr_cpu_in_eqs(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -706,7 +706,7 @@ static struct rcu_node *rcu_get_root(struct rcu_state *rsp)
* the possibility of usermode upcalls having messed up our count
* of interrupt nesting level during the prior busy period.
*/
-static void rcu_eqs_enter(bool user)
+static notrace void rcu_eqs_enter(bool user)
{
struct rcu_state *rsp;
struct rcu_data *rdp;
@@ -763,7 +763,7 @@ void rcu_idle_enter(void)
* If you add or remove a call to rcu_user_enter(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_user_enter(void)
+notrace void rcu_user_enter(void)
{
lockdep_assert_irqs_disabled();
rcu_eqs_enter(true);
@@ -781,7 +781,7 @@ void rcu_user_enter(void)
* If you add or remove a call to rcu_nmi_exit(), be sure to test
* with CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_nmi_exit(void)
+notrace void rcu_nmi_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -829,7 +829,7 @@ void rcu_nmi_exit(void)
* If you add or remove a call to rcu_irq_exit(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_irq_exit(void)
+notrace void rcu_irq_exit(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -864,7 +864,7 @@ void rcu_irq_exit_irqson(void)
* allow for the possibility of usermode upcalls messing up our count of
* interrupt nesting level during the busy period that is just now starting.
*/
-static void rcu_eqs_exit(bool user)
+static notrace void rcu_eqs_exit(bool user)
{
struct rcu_dynticks *rdtp;
long oldval;
@@ -914,7 +914,7 @@ void rcu_idle_exit(void)
* If you add or remove a call to rcu_user_exit(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_user_exit(void)
+void notrace rcu_user_exit(void)
{
rcu_eqs_exit(1);
}
@@ -932,7 +932,7 @@ void rcu_user_exit(void)
* If you add or remove a call to rcu_nmi_enter(), be sure to test
* with CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_nmi_enter(void)
+notrace void rcu_nmi_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
long incby = 2;
@@ -982,7 +982,7 @@ void rcu_nmi_enter(void)
* If you add or remove a call to rcu_irq_enter(), be sure to test with
* CONFIG_RCU_EQS_DEBUG=y.
*/
-void rcu_irq_enter(void)
+notrace void rcu_irq_enter(void)
{
struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 5f6de49dc78e..568818bef28f 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -2677,7 +2677,7 @@ static void rcu_bind_gp_kthread(void)
}
/* Record the current task on dyntick-idle entry. */
-static void rcu_dynticks_task_enter(void)
+static notrace void rcu_dynticks_task_enter(void)
{
#if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
WRITE_ONCE(current->rcu_tasks_idle_cpu, smp_processor_id());
@@ -2685,7 +2685,7 @@ static void rcu_dynticks_task_enter(void)
}
/* Record no current task on dyntick-idle exit. */
-static void rcu_dynticks_task_exit(void)
+static notrace void rcu_dynticks_task_exit(void)
{
#if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
WRITE_ONCE(current->rcu_tasks_idle_cpu, -1);
--
2.25.1
1
4
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-4.19.250
commit b15d5731b708a2190fec836990b8aefbbf36b07a
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5GKVX
CVE: CVE-2021-33656
--------------------------------
commit ff2047fb755d4415ec3c70ac799889371151796d upstream.
Drop support for these ioctls:
* PIO_FONT, PIO_FONTX
* GIO_FONT, GIO_FONTX
* PIO_FONTRESET
As was demonstrated by commit 90bfdeef83f1 (tty: make FONTX ioctl use
the tty pointer they were actually passed), these ioctls are not used
from userspace, as:
1) they used to be broken (set up font on current console, not the open
one) and racy (before the commit above)
2) KDFONTOP ioctl is used for years instead
Note that PIO_FONTRESET is defunct on most systems as VGA_CONSOLE is set
on them for ages. That turns on BROKEN_GRAPHICS_PROGRAMS which makes
PIO_FONTRESET just return an error.
We are removing KD_FONT_FLAG_OLD here as it was used only by these
removed ioctls. kd.h header exists both in kernel and uapi headers, so
we can remove the kernel one completely. Everyone includeing kd.h will
now automatically get the uapi one.
There are now unused definitions of the ioctl numbers and "struct
consolefontdesc" in kd.h, but as it is a uapi header, I am not touching
these.
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20210105120239.28031-8-jslaby@suse.cz
Cc: guodaxing <guodaxing(a)huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/tty/vt/vt.c | 39 +---------
drivers/tty/vt/vt_ioctl.c | 149 --------------------------------------
include/linux/kd.h | 8 --
3 files changed, 3 insertions(+), 193 deletions(-)
delete mode 100644 include/linux/kd.h
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 72e3989dffa6..dca627ccece5 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -4472,16 +4472,8 @@ static int con_font_get(struct vc_data *vc, struct console_font_op *op)
if (op->data && font.charcount > op->charcount)
rc = -ENOSPC;
- if (!(op->flags & KD_FONT_FLAG_OLD)) {
- if (font.width > op->width || font.height > op->height)
- rc = -ENOSPC;
- } else {
- if (font.width != 8)
- rc = -EIO;
- else if ((op->height && font.height > op->height) ||
- font.height > 32)
- rc = -ENOSPC;
- }
+ if (font.width > op->width || font.height > op->height)
+ rc = -ENOSPC;
if (rc)
goto out;
@@ -4509,7 +4501,7 @@ static int con_font_set(struct vc_data *vc, struct console_font_op *op)
return -EINVAL;
if (op->charcount > 512)
return -EINVAL;
- if (op->width <= 0 || op->width > 32 || op->height > 32)
+ if (op->width <= 0 || op->width > 32 || !op->height || op->height > 32)
return -EINVAL;
size = (op->width+7)/8 * 32 * op->charcount;
if (size > max_font_size)
@@ -4519,31 +4511,6 @@ static int con_font_set(struct vc_data *vc, struct console_font_op *op)
if (IS_ERR(font.data))
return PTR_ERR(font.data);
- if (!op->height) { /* Need to guess font height [compat] */
- int h, i;
- u8 *charmap = font.data;
-
- /*
- * If from KDFONTOP ioctl, don't allow things which can be done
- * in userland,so that we can get rid of this soon
- */
- if (!(op->flags & KD_FONT_FLAG_OLD)) {
- kfree(font.data);
- return -EINVAL;
- }
-
- for (h = 32; h > 0; h--)
- for (i = 0; i < op->charcount; i++)
- if (charmap[32*i+h-1])
- goto nonzero;
-
- kfree(font.data);
- return -EINVAL;
-
- nonzero:
- op->height = h;
- }
-
font.charcount = op->charcount;
font.width = op->width;
font.height = op->height;
diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
index 13675008d1c7..915b0173b4f8 100644
--- a/drivers/tty/vt/vt_ioctl.c
+++ b/drivers/tty/vt/vt_ioctl.c
@@ -241,48 +241,6 @@ int vt_waitactive(int n)
#define GPLAST 0x3df
#define GPNUM (GPLAST - GPFIRST + 1)
-
-
-static inline int
-do_fontx_ioctl(struct vc_data *vc, int cmd, struct consolefontdesc __user *user_cfd, int perm, struct console_font_op *op)
-{
- struct consolefontdesc cfdarg;
- int i;
-
- if (copy_from_user(&cfdarg, user_cfd, sizeof(struct consolefontdesc)))
- return -EFAULT;
-
- switch (cmd) {
- case PIO_FONTX:
- if (!perm)
- return -EPERM;
- op->op = KD_FONT_OP_SET;
- op->flags = KD_FONT_FLAG_OLD;
- op->width = 8;
- op->height = cfdarg.charheight;
- op->charcount = cfdarg.charcount;
- op->data = cfdarg.chardata;
- return con_font_op(vc, op);
-
- case GIO_FONTX:
- op->op = KD_FONT_OP_GET;
- op->flags = KD_FONT_FLAG_OLD;
- op->width = 8;
- op->height = cfdarg.charheight;
- op->charcount = cfdarg.charcount;
- op->data = cfdarg.chardata;
- i = con_font_op(vc, op);
- if (i)
- return i;
- cfdarg.charheight = op->height;
- cfdarg.charcount = op->charcount;
- if (copy_to_user(user_cfd, &cfdarg, sizeof(struct consolefontdesc)))
- return -EFAULT;
- return 0;
- }
- return -EINVAL;
-}
-
static inline int
do_unimap_ioctl(int cmd, struct unimapdesc __user *user_ud, int perm, struct vc_data *vc)
{
@@ -918,30 +876,6 @@ int vt_ioctl(struct tty_struct *tty,
break;
}
- case PIO_FONT: {
- if (!perm)
- return -EPERM;
- op.op = KD_FONT_OP_SET;
- op.flags = KD_FONT_FLAG_OLD | KD_FONT_FLAG_DONT_RECALC; /* Compatibility */
- op.width = 8;
- op.height = 0;
- op.charcount = 256;
- op.data = up;
- ret = con_font_op(vc, &op);
- break;
- }
-
- case GIO_FONT: {
- op.op = KD_FONT_OP_GET;
- op.flags = KD_FONT_FLAG_OLD;
- op.width = 8;
- op.height = 32;
- op.charcount = 256;
- op.data = up;
- ret = con_font_op(vc, &op);
- break;
- }
-
case PIO_CMAP:
if (!perm)
ret = -EPERM;
@@ -953,36 +887,6 @@ int vt_ioctl(struct tty_struct *tty,
ret = con_get_cmap(up);
break;
- case PIO_FONTX:
- case GIO_FONTX:
- ret = do_fontx_ioctl(vc, cmd, up, perm, &op);
- break;
-
- case PIO_FONTRESET:
- {
- if (!perm)
- return -EPERM;
-
-#ifdef BROKEN_GRAPHICS_PROGRAMS
- /* With BROKEN_GRAPHICS_PROGRAMS defined, the default
- font is not saved. */
- ret = -ENOSYS;
- break;
-#else
- {
- op.op = KD_FONT_OP_SET_DEFAULT;
- op.data = NULL;
- ret = con_font_op(vc, &op);
- if (ret)
- break;
- console_lock();
- con_set_default_unimap(vc);
- console_unlock();
- break;
- }
-#endif
- }
-
case KDFONTOP: {
if (copy_from_user(&op, up, sizeof(op))) {
ret = -EFAULT;
@@ -1096,54 +1000,6 @@ void vc_SAK(struct work_struct *work)
#ifdef CONFIG_COMPAT
-struct compat_consolefontdesc {
- unsigned short charcount; /* characters in font (256 or 512) */
- unsigned short charheight; /* scan lines per character (1-32) */
- compat_caddr_t chardata; /* font data in expanded form */
-};
-
-static inline int
-compat_fontx_ioctl(struct vc_data *vc, int cmd,
- struct compat_consolefontdesc __user *user_cfd,
- int perm, struct console_font_op *op)
-{
- struct compat_consolefontdesc cfdarg;
- int i;
-
- if (copy_from_user(&cfdarg, user_cfd, sizeof(struct compat_consolefontdesc)))
- return -EFAULT;
-
- switch (cmd) {
- case PIO_FONTX:
- if (!perm)
- return -EPERM;
- op->op = KD_FONT_OP_SET;
- op->flags = KD_FONT_FLAG_OLD;
- op->width = 8;
- op->height = cfdarg.charheight;
- op->charcount = cfdarg.charcount;
- op->data = compat_ptr(cfdarg.chardata);
- return con_font_op(vc, op);
-
- case GIO_FONTX:
- op->op = KD_FONT_OP_GET;
- op->flags = KD_FONT_FLAG_OLD;
- op->width = 8;
- op->height = cfdarg.charheight;
- op->charcount = cfdarg.charcount;
- op->data = compat_ptr(cfdarg.chardata);
- i = con_font_op(vc, op);
- if (i)
- return i;
- cfdarg.charheight = op->height;
- cfdarg.charcount = op->charcount;
- if (copy_to_user(user_cfd, &cfdarg, sizeof(struct compat_consolefontdesc)))
- return -EFAULT;
- return 0;
- }
- return -EINVAL;
-}
-
struct compat_console_font_op {
compat_uint_t op; /* operation code KD_FONT_OP_* */
compat_uint_t flags; /* KD_FONT_FLAG_* */
@@ -1221,11 +1077,6 @@ long vt_compat_ioctl(struct tty_struct *tty,
/*
* these need special handlers for incompatible data structures
*/
- case PIO_FONTX:
- case GIO_FONTX:
- ret = compat_fontx_ioctl(vc, cmd, up, perm, &op);
- break;
-
case KDFONTOP:
ret = compat_kdfontop_ioctl(up, perm, &op, vc);
break;
diff --git a/include/linux/kd.h b/include/linux/kd.h
deleted file mode 100644
index b130a18f860f..000000000000
--- a/include/linux/kd.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _LINUX_KD_H
-#define _LINUX_KD_H
-
-#include <uapi/linux/kd.h>
-
-#define KD_FONT_FLAG_OLD 0x80000000 /* Invoked via old interface [compat] */
-#endif /* _LINUX_KD_H */
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS] dm thin: Fix crash in dm_sm_register_threshold_callback()
by Yongqiang Liu 13 Jul '22
by Yongqiang Liu 13 Jul '22
13 Jul '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GRX6
CVE: NA
--------------------------------
Fault inject on pool metadata device report:
BUG: KASAN: use-after-free in dm_pool_register_metadata_threshold+0x40/0x80
Read of size 8 at addr ffff8881b9d50068 by task dmsetup/950
CPU: 7 PID: 950 Comm: dmsetup Tainted: G W 5.19.0-rc6 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x34/0x44
print_address_description.constprop.0.cold+0xeb/0x3f4
kasan_report.cold+0xe6/0x147
dm_pool_register_metadata_threshold+0x40/0x80
pool_ctr+0xa0a/0x1150
dm_table_add_target+0x2c8/0x640
table_load+0x1fd/0x430
ctl_ioctl+0x2c4/0x5a0
dm_ctl_ioctl+0xa/0x10
__x64_sys_ioctl+0xb3/0xd0
do_syscall_64+0x35/0x80
entry_SYSCALL_64_after_hwframe+0x46/0xb0
This can be easy reproduce:
echo offline > /sys/block/sda/device/state
dd if=/dev/zero of=/dev/mapper/thin bs=4k count=10
dmsetup load pool --table "0 20971520 thin-pool /dev/sda /dev/sdb 128 0 0"
If metadata commit failed, the transaction will be aborted and the metadata
space manager will be destroyed. If load table on this pool, when register the
metadata threshold callback, the UAF will happen on metadata space manager.
So return error when load table if the pool is on FAIL status.
Fixes: ac8c3f3df65e4 ("dm thin: generate event when metadata threshold passed")
Reported-by: Hulk Robot <hulkci(a)huawei.com>
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Hou Tao <houtao1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/dm-thin-metadata.c | 8 +++++++-
drivers/md/dm-thin.c | 4 +++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
index a6a5cee6b943..c3dc171114dc 100644
--- a/drivers/md/dm-thin-metadata.c
+++ b/drivers/md/dm-thin-metadata.c
@@ -1997,9 +1997,15 @@ int dm_pool_register_metadata_threshold(struct dm_pool_metadata *pmd,
int r;
down_write(&pmd->root_lock);
+ if (pmd->fail_io) {
+ r = -EINVAL;
+ goto out;
+ }
+
r = dm_sm_register_threshold_callback(pmd->metadata_sm, threshold, fn, context);
- up_write(&pmd->root_lock);
+out:
+ up_write(&pmd->root_lock);
return r;
}
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 435a2ee4a392..2b6dd7a275eb 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -3383,8 +3383,10 @@ static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv)
calc_metadata_threshold(pt),
metadata_low_callback,
pool);
- if (r)
+ if (r) {
+ ti->error = "Error registering metadata threshold";
goto out_flags_changed;
+ }
pt->callbacks.congested_fn = pool_is_congested;
dm_table_add_target_callbacks(ti->table, &pt->callbacks);
--
2.25.1
1
0

13 Jul '22
From: Li Lingfeng <lilingfeng3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DI4S
CVE: NA
Reference: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/commit…
---------------------------
We don't really need the field names to be globally unique, it is enough
when they are unique in the given struct. Since structs do not generally
span mutliple files, using the line number is enough to ensure an unique
identifier. It means that we can't use two KABI_RENAME macros on the same
line but that's not happening anyway.
This allows pahole to deduplicate the type info of structs using KABI
macros, lowering the size of vmlinuz from 26M to 8.5
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/kabi.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/linux/kabi.h b/include/linux/kabi.h
index a52d9fa72cfa..fe3213c0f576 100644
--- a/include/linux/kabi.h
+++ b/include/linux/kabi.h
@@ -393,6 +393,8 @@
# define __KABI_CHECK_SIZE(_item, _size)
#endif
+#define KABI_UNIQUE_ID __PASTE(kabi_hidden_, __LINE__)
+
# define _KABI_DEPRECATE(_type, _orig) _type kabi_reserved_##_orig
# define _KABI_DEPRECATE_FN(_type, _orig, _args...) \
_type (* kabi_reserved_##_orig)(_args)
@@ -402,7 +404,7 @@
_new; \
struct { \
_orig; \
- } __UNIQUE_ID(kabi_hide); \
+ } KABI_UNIQUE_ID; \
__KABI_CHECK_SIZE_ALIGN(_orig, _new); \
}
#else
--
2.20.1
1
20

[PATCH openEuler-1.0-LTS 1/6] xen/blkfront: fix memory allocation flags in blkfront_setup_indirect()
by Yongqiang Liu 13 Jul '22
by Yongqiang Liu 13 Jul '22
13 Jul '22
From: Juergen Gross <jgross(a)suse.com>
stable inclusion
from stable-v4.19.116
commit 5f547e7cbd8435be3aa2a27e2ae594b4fd94865b
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5GLXT
CVE: CVE-2022-26365
--------------------------------
commit 3a169c0be75b59dd85d159493634870cdec6d3c4 upstream.
Commit 1d5c76e664333 ("xen-blkfront: switch kcalloc to kvcalloc for
large array allocation") didn't fix the issue it was meant to, as the
flags for allocating the memory are GFP_NOIO, which will lead the
memory allocation falling back to kmalloc().
So instead of GFP_NOIO use GFP_KERNEL and do all the memory allocation
in blkfront_setup_indirect() in a memalloc_noio_{save,restore} section.
Fixes: 1d5c76e664333 ("xen-blkfront: switch kcalloc to kvcalloc for large array allocation")
Cc: stable(a)vger.kernel.org
Signed-off-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
Acked-by: Roger Pau Monné <roger.pau(a)citrix.com>
Link: https://lore.kernel.org/r/20200403090034.8753-1-jgross@suse.com
Signed-off-by: Juergen Gross <jgross(a)suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: ChenXiaoSong <chenxiaosong2(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/block/xen-blkfront.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 0e451b17f33a..8059ff5ab4a6 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -47,6 +47,7 @@
#include <linux/bitmap.h>
#include <linux/list.h>
#include <linux/workqueue.h>
+#include <linux/sched/mm.h>
#include <xen/xen.h>
#include <xen/xenbus.h>
@@ -2251,10 +2252,12 @@ static void blkfront_setup_discard(struct blkfront_info *info)
static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
{
- unsigned int psegs, grants;
+ unsigned int psegs, grants, memflags;
int err, i;
struct blkfront_info *info = rinfo->dev_info;
+ memflags = memalloc_noio_save();
+
if (info->max_indirect_segments == 0) {
if (!HAS_EXTRA_REQ)
grants = BLKIF_MAX_SEGMENTS_PER_REQUEST;
@@ -2286,7 +2289,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
BUG_ON(!list_empty(&rinfo->indirect_pages));
for (i = 0; i < num; i++) {
- struct page *indirect_page = alloc_page(GFP_NOIO);
+ struct page *indirect_page = alloc_page(GFP_KERNEL);
if (!indirect_page)
goto out_of_memory;
list_add(&indirect_page->lru, &rinfo->indirect_pages);
@@ -2297,15 +2300,15 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
rinfo->shadow[i].grants_used =
kvcalloc(grants,
sizeof(rinfo->shadow[i].grants_used[0]),
- GFP_NOIO);
+ GFP_KERNEL);
rinfo->shadow[i].sg = kvcalloc(psegs,
sizeof(rinfo->shadow[i].sg[0]),
- GFP_NOIO);
+ GFP_KERNEL);
if (info->max_indirect_segments)
rinfo->shadow[i].indirect_grants =
kvcalloc(INDIRECT_GREFS(grants),
sizeof(rinfo->shadow[i].indirect_grants[0]),
- GFP_NOIO);
+ GFP_KERNEL);
if ((rinfo->shadow[i].grants_used == NULL) ||
(rinfo->shadow[i].sg == NULL) ||
(info->max_indirect_segments &&
@@ -2314,6 +2317,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
sg_init_table(rinfo->shadow[i].sg, psegs);
}
+ memalloc_noio_restore(memflags);
return 0;
@@ -2333,6 +2337,9 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
__free_page(indirect_page);
}
}
+
+ memalloc_noio_restore(memflags);
+
return -ENOMEM;
}
--
2.25.1
1
5

[PATCH openEuler-5.10 01/23] blk-throttle: fix io hung due to configuration updates
by Zheng Zengkai 12 Jul '22
by Zheng Zengkai 12 Jul '22
12 Jul '22
From: Yu Kuai <yukuai3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I58VE5
CVE: NA
--------------------------------
If new configuration is submitted while a bio is throttled, then new
waiting time is recaculated regardless that the bio might aready wait
for some time:
tg_conf_updated
throtl_start_new_slice
tg_update_disptime
throtl_schedule_next_dispatch
Then io hung can be triggered by always submmiting new configuration
before the throttled bio is dispatched.
Fix the problem by respecting the time that throttled bio aready waited.
In order to do that, instead of start new slice in tg_conf_updated(),
just update 'bytes_disp' and 'io_disp' based on the new configuration.
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/blk-throttle.c | 79 ++++++++++++++++++++++++++++++++++++--------
1 file changed, 66 insertions(+), 13 deletions(-)
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 95a13da1f343..0427c9c63e81 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -1421,7 +1421,57 @@ static int tg_print_conf_uint(struct seq_file *sf, void *v)
return 0;
}
-static void tg_conf_updated(struct throtl_grp *tg, bool global)
+static u64 throtl_update_bytes_disp(u64 dispatched, u64 new_limit,
+ u64 old_limit)
+{
+ if (new_limit == old_limit)
+ return dispatched;
+
+ if (!dispatched)
+ return 0;
+
+ /*
+ * In the case that multiply will overflow, just return 0. It will only
+ * let bios to be dispatched earlier.
+ */
+ if (div64_u64(U64_MAX, dispatched) < new_limit)
+ return 0;
+
+ dispatched *= new_limit;
+ return div64_u64(dispatched, old_limit);
+}
+
+static u32 throtl_update_io_disp(u32 dispatched, u32 new_limit, u32 old_limit)
+{
+ if (new_limit == old_limit)
+ return dispatched;
+
+ if (!dispatched)
+ return 0;
+ /*
+ * In the case that multiply will overflow, just return 0. It will only
+ * let bios to be dispatched earlier.
+ */
+ if (UINT_MAX / dispatched < new_limit)
+ return 0;
+
+ dispatched *= new_limit;
+ return dispatched / old_limit;
+}
+
+static void throtl_update_slice(struct throtl_grp *tg, u64 *old_limits)
+{
+ tg->bytes_disp[READ] = throtl_update_bytes_disp(tg->bytes_disp[READ],
+ tg_bps_limit(tg, READ), old_limits[0]);
+ tg->bytes_disp[WRITE] = throtl_update_bytes_disp(tg->bytes_disp[WRITE],
+ tg_bps_limit(tg, WRITE), old_limits[1]);
+ tg->io_disp[READ] = throtl_update_io_disp(tg->io_disp[READ],
+ tg_iops_limit(tg, READ), (u32)old_limits[2]);
+ tg->io_disp[WRITE] = throtl_update_io_disp(tg->io_disp[WRITE],
+ tg_iops_limit(tg, WRITE), (u32)old_limits[3]);
+}
+
+static void tg_conf_updated(struct throtl_grp *tg, u64 *old_limits, bool global)
{
struct throtl_service_queue *sq = &tg->service_queue;
struct cgroup_subsys_state *pos_css;
@@ -1460,16 +1510,7 @@ static void tg_conf_updated(struct throtl_grp *tg, bool global)
parent_tg->latency_target);
}
- /*
- * We're already holding queue_lock and know @tg is valid. Let's
- * apply the new config directly.
- *
- * Restart the slices for both READ and WRITES. It might happen
- * that a group's limit are dropped suddenly and we don't want to
- * account recently dispatched IO with new low rate.
- */
- throtl_start_new_slice(tg, READ);
- throtl_start_new_slice(tg, WRITE);
+ throtl_update_slice(tg, old_limits);
if (tg->flags & THROTL_TG_PENDING) {
tg_update_disptime(tg);
@@ -1502,6 +1543,14 @@ static inline int throtl_restart_syscall_when_busy(int errno)
return ret;
}
+static void tg_get_limits(struct throtl_grp *tg, u64 *limits)
+{
+ limits[0] = tg_bps_limit(tg, READ);
+ limits[1] = tg_bps_limit(tg, WRITE);
+ limits[2] = tg_iops_limit(tg, READ);
+ limits[3] = tg_iops_limit(tg, WRITE);
+}
+
static ssize_t tg_set_conf(struct kernfs_open_file *of,
char *buf, size_t nbytes, loff_t off, bool is_u64)
{
@@ -1510,6 +1559,7 @@ static ssize_t tg_set_conf(struct kernfs_open_file *of,
struct throtl_grp *tg;
int ret;
u64 v;
+ u64 old_limits[4];
ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx);
if (ret)
@@ -1526,13 +1576,14 @@ static ssize_t tg_set_conf(struct kernfs_open_file *of,
v = U64_MAX;
tg = blkg_to_tg(ctx.blkg);
+ tg_get_limits(tg, old_limits);
if (is_u64)
*(u64 *)((void *)tg + of_cft(of)->private) = v;
else
*(unsigned int *)((void *)tg + of_cft(of)->private) = v;
- tg_conf_updated(tg, false);
+ tg_conf_updated(tg, old_limits, false);
ret = 0;
out_finish:
blkg_conf_finish(&ctx);
@@ -1703,6 +1754,7 @@ static ssize_t tg_set_limit(struct kernfs_open_file *of,
struct blkg_conf_ctx ctx;
struct throtl_grp *tg;
u64 v[4];
+ u64 old_limits[4];
unsigned long idle_time;
unsigned long latency_time;
int ret;
@@ -1721,6 +1773,7 @@ static ssize_t tg_set_limit(struct kernfs_open_file *of,
v[1] = tg->bps_conf[WRITE][index];
v[2] = tg->iops_conf[READ][index];
v[3] = tg->iops_conf[WRITE][index];
+ tg_get_limits(tg, old_limits);
idle_time = tg->idletime_threshold_conf;
latency_time = tg->latency_target_conf;
@@ -1807,7 +1860,7 @@ static ssize_t tg_set_limit(struct kernfs_open_file *of,
tg->td->limit_index = LIMIT_LOW;
} else
tg->td->limit_index = LIMIT_MAX;
- tg_conf_updated(tg, index == LIMIT_LOW &&
+ tg_conf_updated(tg, old_limits, index == LIMIT_LOW &&
tg->td->limit_valid[LIMIT_LOW]);
ret = 0;
out_finish:
--
2.20.1
1
22

[PATCH openEuler-1.0-LTS 1/2] tmpfs: fix undefined-behaviour in shmem_reconfigure()
by Yongqiang Liu 12 Jul '22
by Yongqiang Liu 12 Jul '22
12 Jul '22
From: Luo Meng <luomeng12(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc3
commit d14f5efadd846dbde561bd734318de6a9e6b26e6
category: bugfix
bugzilla: 186471 https://gitee.com/openeuler/kernel/issues/I5DRKR
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------------------------------------
When shmem_reconfigure() calls __percpu_counter_compare(), the second
parameter is unsigned long long. But in the definition of
__percpu_counter_compare(), the second parameter is s64. So when
__percpu_counter_compare() executes abs(count - rhs), UBSAN shows the
following warning:
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
================================================================================
UBSAN: Undefined behaviour in lib/percpu_counter.c:209:6
signed integer overflow:
0 - -9223372036854775808 cannot be represented in type 'long long int'
CPU: 1 PID: 9636 Comm: syz-executor.2 Tainted: G ---------r- - 4.18.0 #2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
Call Trace:
__dump_stack home/install/linux-rh-3-10/lib/dump_stack.c:77 [inline]
dump_stack+0x125/0x1ae home/install/linux-rh-3-10/lib/dump_stack.c:117
ubsan_epilogue+0xe/0x81 home/install/linux-rh-3-10/lib/ubsan.c:159
handle_overflow+0x19d/0x1ec home/install/linux-rh-3-10/lib/ubsan.c:190
__percpu_counter_compare+0x124/0x140 home/install/linux-rh-3-10/lib/percpu_counter.c:209
percpu_counter_compare home/install/linux-rh-3-10/./include/linux/percpu_counter.h:50 [inline]
shmem_remount_fs+0x1ce/0x6b0 home/install/linux-rh-3-10/mm/shmem.c:3530
do_remount_sb+0x11b/0x530 home/install/linux-rh-3-10/fs/super.c:888
do_remount home/install/linux-rh-3-10/fs/namespace.c:2344 [inline]
do_mount+0xf8d/0x26b0 home/install/linux-rh-3-10/fs/namespace.c:2844
ksys_mount+0xad/0x120 home/install/linux-rh-3-10/fs/namespace.c:3075
__do_sys_mount home/install/linux-rh-3-10/fs/namespace.c:3089 [inline]
__se_sys_mount home/install/linux-rh-3-10/fs/namespace.c:3086 [inline]
__x64_sys_mount+0xbf/0x160 home/install/linux-rh-3-10/fs/namespace.c:3086
do_syscall_64+0xca/0x5c0 home/install/linux-rh-3-10/arch/x86/entry/common.c:298
entry_SYSCALL_64_after_hwframe+0x6a/0xdf
RIP: 0033:0x46b5e9
Code: 5d db fa ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 2b db fa ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007f54d5f22c68 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 000000000077bf60 RCX: 000000000046b5e9
RDX: 0000000000000000 RSI: 0000000020000000 RDI: 0000000000000000
RBP: 000000000077bf60 R08: 0000000020000140 R09: 0000000000000000
R10: 00000000026740a4 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ffd1fb1592f R14: 00007f54d5f239c0 R15: 000000000077bf6c
================================================================================
[akpm(a)linux-foundation.org: tweak error message text]
Link: https://lkml.kernel.org/r/20220513025225.2678727-1-luomeng12@huawei.com
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Cc: Hugh Dickins <hughd(a)google.com>
Cc: Yu Kuai <yukuai3(a)huawei.com>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Conflicts:
mm/shmem.c
Signed-off-by: ZhaoLong Wang <wangzhaolong1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/shmem.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/mm/shmem.c b/mm/shmem.c
index 8915a5b9ad0a..be91fb743426 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3605,6 +3605,10 @@ static int shmem_remount_fs(struct super_block *sb, int *flags, char *data)
spin_lock(&sbinfo->stat_lock);
inodes = sbinfo->max_inodes - sbinfo->free_inodes;
+ if (config.max_blocks > S64_MAX) {
+ pr_err("Number of blocks too large");
+ goto out;
+ }
if (percpu_counter_compare(&sbinfo->used_blocks, config.max_blocks) > 0)
goto out;
if (config.max_inodes < inodes)
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS] mm/sharepool: Check sp_is_enabled() before show spa_stat
by Yongqiang Liu 12 Jul '22
by Yongqiang Liu 12 Jul '22
12 Jul '22
From: Wang Wensheng <wangwensheng4(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GO4E
CVE: NA
--------------------------------
When we read file /proc/sharepool/spa_stat, we use sp_mapping_normal to
iterator all the normal sp_area. The global pointer sp_mapping_normal is
NULL if the sharepool feature is not enabled via kernel bootarg. This
leads to a null-pointer-dereference issue.
Signed-off-by: Wang Wensheng <wangwensheng4(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/share_pool.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/mm/share_pool.c b/mm/share_pool.c
index 893e5352bf01..661036a7df64 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -4365,6 +4365,9 @@ void spg_overview_show(struct seq_file *seq)
static int spa_stat_show(struct seq_file *seq, void *offset)
{
+ if (!sp_is_enabled())
+ return 0;
+
spg_overview_show(seq);
spa_overview_show(seq);
/* print the file header */
@@ -4425,6 +4428,9 @@ static int idr_proc_stat_cb(int id, void *p, void *data)
static int proc_stat_show(struct seq_file *seq, void *offset)
{
+ if (!sp_is_enabled())
+ return 0;
+
spg_overview_show(seq);
spa_overview_show(seq);
/* print the file header */
@@ -4474,6 +4480,9 @@ static int idr_proc_overview_cb(int id, void *p, void *data)
static int proc_overview_show(struct seq_file *seq, void *offset)
{
+ if (!sp_is_enabled())
+ return 0;
+
seq_printf(seq, "%-8s %-16s %-9s %-9s %-9s %-10s %-10s %-8s\n",
"PID", "COMM", "SP_ALLOC", "SP_K2U", "SP_RES", "Non-SP_RES",
"Non-SP_Shm", "VIRT");
--
2.25.1
1
0

12 Jul '22
From: Zheng Chongzhen <zhengchongzhen(a)wxiat.com>
Sunway inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I56OSP
--------------------------------
When porting ZX200 chipset driver on SW64 platform, we meet an IOMMU
exception show as follows:
iommu_interrupt, iommu_status = 0xc8014000dffe0000, devid 0xa00, dva 0xdffe0000,
1Unable to handle kernel paging request at virtual address 0000000000000040
CPU 0 swapper/0(0): Oops 0
pc = [<ffffffff81424b80>] ra = [<ffffffff81424b24>] ps = 0001 Not tainted
pc is at iommu_interrupt+0x140/0x3e0
ra is at iommu_interrupt+0xe4/0x3e0
v0 = 0000000000000051 t0 = c8014000dffe0000 t1 = 0000000000000000
t2 = 0000000000000000 t3 = 0000000000000000 t4 = 0000000000000001
t5 = 0000000000000001 t6 = 0000000000000000 t7 = ffffffff82948000
s0 = fff00003ffff0400 s1 = 0000000000000001 s2 = 0000000000000a00
s3 = 0000000000000a00 s4 = 00000000dffe0000 s5 = fff0000100680e80
s6 = ffffffff8294ba70
a0 = 0000000000000001 a1 = 0000000000000001 a2 = ffffffff8294b790
a3 = ffffffff8294b7a8 a4 = 0000000000000000 a5 = ffffffff82c5fb7a
t8 = 0000000000000001 t9 = fffffffffffcac48 t10 = 0000000000000000
t11= 0000000000000000 pv = ffffffff809f4f10 at = ffffffff82bff6c0
gp = ffffffff82c1f510 sp = (____ptrval____)
The root cause is that the device which raises iommu exception is not in the
device list, then reference a null sdev will cause a page fualt. To work
around this problem, we apply this patch by just clearing IOMMUEXCPT_STATUS
and then go on.
BTW, why the device raise IOMMU exception is not a valid device ID, it's a
puzzling problem.
Signed-off-by: Zheng Chongzhen <zhengchongzhen(a)wxiat.com>
Signed-off-by: Gu Zitao <guzitao(a)wxiat.com>
---
drivers/iommu/sw64/sunway_iommu.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/iommu/sw64/sunway_iommu.c b/drivers/iommu/sw64/sunway_iommu.c
index 5797adf8fbc5..b6c8f1272d28 100644
--- a/drivers/iommu/sw64/sunway_iommu.c
+++ b/drivers/iommu/sw64/sunway_iommu.c
@@ -648,10 +648,21 @@ irqreturn_t iommu_interrupt(int irq, void *dev)
type = (iommu_status >> 59) & 0x7;
devid = (iommu_status >> 37) & 0xffff;
dva = iommu_status & 0xffffffff;
- sdev = search_dev_data(devid);
- sdomain = sdev->domain;
pr_info("%s, iommu_status = %#lx, devid %#lx, dva %#lx, ",
__func__, iommu_status, devid, dva);
+
+ sdev = search_dev_data(devid);
+ if (sdev == NULL) {
+ pr_info("no such dev!!!\n");
+
+ iommu_status &= ~(1UL << 62);
+ write_piu_ior0(hose->node, hose->index,
+ IOMMUEXCPT_STATUS, iommu_status);
+
+ return IRQ_HANDLED;
+ }
+
+ sdomain = sdev->domain;
switch (type) {
case DTE_LEVEL1:
pr_info("invalid level1 dte, addr:%#lx, val:%#lx\n",
@@ -674,7 +685,6 @@ irqreturn_t iommu_interrupt(int irq, void *dev)
fetch_pte(sdomain, dva, PTE_LEVEL2_VAL));
iommu_status &= ~(1UL << 62);
- iommu_status = iommu_status | (1UL << 63);
write_piu_ior0(hose->node, hose->index,
IOMMUEXCPT_STATUS, iommu_status);
break;
--
2.17.1
1
20
Gu Zitao (2):
sw64: add ARCH_TRACEHOOK and regset support
sw64: rename CONFIG_HAVE_GENERIC_GUP to CONFIG_HAVE_FAST_GUP
Hang Xiaoqian (2):
sw64: change the value of physical_id in /proc/cpuinfo
sw64: remove unaligned count
He Chuyue (6):
sw64: simplify __phys_addr and __virt_addr_valid
sw64: check integrity for dtb passed by BIOS
sw64: fix some structs related to pt_regs
sw64: perf: add exclude_user and exclude_kernel support
sw64: perf: fix the number of supported raw events
sw64: perf: fix raw event count
He Sheng (36):
sw64: remove unused header files
sw64: uapi: generate some uapi headers from generic ones
sw64: uapi: include generic param.h
sw64: kapi: remove unused header-y from Kbuild
sw64: kapi: generate some kapi headers from generic ones
sw64: move ucontext.h to uapi
sw64: kapi: remove redudant SMP_CACHE_BYTES
sw64: kapi: remove unimplemented IPLs
sw64: kapi: include generic modules.h
sw64: remove VGA_HOSE things
sw64: clean up unused pci iounmap operation
sw64: kapi: use generic vga.h
sw64: remove unused IO_CONCAT
sw64: do not include sw64io.h in io.h
sw64: read host IO registers with rdio64 hmcall
sw64: map logical address with __va()
sw64: access IO space with readX/writeX
sw64: add fpu state save/restore interfaces
sw64: switch to generic fork like system calls
sw64: remove r9_r15 argument of dik_show_regs and die_if_kernel
sw64: remove switch_stack from entMM and entSys
sw64: remove switch_stack from signal handling
sw64: dump callee-saved registers from pt_regs
sw64: get blocked thread's frame pointer from thread_struct
sw64: remove switch_stack and allregs from entUna
sw64: remove switch_stack from __sw64_vcpu_run
sw64: remove other struct switch_stack things
sw64: access pt_regs with regoffsets where appropriate
sw64: move struct pt_regs to kapi ptrace.h
sw64: avoid copying thread_struct twice
sw64: simplify pgtable helpers
sw64: remove discontiguous memory support
sw64: merge user_fpsimd_state into thread_struct
sw64: fix ptrace.h with types.h and NOT __ASSEMBLY__
sw64: rewrite elf core copy interfaces
sw64: rename debugfs dir sw_64 to sw64
Lu Feifei (2):
sw64: add memhotplug support for guest os
sw64: add a misc device to chip_vt.dts for memory-hotplug
Mao Minkai (2):
sw64: fix __csum_and_copy when dest is not 8-byte aligned
sw64: fix simd version of memset
Min Fanlei (1):
sw64: kvm: fix incorrect page_ref_count() call
Wang Yuanheng (1):
sw64: kvm: enable binding_vcpu debug dynamically
Wu Liliu (4):
sw64: perf: add fp based stack trace support
sw64: reimplement show_stack() method
sw64: reimplement get_wchan()
sw64: reimplement save_stack_trace()
Xiong Aifei (2):
sw64: gpu: correct low-level mmio memset/memcpy direct calls
sw64: gpu: replace '_memset_c_io' by 'memset_io'
Xu Chenjiao (2):
sw64: fix compile errors for NOT chip3
sw64: pcie: fix lack of PME and AER interrupt service routines
Yang Qiang (2):
sw64: dtb: check address validity with physical address
sw64: pci: fix maximum bus number for pci scan
Zhao Yihan (1):
sw64: map address by OR operation in __va()
Zheng Chongzhen (2):
sw64: fix dma features for zx200
sw64: iommu: fix iommu interrupt handler
Zhou Qihang (1):
sw64: iommu: work around iova mapping on pci bars
Zhou Xuemei (1):
sw64: fix floating point register corruption
Zhu Donghong (4):
irqchip: add sw64 chip3 builtin LPC interrupt controller driver
sw64: add builtin LPC interrupt controller to chip3.dts
drivers/irqchip: add sw64 interrupt controller support
sw64: deliver a hot reset to Root Complex with plugin JMicron 585 card
arch/sw_64/Kconfig | 28 +-
arch/sw_64/boot/dts/chip3.dts | 16 +-
arch/sw_64/boot/dts/chip_vt.dts | 12 +
arch/sw_64/chip/chip3/Makefile | 1 -
arch/sw_64/chip/chip3/chip.c | 66 ++-
arch/sw_64/chip/chip3/i2c-lib.c | 41 +-
arch/sw_64/include/asm/Kbuild | 26 +-
arch/sw_64/include/asm/agp.h | 19 -
arch/sw_64/include/asm/asm-prototypes.h | 1 -
arch/sw_64/include/asm/cache.h | 4 +-
arch/sw_64/include/asm/compiler.h | 7 -
arch/sw_64/include/asm/console.h | 11 -
arch/sw_64/include/asm/div64.h | 7 -
arch/sw_64/include/asm/elf.h | 40 +-
arch/sw_64/include/asm/emergency-restart.h | 7 -
arch/sw_64/include/asm/exec.h | 7 -
arch/sw_64/include/asm/extable.h | 4 +
arch/sw_64/include/asm/floppy.h | 116 -----
arch/sw_64/include/asm/hcall.h | 1 +
arch/sw_64/include/asm/io.h | 33 --
arch/sw_64/include/asm/irq_impl.h | 3 +
arch/sw_64/include/asm/irq_regs.h | 7 -
arch/sw_64/include/asm/irqflags.h | 8 -
arch/sw_64/include/asm/kmap_types.h | 15 -
arch/sw_64/include/asm/kvm_asm.h | 3 +
arch/sw_64/include/asm/kvm_host.h | 11 +-
arch/sw_64/include/asm/local.h | 125 -----
arch/sw_64/include/asm/local64.h | 7 -
arch/sw_64/include/asm/memory.h | 1 +
arch/sw_64/include/asm/mmu_context.h | 8 +-
arch/sw_64/include/asm/mmzone.h | 30 --
arch/sw_64/include/asm/module.h | 10 +-
arch/sw_64/include/asm/page.h | 5 +-
arch/sw_64/include/asm/param.h | 11 -
arch/sw_64/include/asm/parport.h | 19 -
arch/sw_64/include/asm/pci.h | 4 +-
arch/sw_64/include/asm/pgalloc.h | 2 +-
arch/sw_64/include/asm/pgtable.h | 98 ++--
arch/sw_64/include/asm/preempt.h | 7 -
arch/sw_64/include/asm/processor.h | 49 +-
arch/sw_64/include/asm/ptrace.h | 54 +-
arch/sw_64/include/asm/seccomp.h | 15 -
arch/sw_64/include/asm/sections.h | 8 -
arch/sw_64/include/asm/segment.h | 7 -
arch/sw_64/include/asm/serial.h | 16 -
arch/sw_64/include/asm/shmparam.h | 7 -
arch/sw_64/include/asm/special_insns.h | 20 -
arch/sw_64/include/asm/stacktrace.h | 72 +++
arch/sw_64/include/asm/sw64_init.h | 1 +
arch/sw_64/include/asm/sw64io.h | 89 ++--
arch/sw_64/include/asm/switch_to.h | 37 +-
arch/sw_64/include/asm/thread_info.h | 5 +
arch/sw_64/include/asm/trace_clock.h | 10 -
arch/sw_64/include/asm/types.h | 7 -
arch/sw_64/include/asm/unaligned.h | 12 -
arch/sw_64/include/asm/vga.h | 85 ----
arch/sw_64/include/asm/wrperfmon.h | 8 +-
arch/sw_64/include/uapi/asm/Kbuild | 1 +
arch/sw_64/include/uapi/asm/console.h | 51 --
arch/sw_64/include/uapi/asm/ipcbuf.h | 7 -
arch/sw_64/include/uapi/asm/kvm_para.h | 7 -
arch/sw_64/include/uapi/asm/msgbuf.h | 28 --
arch/sw_64/include/uapi/asm/param.h | 9 +-
arch/sw_64/include/uapi/asm/perf_regs.h | 7 +
arch/sw_64/include/uapi/asm/poll.h | 7 -
arch/sw_64/include/uapi/asm/posix_types.h | 18 -
arch/sw_64/include/uapi/asm/ptrace.h | 76 +--
arch/sw_64/include/uapi/asm/sembuf.h | 23 -
arch/sw_64/include/uapi/asm/shmbuf.h | 39 --
arch/sw_64/include/uapi/asm/statfs.h | 9 -
arch/sw_64/include/uapi/asm/types.h | 28 --
arch/sw_64/include/{ => uapi}/asm/ucontext.h | 8 +-
arch/sw_64/kernel/Makefile | 7 +-
arch/sw_64/kernel/asm-offsets.c | 136 ++---
arch/sw_64/kernel/bindvcpu.c | 29 ++
arch/sw_64/kernel/core.c | 35 --
arch/sw_64/kernel/dup_print.c | 10 +-
arch/sw_64/kernel/entry.S | 467 +++++-------------
arch/sw_64/kernel/fpu.S | 102 ++++
arch/sw_64/kernel/kgdb.c | 14 +-
arch/sw_64/kernel/pci.c | 55 ++-
arch/sw_64/kernel/pci_impl.h | 2 +
arch/sw_64/kernel/perf_event.c | 100 +++-
arch/sw_64/kernel/process.c | 156 ++----
arch/sw_64/kernel/proto.h | 5 +-
arch/sw_64/kernel/ptrace.c | 245 ++++-----
arch/sw_64/kernel/setup.c | 19 +-
arch/sw_64/kernel/signal.c | 51 +-
arch/sw_64/kernel/stacktrace.c | 212 +++++++-
arch/sw_64/kernel/syscalls/syscall.tbl | 6 +-
arch/sw_64/kernel/traps.c | 182 ++-----
arch/sw_64/kernel/unaligned.c | 56 ---
arch/sw_64/kvm/Kconfig | 7 +
arch/sw_64/kvm/entry.S | 97 ++--
arch/sw_64/kvm/handle_exit.c | 5 +
arch/sw_64/kvm/kvm-sw64.c | 137 ++++-
arch/sw_64/lib/csum_partial_copy.c | 15 +-
arch/sw_64/lib/deep-memset.S | 5 +-
arch/sw_64/lib/iomap.c | 40 +-
arch/sw_64/mm/fault.c | 20 +-
arch/sw_64/mm/init.c | 25 +-
arch/sw_64/mm/physaddr.c | 30 +-
arch/sw_64/platform/platform_xuelang.c | 18 +-
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 12 +
drivers/gpu/drm/radeon/radeon_vce.c | 2 +-
drivers/gpu/drm/radeon/vce_v1_0.c | 5 +
drivers/iommu/sw64/sunway_iommu.c | 21 +-
drivers/irqchip/Kconfig | 26 +-
drivers/irqchip/Makefile | 3 +-
drivers/irqchip/irq-intc-v1.c | 104 ----
.../irqchip/irq-sw64-intc-v2.c | 64 ++-
drivers/irqchip/irq-sw64-lpc-intc.c | 137 +++++
drivers/mfd/lpc_sunway_chip3.c | 130 -----
drivers/misc/Kconfig | 8 +
drivers/misc/Makefile | 1 +
drivers/misc/sunway-ged.c | 253 ++++++++++
116 files changed, 2009 insertions(+), 2686 deletions(-)
delete mode 100644 arch/sw_64/include/asm/agp.h
delete mode 100644 arch/sw_64/include/asm/compiler.h
delete mode 100644 arch/sw_64/include/asm/console.h
delete mode 100644 arch/sw_64/include/asm/div64.h
delete mode 100644 arch/sw_64/include/asm/emergency-restart.h
delete mode 100644 arch/sw_64/include/asm/exec.h
delete mode 100644 arch/sw_64/include/asm/floppy.h
delete mode 100644 arch/sw_64/include/asm/irq_regs.h
delete mode 100644 arch/sw_64/include/asm/kmap_types.h
delete mode 100644 arch/sw_64/include/asm/local.h
delete mode 100644 arch/sw_64/include/asm/local64.h
delete mode 100644 arch/sw_64/include/asm/param.h
delete mode 100644 arch/sw_64/include/asm/parport.h
delete mode 100644 arch/sw_64/include/asm/preempt.h
delete mode 100644 arch/sw_64/include/asm/seccomp.h
delete mode 100644 arch/sw_64/include/asm/sections.h
delete mode 100644 arch/sw_64/include/asm/segment.h
delete mode 100644 arch/sw_64/include/asm/serial.h
delete mode 100644 arch/sw_64/include/asm/shmparam.h
delete mode 100644 arch/sw_64/include/asm/special_insns.h
create mode 100644 arch/sw_64/include/asm/stacktrace.h
delete mode 100644 arch/sw_64/include/asm/trace_clock.h
delete mode 100644 arch/sw_64/include/asm/types.h
delete mode 100644 arch/sw_64/include/asm/unaligned.h
delete mode 100644 arch/sw_64/include/asm/vga.h
delete mode 100644 arch/sw_64/include/uapi/asm/console.h
delete mode 100644 arch/sw_64/include/uapi/asm/ipcbuf.h
delete mode 100644 arch/sw_64/include/uapi/asm/kvm_para.h
delete mode 100644 arch/sw_64/include/uapi/asm/msgbuf.h
delete mode 100644 arch/sw_64/include/uapi/asm/poll.h
delete mode 100644 arch/sw_64/include/uapi/asm/posix_types.h
delete mode 100644 arch/sw_64/include/uapi/asm/sembuf.h
delete mode 100644 arch/sw_64/include/uapi/asm/shmbuf.h
delete mode 100644 arch/sw_64/include/uapi/asm/statfs.h
delete mode 100644 arch/sw_64/include/uapi/asm/types.h
rename arch/sw_64/include/{ => uapi}/asm/ucontext.h (56%)
create mode 100644 arch/sw_64/kernel/bindvcpu.c
delete mode 100644 arch/sw_64/kernel/core.c
create mode 100644 arch/sw_64/kernel/fpu.S
delete mode 100644 arch/sw_64/kernel/unaligned.c
delete mode 100644 drivers/irqchip/irq-intc-v1.c
rename arch/sw_64/chip/chip3/irq_chip.c => drivers/irqchip/irq-sw64-intc-v2.c (59%)
create mode 100644 drivers/irqchip/irq-sw64-lpc-intc.c
create mode 100644 drivers/misc/sunway-ged.c
--
2.17.1
1
50

[PATCH openEuler-5.10-LTS 1/7] arm64: Do not defer reserve_crashkernel() for platforms with no DMA memory zones
by Zheng Zengkai 11 Jul '22
by Zheng Zengkai 11 Jul '22
11 Jul '22
From: Vijay Balakrishna <vijayb(a)linux.microsoft.com>
stable inclusion
from stable-v5.10.110
commit a25864c5bc20966cdc5ba5eb65b74b9b1e9ec8d2
bugzilla: https://gitee.com/openeuler/kernel/issues/I574AL
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 031495635b4668f94e964e037ca93d0d38bfde58 upstream.
The following patches resulted in deferring crash kernel reservation to
mem_init(), mainly aimed at platforms with DMA memory zones (no IOMMU),
in particular Raspberry Pi 4.
commit 1a8e1cef7603 ("arm64: use both ZONE_DMA and ZONE_DMA32")
commit 8424ecdde7df ("arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges")
commit 0a30c53573b0 ("arm64: mm: Move reserve_crashkernel() into mem_init()")
commit 2687275a5843 ("arm64: Force NO_BLOCK_MAPPINGS if crashkernel reservation is required")
Above changes introduced boot slowdown due to linear map creation for
all the memory banks with NO_BLOCK_MAPPINGS, see discussion[1]. The proposed
changes restore crash kernel reservation to earlier behavior thus avoids
slow boot, particularly for platforms with IOMMU (no DMA memory zones).
Tested changes to confirm no ~150ms boot slowdown on our SoC with IOMMU
and 8GB memory. Also tested with ZONE_DMA and/or ZONE_DMA32 configs to confirm
no regression to deferring scheme of crash kernel memory reservation.
In both cases successfully collected kernel crash dump.
[1] https://lore.kernel.org/all/9436d033-579b-55fa-9b00-6f4b661c2dd7@linux.micr…
Signed-off-by: Vijay Balakrishna <vijayb(a)linux.microsoft.com>
Cc: stable(a)vger.kernel.org
Reviewed-by: Pasha Tatashin <pasha.tatashin(a)soleen.com>
Link: https://lore.kernel.org/r/1646242689-20744-1-git-send-email-vijayb@linux.mi…
[will: Add #ifdef CONFIG_KEXEC_CORE guards to fix 'crashk_res' references in allnoconfig build]
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yu Liao <liaoyu15(a)huawei.com>
Conflicts:
arch/arm64/mm/mmu.c
Reviewed-by: Wei Li <liwei391(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/arm64/mm/init.c | 36 ++++++++++++++++++++++++++++++++----
arch/arm64/mm/mmu.c | 26 ++++++++++++++++----------
2 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index f5bd046f9e19..5023c7e1f754 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -63,8 +63,34 @@ EXPORT_SYMBOL(memstart_addr);
* unless restricted on specific platforms (e.g. 30-bit on Raspberry Pi 4).
* In such case, ZONE_DMA32 covers the rest of the 32-bit addressable memory,
* otherwise it is empty.
+ *
+ * Memory reservation for crash kernel either done early or deferred
+ * depending on DMA memory zones configs (ZONE_DMA) --
+ *
+ * In absence of ZONE_DMA configs arm64_dma_phys_limit initialized
+ * here instead of max_zone_phys(). This lets early reservation of
+ * crash kernel memory which has a dependency on arm64_dma_phys_limit.
+ * Reserving memory early for crash kernel allows linear creation of block
+ * mappings (greater than page-granularity) for all the memory bank rangs.
+ * In this scheme a comparatively quicker boot is observed.
+ *
+ * If ZONE_DMA configs are defined, crash kernel memory reservation
+ * is delayed until DMA zone memory range size initilazation performed in
+ * zone_sizes_init(). The defer is necessary to steer clear of DMA zone
+ * memory range to avoid overlap allocation. So crash kernel memory boundaries
+ * are not known when mapping all bank memory ranges, which otherwise means
+ * not possible to exclude crash kernel range from creating block mappings
+ * so page-granularity mappings are created for the entire memory range.
+ * Hence a slightly slower boot is observed.
+ *
+ * Note: Page-granularity mapppings are necessary for crash kernel memory
+ * range for shrinking its size via /sys/kernel/kexec_crash_size interface.
*/
-phys_addr_t arm64_dma_phys_limit __ro_after_init;
+#if IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32)
+phys_addr_t __ro_after_init arm64_dma_phys_limit;
+#else
+phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1;
+#endif
#ifndef CONFIG_KEXEC_CORE
static void __init reserve_crashkernel(void)
@@ -173,8 +199,6 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
if (!arm64_dma_phys_limit)
arm64_dma_phys_limit = dma32_phys_limit;
#endif
- if (!arm64_dma_phys_limit)
- arm64_dma_phys_limit = PHYS_MASK + 1;
max_zone_pfns[ZONE_NORMAL] = max;
free_area_init(max_zone_pfns);
@@ -498,6 +522,9 @@ void __init arm64_memblock_init(void)
reserve_elfcorehdr();
+ if (!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32))
+ reserve_crashkernel();
+
high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
}
@@ -553,7 +580,8 @@ void __init bootmem_init(void)
* request_standard_resources() depends on crashkernel's memory being
* reserved, so do it here.
*/
- reserve_crashkernel();
+ if (IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32))
+ reserve_crashkernel();
reserve_quick_kexec();
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 00e89be15ad2..e76765354040 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -562,16 +562,6 @@ static void __init map_mem(pgd_t *pgdp)
PAGE_KERNEL, NO_CONT_MAPPINGS);
memblock_clear_nomap(kernel_start, kernel_end - kernel_start);
-#ifdef CONFIG_KEXEC_CORE
- if (crashk_res.end) {
- __map_memblock(pgdp, crashk_res.start,
- crashk_res.end + 1,
- PAGE_KERNEL,
- NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
- memblock_clear_nomap(crashk_res.start,
- resource_size(&crashk_res));
- }
-#endif
#ifdef CONFIG_KFENCE
/*
* Map the __kfence_pool at page granularity now.
@@ -584,6 +574,22 @@ static void __init map_mem(pgd_t *pgdp)
memblock_clear_nomap(__pa(__kfence_pool), KFENCE_POOL_SIZE);
}
#endif
+
+ /*
+ * Use page-level mappings here so that we can shrink the region
+ * in page granularity and put back unused memory to buddy system
+ * through /sys/kernel/kexec_crash_size interface.
+ */
+#ifdef CONFIG_KEXEC_CORE
+ if (crashk_res.end) {
+ __map_memblock(pgdp, crashk_res.start,
+ crashk_res.end + 1,
+ PAGE_KERNEL,
+ NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
+ memblock_clear_nomap(crashk_res.start,
+ resource_size(&crashk_res));
+ }
+#endif
}
void mark_rodata_ro(void)
--
2.20.1
1
6
From: Ard Biesheuvel <ardb(a)kernel.org>
stable inclusion
from stable-4.19.245
commit 0569702c238290924fc1c7c6954258aa4a5fd649
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5FNPY
CVE: NA
--------------------------------
[ Upstream commit 0dc14aa94ccd8ba35eb17a0f9b123d1566efd39e ]
The Spectre-BHB mitigations were inadvertently left disabled for
Cortex-A15, due to the fact that cpu_v7_bugs_init() is not called in
that case. So fix that.
Fixes: b9baf5c8c5c3 ("ARM: Spectre-BHB workaround")
Signed-off-by: Ard Biesheuvel <ardb(a)kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel(a)armlinux.org.uk>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
arch/arm/mm/proc-v7-bugs.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/mm/proc-v7-bugs.c b/arch/arm/mm/proc-v7-bugs.c
index 87a93b76e148..8c7d00cb63ef 100644
--- a/arch/arm/mm/proc-v7-bugs.c
+++ b/arch/arm/mm/proc-v7-bugs.c
@@ -299,6 +299,7 @@ void cpu_v7_ca15_ibe(void)
{
if (check_spectre_auxcr(this_cpu_ptr(&spectre_warned), BIT(0)))
cpu_v7_spectre_v2_init();
+ cpu_v7_spectre_bhb_init();
}
void cpu_v7_bugs_init(void)
--
2.25.1
1
33
From: Christoph Hellwig <hch(a)lst.de>
mainline inclusion
from mainline-v5.10-rc1
commit f4ad06f2bb8476548b08f89919ee65abc4e40212
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5ETAB
CVE: NA
-------------------------------------------------
Replace bd_invalidate with a new BDEV_NEED_PART_SCAN flag in a bd_flags
variable to better describe the condition.
Signed-off-by: Christoph Hellwig <hch(a)lst.de>
Reviewed-by: Josef Bacik <josef(a)toxicpanda.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn(a)wdc.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Conflicts:
fs/block_dev.c
include/linux/blk_types.h
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
block/genhd.c | 2 +-
block/partition-generic.c | 6 +++---
drivers/block/nbd.c | 8 ++++----
fs/block_dev.c | 12 ++++++------
include/linux/fs.h | 4 +++-
5 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/block/genhd.c b/block/genhd.c
index fc24384e2c85..afa3cf525f43 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -646,7 +646,7 @@ static void register_disk(struct device *parent, struct gendisk *disk)
if (!bdev)
goto exit;
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
err = blkdev_get(bdev, FMODE_READ, NULL);
if (err < 0)
goto exit;
diff --git a/block/partition-generic.c b/block/partition-generic.c
index 2261566741f4..ae3761fed854 100644
--- a/block/partition-generic.c
+++ b/block/partition-generic.c
@@ -546,7 +546,7 @@ int rescan_partitions(struct gendisk *disk, struct block_device *bdev)
if (disk->fops->revalidate_disk)
disk->fops->revalidate_disk(disk);
check_disk_size_change(disk, bdev, true);
- bdev->bd_invalidated = 0;
+ clear_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
if (!get_capacity(disk) || !(state = check_partition(disk, bdev)))
return 0;
if (IS_ERR(state)) {
@@ -662,7 +662,7 @@ int invalidate_partitions(struct gendisk *disk, struct block_device *bdev)
{
int res;
- if (!bdev->bd_invalidated)
+ if (!test_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags))
return 0;
res = drop_partitions(disk, bdev);
@@ -671,7 +671,7 @@ int invalidate_partitions(struct gendisk *disk, struct block_device *bdev)
set_capacity(disk, 0);
check_disk_size_change(disk, bdev, false);
- bdev->bd_invalidated = 0;
+ clear_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
/* tell userspace that the media / partition table may have changed */
kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index c2e5ba599418..f1986d8bb47c 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -317,7 +317,7 @@ static void nbd_size_update(struct nbd_device *nbd, bool start)
if (start)
set_blocksize(bdev, config->blksize);
} else
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
bdput(bdev);
}
kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE);
@@ -1343,7 +1343,7 @@ static int nbd_start_device_ioctl(struct nbd_device *nbd, struct block_device *b
return ret;
if (max_part)
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
mutex_unlock(&nbd->config_lock);
ret = wait_event_interruptible(config->recv_wq,
atomic_read(&config->recv_threads) == 0);
@@ -1518,9 +1518,9 @@ static int nbd_open(struct block_device *bdev, fmode_t mode)
refcount_set(&nbd->config_refs, 1);
refcount_inc(&nbd->refs);
mutex_unlock(&nbd->config_lock);
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
} else if (nbd_disconnected(nbd->config)) {
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
}
out:
mutex_unlock(&nbd_index_mutex);
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 9868b21b8ef9..f521b7cf907f 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -922,7 +922,7 @@ struct block_device *bdget(dev_t dev)
bdev->bd_inode = inode;
bdev->bd_block_size = i_blocksize(inode);
bdev->bd_part_count = 0;
- bdev->bd_invalidated = 0;
+ bdev->bd_flags = 0;
inode->i_mode = S_IFBLK;
inode->i_rdev = dev;
inode->i_bdev = bdev;
@@ -1404,7 +1404,7 @@ static void flush_disk(struct block_device *bdev, bool kill_dirty)
"resized disk %s\n",
bdev->bd_disk ? bdev->bd_disk->disk_name : "");
}
- bdev->bd_invalidated = 1;
+ set_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
}
/**
@@ -1457,7 +1457,7 @@ int revalidate_disk(struct gendisk *disk)
mutex_lock(&bdev->bd_mutex);
check_disk_size_change(disk, bdev, ret == 0);
- bdev->bd_invalidated = 0;
+ clear_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
mutex_unlock(&bdev->bd_mutex);
bdput(bdev);
return ret;
@@ -1520,7 +1520,7 @@ static void bdev_disk_changed(struct block_device *bdev, bool invalidate)
up_read(&disk->lookup_sem);
} else {
check_disk_size_change(bdev->bd_disk, bdev, !invalidate);
- bdev->bd_invalidated = 0;
+ clear_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags);
}
}
@@ -1605,7 +1605,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
* The latter is necessary to prevent ghost
* partitions on a removed medium.
*/
- if (bdev->bd_invalidated &&
+ if (test_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags) &&
(!ret || ret == -ENOMEDIUM))
bdev_disk_changed(bdev, ret == -ENOMEDIUM);
@@ -1642,7 +1642,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
if (bdev->bd_disk->fops->open)
ret = bdev->bd_disk->fops->open(bdev, mode);
/* the same as first opener case, read comment there */
- if (bdev->bd_invalidated &&
+ if (test_bit(BDEV_NEED_PART_SCAN, &bdev->bd_flags) &&
(!ret || ret == -ENOMEDIUM))
bdev_disk_changed(bdev, ret == -ENOMEDIUM);
if (ret)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index bcd2131ca06c..480936c2d938 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -459,6 +459,8 @@ struct address_space {
*/
struct request_queue;
+#define BDEV_NEED_PART_SCAN 0
+
struct block_device {
dev_t bd_dev; /* not a kdev_t - it's a search key */
int bd_openers;
@@ -479,7 +481,7 @@ struct block_device {
struct hd_struct * bd_part;
/* number of times partitions within this device have been opened. */
unsigned bd_part_count;
- int bd_invalidated;
+ unsigned long bd_flags;
struct gendisk * bd_disk;
struct request_queue * bd_queue;
struct backing_dev_info *bd_bdi;
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS 1/3] scsi: hisi_sas: Change DMA setup lock timeout to 2.5s
by Laibin Qiu 07 Jul '22
by Laibin Qiu 07 Jul '22
07 Jul '22
From: Xingui Yang <yangxingui(a)huawei.com>
driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5BXH1
CVE: NA
-------------------------------------------------------------------
DMA setup lock timeout protection is added when DMA setup frames are
received, it's a function outside the protocol and used to prevent SATA
disk I/Os from being delivered for a long time. The default value is 100ms
, it's too strict and easily triggered timeout when the disk is overloaded
or faulty. Based on the average I/O latency of 300 disks, we adjust the
value to 2.5s.
Signed-off-by: Xingui Yang <yangxingui(a)huawei.com>
Reviewed-by: kang fenglong <kangfenglong(a)huawei.com>
Acked-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index baae04adc8e4..91f02357d5b4 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -35,6 +35,7 @@
#define SATA_INITI_D2H_STORE_ADDR_HI 0x64
#define CFG_MAX_TAG 0x68
#define SAS_DMAC_OUTSTAND 0x6c
+#define TRANS_LOCK_ICT_TIME 0X70
#define HGC_SAS_TX_OPEN_FAIL_RETRY_CTRL 0x84
#define HGC_SAS_TXFAIL_RETRY_CTRL 0x88
#define HGC_GET_ITV_TIME 0x90
@@ -596,6 +597,8 @@ static void init_reg_v3_hw(struct hisi_hba *hisi_hba)
(u32)((1ULL << hisi_hba->queue_count) - 1));
hisi_sas_write32(hisi_hba, SAS_AXI_USER3, 0);
hisi_sas_write32(hisi_hba, CFG_MAX_TAG, 0xfff0400);
+ /* time / CLK_AHB = 2.5s / 2ns = 0x4A817C80 */
+ hisi_sas_write32(hisi_hba, TRANS_LOCK_ICT_TIME, 0x4A817C80);
hisi_sas_write32(hisi_hba, HGC_SAS_TXFAIL_RETRY_CTRL, 0x108);
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, 0x1);
hisi_sas_write32(hisi_hba, INT_COAL_EN, 0x1);
@@ -3061,6 +3064,7 @@ static const struct hisi_sas_debugfs_reg_lu debugfs_global_reg_lu[] = {
HISI_SAS_DEBUGFS_REG(SATA_INITI_D2H_STORE_ADDR_LO),
HISI_SAS_DEBUGFS_REG(SATA_INITI_D2H_STORE_ADDR_HI),
HISI_SAS_DEBUGFS_REG(CFG_MAX_TAG),
+ HISI_SAS_DEBUGFS_REG(TRANS_LOCK_ICT_TIME),
HISI_SAS_DEBUGFS_REG(HGC_SAS_TX_OPEN_FAIL_RETRY_CTRL),
HISI_SAS_DEBUGFS_REG(HGC_SAS_TXFAIL_RETRY_CTRL),
HISI_SAS_DEBUGFS_REG(HGC_GET_ITV_TIME),
--
2.25.1
1
2

[PATCH openEuler-5.10 01/40] mm,hwpoison: drain pcplists before bailing out for non-buddy zero-refcount page
by Zheng Zengkai 06 Jul '22
by Zheng Zengkai 06 Jul '22
06 Jul '22
From: Oscar Salvador <osalvador(a)suse.de>
mainline inclusion
from mainline-v5.11-rc1
commit 17e395b60f5b3dea204fcae60c7b38e84a00d87a
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5E2IG
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
Patch series "HWpoison: further fixes and cleanups", v5.
This patchset includes some more fixes and a cleanup.
Patch#2 and patch#3 are both fixes for taking a HWpoison page off a buddy
freelist, since having them there has proved to be bad (see [1] and
pathch#2's commit log). Patch#3 does the same for hugetlb pages.
[1] https://lkml.org/lkml/2020/9/22/565
This patch (of 4):
A page with 0-refcount and !PageBuddy could perfectly be a pcppage.
Currently, we bail out with an error if we encounter such a page, meaning
that we do not handle pcppages neither from hard-offline nor from
soft-offline path.
Fix this by draining pcplists whenever we find this kind of page and retry
the check again. It might be that pcplists have been spilled into the
buddy allocator and so we can handle it.
Link: https://lkml.kernel.org/r/20201013144447.6706-1-osalvador@suse.de
Link: https://lkml.kernel.org/r/20201013144447.6706-2-osalvador@suse.de
Signed-off-by: Oscar Salvador <osalvador(a)suse.de>
Acked-by: Naoya Horiguchi <naoya.horiguchi(a)nec.com>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
mm/memory-failure.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 63bacfcca122..de36b4aa4b6f 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -947,13 +947,13 @@ static int page_action(struct page_state *ps, struct page *p,
}
/**
- * get_hwpoison_page() - Get refcount for memory error handling:
+ * __get_hwpoison_page() - Get refcount for memory error handling:
* @page: raw error page (hit by memory error)
*
* Return: return 0 if failed to grab the refcount, otherwise true (some
* non-zero value.)
*/
-static int get_hwpoison_page(struct page *page)
+static int __get_hwpoison_page(struct page *page)
{
struct page *head = compound_head(page);
@@ -983,6 +983,26 @@ static int get_hwpoison_page(struct page *page)
return 0;
}
+static int get_hwpoison_page(struct page *p)
+{
+ int ret;
+ bool drained = false;
+
+retry:
+ ret = __get_hwpoison_page(p);
+ if (!ret && !is_free_buddy_page(p) && !page_count(p) && !drained) {
+ /*
+ * The page might be in a pcplist, so try to drain those
+ * and see if we are lucky.
+ */
+ drain_all_pages(page_zone(p));
+ drained = true;
+ goto retry;
+ }
+
+ return ret;
+}
+
/*
* Do all that is necessary to remove user space mappings. Unmap
* the pages and send SIGBUS to the processes if the data was dirty.
--
2.20.1
1
38

[PATCH openEuler-5.10 01/30] Documentation: Add documentation for Processor MMIO Stale Data
by Zheng Zengkai 06 Jul '22
by Zheng Zengkai 06 Jul '22
06 Jul '22
From: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
stable inclusion
from stable-v5.10.123
commit f8a85334a57e7842320476ff27be3a5f151da364
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5D5RS
CVE: CVE-2022-21123,CVE-2022-21125,CVE-2022-21166
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=…
--------------------------------
commit 4419470191386456e0b8ed4eb06a70b0021798a6 upstream
Add the admin guide for Processor MMIO stale data vulnerabilities.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Liao Chang <liaochang1(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
Documentation/admin-guide/hw-vuln/index.rst | 1 +
.../hw-vuln/processor_mmio_stale_data.rst | 246 ++++++++++++++++++
2 files changed, 247 insertions(+)
create mode 100644 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
diff --git a/Documentation/admin-guide/hw-vuln/index.rst b/Documentation/admin-guide/hw-vuln/index.rst
index ca4dbdd9016d..2adec1e6520a 100644
--- a/Documentation/admin-guide/hw-vuln/index.rst
+++ b/Documentation/admin-guide/hw-vuln/index.rst
@@ -15,3 +15,4 @@ are configurable at compile, boot or run time.
tsx_async_abort
multihit.rst
special-register-buffer-data-sampling.rst
+ processor_mmio_stale_data.rst
diff --git a/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
new file mode 100644
index 000000000000..9393c50b5afc
--- /dev/null
+++ b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
@@ -0,0 +1,246 @@
+=========================================
+Processor MMIO Stale Data Vulnerabilities
+=========================================
+
+Processor MMIO Stale Data Vulnerabilities are a class of memory-mapped I/O
+(MMIO) vulnerabilities that can expose data. The sequences of operations for
+exposing data range from simple to very complex. Because most of the
+vulnerabilities require the attacker to have access to MMIO, many environments
+are not affected. System environments using virtualization where MMIO access is
+provided to untrusted guests may need mitigation. These vulnerabilities are
+not transient execution attacks. However, these vulnerabilities may propagate
+stale data into core fill buffers where the data can subsequently be inferred
+by an unmitigated transient execution attack. Mitigation for these
+vulnerabilities includes a combination of microcode update and software
+changes, depending on the platform and usage model. Some of these mitigations
+are similar to those used to mitigate Microarchitectural Data Sampling (MDS) or
+those used to mitigate Special Register Buffer Data Sampling (SRBDS).
+
+Data Propagators
+================
+Propagators are operations that result in stale data being copied or moved from
+one microarchitectural buffer or register to another. Processor MMIO Stale Data
+Vulnerabilities are operations that may result in stale data being directly
+read into an architectural, software-visible state or sampled from a buffer or
+register.
+
+Fill Buffer Stale Data Propagator (FBSDP)
+-----------------------------------------
+Stale data may propagate from fill buffers (FB) into the non-coherent portion
+of the uncore on some non-coherent writes. Fill buffer propagation by itself
+does not make stale data architecturally visible. Stale data must be propagated
+to a location where it is subject to reading or sampling.
+
+Sideband Stale Data Propagator (SSDP)
+-------------------------------------
+The sideband stale data propagator (SSDP) is limited to the client (including
+Intel Xeon server E3) uncore implementation. The sideband response buffer is
+shared by all client cores. For non-coherent reads that go to sideband
+destinations, the uncore logic returns 64 bytes of data to the core, including
+both requested data and unrequested stale data, from a transaction buffer and
+the sideband response buffer. As a result, stale data from the sideband
+response and transaction buffers may now reside in a core fill buffer.
+
+Primary Stale Data Propagator (PSDP)
+------------------------------------
+The primary stale data propagator (PSDP) is limited to the client (including
+Intel Xeon server E3) uncore implementation. Similar to the sideband response
+buffer, the primary response buffer is shared by all client cores. For some
+processors, MMIO primary reads will return 64 bytes of data to the core fill
+buffer including both requested data and unrequested stale data. This is
+similar to the sideband stale data propagator.
+
+Vulnerabilities
+===============
+Device Register Partial Write (DRPW) (CVE-2022-21166)
+-----------------------------------------------------
+Some endpoint MMIO registers incorrectly handle writes that are smaller than
+the register size. Instead of aborting the write or only copying the correct
+subset of bytes (for example, 2 bytes for a 2-byte write), more bytes than
+specified by the write transaction may be written to the register. On
+processors affected by FBSDP, this may expose stale data from the fill buffers
+of the core that created the write transaction.
+
+Shared Buffers Data Sampling (SBDS) (CVE-2022-21125)
+----------------------------------------------------
+After propagators may have moved data around the uncore and copied stale data
+into client core fill buffers, processors affected by MFBDS can leak data from
+the fill buffer. It is limited to the client (including Intel Xeon server E3)
+uncore implementation.
+
+Shared Buffers Data Read (SBDR) (CVE-2022-21123)
+------------------------------------------------
+It is similar to Shared Buffer Data Sampling (SBDS) except that the data is
+directly read into the architectural software-visible state. It is limited to
+the client (including Intel Xeon server E3) uncore implementation.
+
+Affected Processors
+===================
+Not all the CPUs are affected by all the variants. For instance, most
+processors for the server market (excluding Intel Xeon E3 processors) are
+impacted by only Device Register Partial Write (DRPW).
+
+Below is the list of affected Intel processors [#f1]_:
+
+ =================== ============ =========
+ Common name Family_Model Steppings
+ =================== ============ =========
+ HASWELL_X 06_3FH 2,4
+ SKYLAKE_L 06_4EH 3
+ BROADWELL_X 06_4FH All
+ SKYLAKE_X 06_55H 3,4,6,7,11
+ BROADWELL_D 06_56H 3,4,5
+ SKYLAKE 06_5EH 3
+ ICELAKE_X 06_6AH 4,5,6
+ ICELAKE_D 06_6CH 1
+ ICELAKE_L 06_7EH 5
+ ATOM_TREMONT_D 06_86H All
+ LAKEFIELD 06_8AH 1
+ KABYLAKE_L 06_8EH 9 to 12
+ ATOM_TREMONT 06_96H 1
+ ATOM_TREMONT_L 06_9CH 0
+ KABYLAKE 06_9EH 9 to 13
+ COMETLAKE 06_A5H 2,3,5
+ COMETLAKE_L 06_A6H 0,1
+ ROCKETLAKE 06_A7H 1
+ =================== ============ =========
+
+If a CPU is in the affected processor list, but not affected by a variant, it
+is indicated by new bits in MSR IA32_ARCH_CAPABILITIES. As described in a later
+section, mitigation largely remains the same for all the variants, i.e. to
+clear the CPU fill buffers via VERW instruction.
+
+New bits in MSRs
+================
+Newer processors and microcode update on existing affected processors added new
+bits to IA32_ARCH_CAPABILITIES MSR. These bits can be used to enumerate
+specific variants of Processor MMIO Stale Data vulnerabilities and mitigation
+capability.
+
+MSR IA32_ARCH_CAPABILITIES
+--------------------------
+Bit 13 - SBDR_SSDP_NO - When set, processor is not affected by either the
+ Shared Buffers Data Read (SBDR) vulnerability or the sideband stale
+ data propagator (SSDP).
+Bit 14 - FBSDP_NO - When set, processor is not affected by the Fill Buffer
+ Stale Data Propagator (FBSDP).
+Bit 15 - PSDP_NO - When set, processor is not affected by Primary Stale Data
+ Propagator (PSDP).
+Bit 17 - FB_CLEAR - When set, VERW instruction will overwrite CPU fill buffer
+ values as part of MD_CLEAR operations. Processors that do not
+ enumerate MDS_NO (meaning they are affected by MDS) but that do
+ enumerate support for both L1D_FLUSH and MD_CLEAR implicitly enumerate
+ FB_CLEAR as part of their MD_CLEAR support.
+Bit 18 - FB_CLEAR_CTRL - Processor supports read and write to MSR
+ IA32_MCU_OPT_CTRL[FB_CLEAR_DIS]. On such processors, the FB_CLEAR_DIS
+ bit can be set to cause the VERW instruction to not perform the
+ FB_CLEAR action. Not all processors that support FB_CLEAR will support
+ FB_CLEAR_CTRL.
+
+MSR IA32_MCU_OPT_CTRL
+---------------------
+Bit 3 - FB_CLEAR_DIS - When set, VERW instruction does not perform the FB_CLEAR
+action. This may be useful to reduce the performance impact of FB_CLEAR in
+cases where system software deems it warranted (for example, when performance
+is more critical, or the untrusted software has no MMIO access). Note that
+FB_CLEAR_DIS has no impact on enumeration (for example, it does not change
+FB_CLEAR or MD_CLEAR enumeration) and it may not be supported on all processors
+that enumerate FB_CLEAR.
+
+Mitigation
+==========
+Like MDS, all variants of Processor MMIO Stale Data vulnerabilities have the
+same mitigation strategy to force the CPU to clear the affected buffers before
+an attacker can extract the secrets.
+
+This is achieved by using the otherwise unused and obsolete VERW instruction in
+combination with a microcode update. The microcode clears the affected CPU
+buffers when the VERW instruction is executed.
+
+Kernel reuses the MDS function to invoke the buffer clearing:
+
+ mds_clear_cpu_buffers()
+
+On MDS affected CPUs, the kernel already invokes CPU buffer clear on
+kernel/userspace, hypervisor/guest and C-state (idle) transitions. No
+additional mitigation is needed on such CPUs.
+
+For CPUs not affected by MDS or TAA, mitigation is needed only for the attacker
+with MMIO capability. Therefore, VERW is not required for kernel/userspace. For
+virtualization case, VERW is only needed at VMENTER for a guest with MMIO
+capability.
+
+Mitigation points
+-----------------
+Return to user space
+^^^^^^^^^^^^^^^^^^^^
+Same mitigation as MDS when affected by MDS/TAA, otherwise no mitigation
+needed.
+
+C-State transition
+^^^^^^^^^^^^^^^^^^
+Control register writes by CPU during C-state transition can propagate data
+from fill buffer to uncore buffers. Execute VERW before C-state transition to
+clear CPU fill buffers.
+
+Guest entry point
+^^^^^^^^^^^^^^^^^
+Same mitigation as MDS when processor is also affected by MDS/TAA, otherwise
+execute VERW at VMENTER only for MMIO capable guests. On CPUs not affected by
+MDS/TAA, guest without MMIO access cannot extract secrets using Processor MMIO
+Stale Data vulnerabilities, so there is no need to execute VERW for such guests.
+
+Mitigation control on the kernel command line
+---------------------------------------------
+The kernel command line allows to control the Processor MMIO Stale Data
+mitigations at boot time with the option "mmio_stale_data=". The valid
+arguments for this option are:
+
+ ========== =================================================================
+ full If the CPU is vulnerable, enable mitigation; CPU buffer clearing
+ on exit to userspace and when entering a VM. Idle transitions are
+ protected as well. It does not automatically disable SMT.
+ full,nosmt Same as full, with SMT disabled on vulnerable CPUs. This is the
+ complete mitigation.
+ off Disables mitigation completely.
+ ========== =================================================================
+
+If the CPU is affected and mmio_stale_data=off is not supplied on the kernel
+command line, then the kernel selects the appropriate mitigation.
+
+Mitigation status information
+-----------------------------
+The Linux kernel provides a sysfs interface to enumerate the current
+vulnerability status of the system: whether the system is vulnerable, and
+which mitigations are active. The relevant sysfs file is:
+
+ /sys/devices/system/cpu/vulnerabilities/mmio_stale_data
+
+The possible values in this file are:
+
+ .. list-table::
+
+ * - 'Not affected'
+ - The processor is not vulnerable
+ * - 'Vulnerable'
+ - The processor is vulnerable, but no mitigation enabled
+ * - 'Vulnerable: Clear CPU buffers attempted, no microcode'
+ - The processor is vulnerable, but microcode is not updated. The
+ mitigation is enabled on a best effort basis.
+ * - 'Mitigation: Clear CPU buffers'
+ - The processor is vulnerable and the CPU buffer clearing mitigation is
+ enabled.
+
+If the processor is vulnerable then the following information is appended to
+the above information:
+
+ ======================== ===========================================
+ 'SMT vulnerable' SMT is enabled
+ 'SMT disabled' SMT is disabled
+ 'SMT Host state unknown' Kernel runs in a VM, Host SMT state unknown
+ ======================== ===========================================
+
+References
+----------
+.. [#f1] Affected Processors
+ https://www.intel.com/content/www/us/en/developer/topic-technology/software…
--
2.20.1
1
29
Backport 5.10.110 LTS patches from upstream
arm64: Do not defer reserve_crashkernel() for platforms with no DMA memory zones
PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup"
can: m_can: m_can_tx_handler(): fix use after free of skb
openvswitch: Fixed nd target mask field in the flow dump.
docs: sysctl/kernel: add missing bit to panic_print
um: Fix uml_mconsole stop/go
ARM: dts: spear13xx: Update SPI dma properties
ARM: dts: spear1340: Update serial node properties
ASoC: topology: Allow TLV control to be either read or write
dt-bindings: spi: mxic: The interrupt property is not mandatory
dt-bindings: mtd: nand-controller: Fix a comment in the examples
dt-bindings: mtd: nand-controller: Fix the reg property description
bpf: Fix comment for helper bpf_current_task_under_cgroup()
bpf: Adjust BPF stack helper functions to accommodate skip > 0
mm/usercopy: return 1 from hardened_usercopy __setup() handler
mm/memcontrol: return 1 from cgroup.memory __setup() handler
ARM: 9187/1: JIVE: fix return value of __setup handler
mm/mmap: return 1 from stack_guard_gap __setup() handler
batman-adv: Check ptr for NULL before reducing its refcnt
ASoC: soc-compress: Change the check for codec_dai
staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on ethernet
proc: bootconfig: Add null pointer check
can: isotp: restore accidentally removed MSG_PEEK feature
platform/chrome: cros_ec_typec: Check for EC device
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data
riscv module: remove (NOLOAD)
io_uring: fix memory leak of uid in files registration
ARM: iop32x: offset IRQ numbers by 1
ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()
pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR()
watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function
pinctrl: pinconf-generic: Print arguments for bias-pull-*
watch_queue: Free the page array when watch_queue is dismantled
crypto: arm/aes-neonbs-cbc - Select generic cbc and aes
mailbox: imx: fix wakeup failure from freeze mode
rxrpc: Fix call timer start racing with call destruction
gfs2: Make sure FITRIM minlen is rounded up to fs block size
rtc: check if __rtc_read_time was successful
XArray: Update the LRU list in xas_split()
can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error value
can: mcba_usb: properly check endpoint type
XArray: Fix xas_create_range() when multi-order entry present
wireguard: socket: ignore v6 endpoints when ipv6 is disabled
wireguard: socket: free skb in send6 when ipv6 is disabled
wireguard: queueing: use CFI-safe ptr_ring cleanup function
ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM
KVM: SVM: fix panic on out-of-bounds guest IRQ
KVM: x86: fix sending PV IPI
KVM: Prevent module exit until all VMs are freed
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated
platform: chrome: Split trace include file
scsi: qla2xxx: Use correct feature type field during RFF_ID processing
scsi: qla2xxx: Reduce false trigger to login
scsi: qla2xxx: Fix N2N inconsistent PLOGI
scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests
scsi: qla2xxx: Fix hang due to session stuck
scsi: qla2xxx: Fix incorrect reporting of task management failure
scsi: qla2xxx: Fix disk failure to rediscover
scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()
scsi: qla2xxx: Check for firmware dump already collected
scsi: qla2xxx: Add devids and conditionals for 28xx
scsi: qla2xxx: Fix device reconnect in loop topology
scsi: qla2xxx: Fix warning for missing error code
scsi: qla2xxx: Fix wrong FDMI data for 64G adapter
scsi: qla2xxx: Fix scheduling while atomic
scsi: qla2xxx: Fix stuck session in gpdb
powerpc: Fix build errors with newer binutils
powerpc/lib/sstep: Fix build errors with newer binutils
powerpc/lib/sstep: Fix 'sthcx' instruction
powerpc/kasan: Fix early region not updated correctly
KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP MMU
ALSA: hda/realtek: Add alc256-samsung-headphone fixup
media: atomisp: fix bad usage at error handling logic
mmc: host: Return an error when ->enable_sdio_irq() ops is missing
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
media: Revert "media: em28xx: add missing em28xx_close_extension"
video: fbdev: sm712fb: Fix crash in smtcfb_write()
ARM: mmp: Fix failure to remove sram device
ARM: tegra: tamonten: Fix I2C3 pad setting
lib/test_lockup: fix kernel pointer check for separate address spaces
uaccess: fix type mismatch warnings from access_ok()
media: cx88-mpeg: clear interrupt status register before streaming video
ASoC: soc-core: skip zero num_dai component in searching dai name
ARM: dts: bcm2711: Add the missing L1/L2 cache information
video: fbdev: udlfb: replace snprintf in show functions with sysfs_emit
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of
snprintf()
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf()
arm64: defconfig: build imx-sdma as a module
ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk
ARM: ftrace: avoid redundant loads or clobbering IP
media: atomisp: fix dummy_ptr check to avoid duplicate active_bo
media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2 regulator off
on some boards
ASoC: madera: Add dependencies on MFD
ARM: dts: bcm2837: Add the missing L1/L2 cache information
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit
video: fbdev: cirrusfb: check pixclock to avoid divide by zero
video: fbdev: w100fb: Reset global state
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow
media: ir_toy: free before error exiting
media: staging: media: zoran: fix various V4L2 compliance errors
media: staging: media: zoran: calculate the right buffer number for
zoran_reap_stat_com
media: staging: media: zoran: move videodev alloc
ntfs: add sanity check on allocation size
f2fs: compress: fix to print raw data size in error path of lz4 decompression
NFSD: Fix nfsd_breaker_owns_lease() return values
f2fs: fix to do sanity check on curseg->alloc_type
ext4: don't BUG if someone dirty pages without asking ext4 first
ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit
ext4: correct cluster len and clusters changed accounting in ext4_mb_mark_bb
locking/lockdep: Iterate lock_classes directly when reading lockdep files
spi: tegra20: Use of_device_get_match_data()
nvme-tcp: lockdep: annotate in-kernel sockets
parisc: Fix handling off probe non-access faults
PM: core: keep irq flags in device_pm_check_callbacks()
ACPI/APEI: Limit printable size of BERT table data
Revert "Revert "block, bfq: honor already-setup queue merges""
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3
ACPICA: Avoid walking the ACPI Namespace if it is not there
fs/binfmt_elf: Fix AT_PHDR for unusual ELF files
irqchip/nvic: Release nvic_base upon failure
irqchip/qcom-pdc: Fix broken locking
Fix incorrect type in assignment of ipv6 port for audit
loop: use sysfs_emit() in the sysfs xxx show()
selinux: allow FIOCLEX and FIONCLEX with policy capability
selinux: use correct type for context length
pinctrl: npcm: Fix broken references to chip->parent_device
gcc-plugins/stackleak: Exactly match strings instead of prefixes
regulator: rpi-panel: Handle I2C errors/timing to the Atmel
LSM: general protection fault in legacy_parse_param
fs: fix fd table size alignment properly
lib/test: use after free in register_test_dev_kmod()
fs: fd tables have to be multiples of BITS_PER_LONG
net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator
NFSv4/pNFS: Fix another issue with a list iterator pointing to the head
qlcnic: dcb: default to returning -EOPNOTSUPP
selftests: test_vxlan_under_vrf: Fix broken test case
net: phy: broadcom: Fix brcm_fet_config_init()
net: enetc: report software timestamping via SO_TIMESTAMPING
xen: fix is_xen_pmu()
clk: Initialize orphan req_rate
clk: qcom: gcc-msm8994: Fix gpll4 width
kdb: Fix the putarea helper function
NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options
jfs: fix divide error in dbNextAG
driver core: dd: fix return value of __setup handler
firmware: google: Properly state IOMEM dependency
kgdbts: fix return value of __setup handler
serial: 8250: fix XOFF/XON sending when DMA is used
kgdboc: fix return value of __setup handler
tty: hvc: fix return value of __setup handler
pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe
pinctrl: mediatek: paris: Skip custom extra pin config dump for virtual GPIOs
pinctrl: mediatek: paris: Fix pingroup pin config state readback
pinctrl: mediatek: paris: Fix "argument" argument type for mtk_pinconf_get()
pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init
staging: mt7621-dts: fix GB-PC2 devicetree
staging: mt7621-dts: fix pinctrl properties for ethernet
staging: mt7621-dts: fix formatting
staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree
NFS: remove unneeded check in decode_devicenotify_args()
clk: tegra: tegra124-emc: Fix missing put_device() call in emc_ensure_emc_driver
clk: clps711x: Terminate clk_div_table with sentinel element
clk: loongson1: Terminate clk_div_table with sentinel element
clk: actions: Terminate clk_div_table with sentinel element
nvdimm/region: Fix default alignment for small regions
remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region
remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region
remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region
dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma
clk: qcom: clk-rcg2: Update the frac table for pixel clock
clk: qcom: clk-rcg2: Update logic to calculate D value for RCG
clk: at91: sama7g5: fix parents of PDMCs' GCLK
clk: imx7d: Remove audio_mclk_root_clk
dma-debug: fix return value of __setup handlers
NFS: Return valid errors from nfs2/3_decode_dirent()
habanalabs: Add check for pci_enable_device
iio: adc: Add check for devm_request_threaded_irq
serial: 8250: Fix race condition in RTS-after-send handling
NFS: Use of mapping_set_error() results in spurious errors
serial: 8250_lpss: Balance reference count for PCI DMA device
serial: 8250_mid: Balance reference count for PCI DMA device
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})
clk: qcom: ipq8074: Use floor ops for SDCC1 clock
pinctrl: renesas: checker: Fix miscalculation of number of states
pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel
staging:iio:adc:ad7280a: Fix handing of device address bit reversing.
iio: mma8452: Fix probe failing when an i2c_device_id is used
clk: qcom: ipq8074: fix PCI-E clock oops
soundwire: intel: fix wrong register name in intel_shim_wake
cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse
misc: alcor_pci: Fix an error handling path
fsi: Aspeed: Fix a potential double free
fsi: aspeed: convert to devm_platform_ioremap_resource
pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add()
mxser: fix xmit_buf leak in activate when LSR == 0xff
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
tipc: fix the timer expires after interval 100ms
openvswitch: always update flow key after nat
tcp: ensure PMTU updates are processed during fastopen
net: bcmgenet: Use stronger register read/writes to assure ordering
PCI: Avoid broken MSI on SB600 USB devices
selftests/bpf/test_lirc_mode2.sh: Exit with proper code
i2c: mux: demux-pinctrl: do not deactivate a master that is not active
i2c: meson: Fix wrong speed use from probe
af_netlink: Fix shift out of bounds in group mask calculation
ipv4: Fix route lookups when handling ICMP redirects and PMTU updates
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt
Bluetooth: call hci_le_conn_failed with hdev lock in hci_le_conn_failed
selftests/bpf: Fix error reporting from sock_fields programs
bareudp: use ipv6_mod_enabled to check if IPv6 enabled
can: isotp: support MSG_TRUNC flag when reading from socket
can: isotp: return -EADDRNOTAVAIL when reading from unbound socket
USB: storage: ums-realtek: fix error code in rts51x_read_mem()
samples/bpf, xdpsock: Fix race when running for fix duration of time
RDMA/mlx5: Fix memory leak in error flow for subscribe event routine
mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init
MIPS: pgalloc: fix memory leak caused by pgd_free()
MIPS: RB532: fix return value of __setup handler
mips: cdmm: Fix refcount leak in mips_cdmm_phys_base
ath10k: Fix error handling in ath10k_setup_msa_resources
vxcan: enable local echo for sent CAN frames
powerpc: 8xx: fix a return value error in mpc8xx_pic_init
platform/x86: huawei-wmi: check the return value of device_create_file()
selftests/bpf: Make test_lwt_ip_encap more stable and faster
libbpf: Unmap rings when umem deleted
mfd: mc13xxx: Add check for mc13xxx_irq_request
powerpc/sysdev: fix incorrect use to determine if list is empty
mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n
net: axienet: fix RX ring refill allocation failure handling
IB/hfi1: Allow larger MTU without AIP
power: supply: wm8350-power: Add missing free in free_charger_irq
power: supply: wm8350-power: Handle error for wm8350_register_irq
i2c: xiic: Make bus names unique
hv_balloon: rate-limit "Unhandled message" warning
KVM: x86/emulator: Defer not-present segment check in
__load_segment_descriptor()
KVM: x86: Fix emulation in writing cr8
powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit
powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties()
libbpf: Skip forward declaration when counting duplicated type names
gpu: host1x: Fix a memory leak in 'host1x_remove()'
bpf, arm64: Feed byte-offset into bpf line info
bpf, arm64: Call build_prologue() first in first JIT pass
drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt
scsi: hisi_sas: Change permission of parameter prot_mask
power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong false return
drm/tegra: Fix reference leak in tegra_dsi_ganged_probe
ext2: correct max file size computing
TOMOYO: fix __setup handlers return values
drm/amd/display: Remove vupdate_int_entry definition
RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR
scsi: pm8001: Fix abort all task initialization
scsi: pm8001: Fix NCQ NON DATA command completion handling
scsi: pm8001: Fix NCQ NON DATA command task initialization
scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req()
scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update()
scsi: pm8001: Fix le32 values handling in pm80xx_set_sas_protocol_timer_config()
scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config()
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()
dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS
drm/msm/dpu: fix dp audio condition
drm/msm/dpu: add DSPP blocks teardown
drm/msm/dp: populate connector of struct dp_panel
iwlwifi: mvm: Fix an error code in iwl_mvm_up()
iwlwifi: Fix -EIO error code that is never returned
dax: make sure inodes are flushed before destroy cache
IB/cma: Allow XRC INI QPs to set their local ACK timeout
drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug
drm/amd/pm: enable pm sysfs write for one VF mode
iommu/ipmmu-vmsa: Check for error num after setting mask
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init
drm/bridge: dw-hdmi: use safe format when first in bridge chain
PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge
scripts/dtc: Call pkg-config POSIXly correct
net: dsa: mv88e6xxx: Enable port policy support on 6097
mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update
mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update
mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv
mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in sta mode
powerpc/perf: Don't use perf_hw_context for trace IMC PMU
KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init
powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch
ray_cs: Check ioremap return value
power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe
i40e: respect metadata on XSK Rx to skb
i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb
KVM: PPC: Fix vmx/vsx mixup in mmio emulation
RDMA/core: Set MR type in ib_reg_user_mr
ath9k_htc: fix uninit value bugs
drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq function
drm/amd/display: Fix a NULL pointer dereference in
amdgpu_dm_connector_add_common_modes()
drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl()
ionic: fix type complaint in ionic_dev_cmd_clean()
drm/edid: Don't clear formats if using deep color
mtd: rawnand: gpmi: fix controller timings setting
mtd: onenand: Check for error irq
Bluetooth: hci_serdev: call init_rwsem() before p->open()
udmabuf: validate ubuf->pagecount
libbpf: Fix possible NULL pointer dereference when destroying skeleton
drm/panfrost: Check for error num after setting mask
ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern
drm: bridge: adv7511: Fix ADV7535 HPD enablement
drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe
drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe
drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev
drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops
ARM: configs: multi_v5_defconfig: re-enable CONFIG_V4L_PLATFORM_DRIVERS
ASoC: codecs: wcd934x: Add missing of_node_put() in wcd934x_codec_parse_data
ASoC: msm8916-wcd-analog: Fix error handling in pm8916_wcd_analog_spmi_probe
ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe
ASoC: atmel: sam9x5_wm8731: use devm_snd_soc_register_card()
mmc: davinci_mmc: Handle error for clk_enable
ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in
msm8916_wcd_digital_probe
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()
ASoC: fsl_spdif: Disable TX clock when stop
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
ASoC: SOF: Add missing of_node_put() in imx8m_probe
ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in rockchip_i2s_probe
ASoC: rockchip: i2s: Use devm_platform_get_and_ioremap_resource()
ivtv: fix incorrect device_caps for ivtvfb
media: saa7134: fix incorrect use to determine if list is empty
media: saa7134: convert list_for_each to entry variant
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of
ASoC: fsi: Add check for clk_enable
ASoC: wm8350: Handle error for wm8350_register_irq
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe
media: vidtv: Check for null return of vzalloc
media: stk1160: If start stream fails, return buffers with VB2_BUF_STATE_QUEUED
m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are defined
arm64: dts: rockchip: Fix SDIO regulator supply properties on rk3399-firefly
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transaction
memory: emif: check the pointer temp in get_device_details()
memory: emif: Add check for setup_interrupts
ASoC: soc-compress: prevent the potentially use of null pointer
ASoC: dwc-i2s: Handle errors for clk_enable
ASoC: atmel_ssc_dai: Handle errors for clk_enable
ASoC: mxs-saif: Handle errors for clk_enable
printk: fix return value of printk.devkmsg __setup handler
arm64: dts: broadcom: Fix sata nodename
arm64: dts: ns2: Fix spi-cpol and spi-cpha property
ALSA: spi: Add check for clk_enable()
ASoC: ti: davinci-i2s: Add check for clk_enable()
ASoC: rt5663: check the return value of devm_kzalloc() in rt5663_parse_dp()
uaccess: fix nios2 and microblaze get_user_8()
ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put
media: cedrus: h264: Fix neighbour info buffer size
media: cedrus: H265: Fix neighbour info buffer size
media: usb: go7007: s2250-board: fix leak in probe()
media: em28xx: initialize refcount before kref_get
media: video/hdmi: handle short reads of hdmi info frame.
ARM: dts: imx: Add missing LVDS decoder on M53Menlo
ARM: dts: sun8i: v3s: Move the csi1 block to follow address order
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL is not
defined
arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc
arm64: dts: qcom: sdm845: fix microphone bias properties and values
soc: qcom: aoss: remove spurious IRQF_ONESHOT flags
soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem
soc: qcom: rpmpd: Check for null return of devm_kcalloc
ARM: dts: qcom: ipq4019: fix sleep clock
firmware: qcom: scm: Remove reassignment to desc following initializer
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()
video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe()
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()
video: fbdev: controlfb: Fix COMPILE_TEST build
video: fbdev: controlfb: Fix set but not used warnings
video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200 to avoid
black screen
media: aspeed: Correct value for h-total-pixels
media: hantro: Fix overfill bottom register field name
media: meson: vdec: potential dereference of null pointer
media: coda: Fix missing put_device() call in coda_get_vdoa_data
ASoC: generic: simple-card-utils: remove useless assignment
ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting
media: bttv: fix WARNING regression on tunerless devices
media: mtk-vcodec: potential dereference of null pointer
media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls
media: staging: media: zoran: fix usage of vb2_dma_contig_set_max_seg_size
kunit: make kunit_test_timeout compatible with comment
selftests, x86: fix how check_cc.sh is being invoked
f2fs: fix compressed file start atomic write may cause data corruption
f2fs: compress: remove unneeded read when rewrite whole cluster
btrfs: fix unexpected error path when reflinking an inline extent
f2fs: fix to avoid potential deadlock
nfsd: more robust allocation failure handling in nfsd_file_cache_init
f2fs: fix missing free nid in f2fs_handle_failed_inode
perf/x86/intel/pt: Fix address filter config for 32-bit kernel
perf/core: Fix address filter parser for multiple filters
rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs()
sched/core: Export pelt_thermal_tp
sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa
f2fs: fix to enable ATGC correctly via gc_idle sysfs interface
watch_queue: Actually free the watch
watch_queue: Fix NULL dereference in error cleanup
io_uring: terminate manual loop iterator loop correctly for non-vecs
clocksource: acpi_pm: fix return value of __setup handler
hwmon: (pmbus) Add Vin unit off handling
hwrng: nomadik - Change clk_disable to clk_disable_unprepare
amba: Make the remove callback return void
vfio: platform: simplify device removal
crypto: ccree - Fix use after free in cc_cipher_exit()
crypto: ccp - ccp_dmaengine_unregister release dma channels
ACPI: APEI: fix return value of __setup handlers
clocksource/drivers/timer-of: Check return value of of_iomap in
timer_of_base_init()
clocksource/drivers/timer-microchip-pit64b: Use notrace
clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts
clocksource/drivers/exynos_mct: Refactor resources allocation
clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix
crypto: vmx - add missing dependencies
crypto: amlogic - call finalize with bh disabled
crypto: sun8i-ce - call finalize with bh disabled
crypto: sun8i-ss - call finalize with bh disabled
hwrng: atmel - disable trng on failure path
spi: spi-zynqmp-gqspi: Handle error for dma_set_mask
PM: suspend: fix return value of __setup handler
PM: hibernate: fix __setup handler error handling
block: don't delete queue kobject before its children
nvme: cleanup __nvme_check_ids
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING
hwmon: (pmbus) Add mutex to regulator ops
spi: pxa2xx-pci: Balance reference count for PCI DMA device
crypto: ccree - don't attempt 0 len DMA mappings
EVM: fix the evm= __setup handler return value
audit: log AUDIT_TIME_* records only from rules
crypto: rockchip - ECB does not need IV
selftests/x86: Add validity check and allow field splitting
arm64/mm: avoid fixmap race condition when create pud mapping
spi: tegra114: Add missing IRQ check in tegra_spi_probe
thermal: int340x: Check for NULL after calling kmemdup()
crypto: mxs-dcp - Fix scatterlist processing
crypto: authenc - Fix sleep in atomic context in decrypt_tail
crypto: sun8i-ss - really disable hash on A80
hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER
hwrng: cavium - Check health status while reading random data
selinux: check return value of sel_make_avc_files
regulator: qcom_smd: fix for_each_child.cocci warnings
PCI: xgene: Revert "PCI: xgene: Fix IB window setup"
PCI: pciehp: Clear cmd_busy bit in polling mode
drm/i915/gem: add missing boundary check in vm_access
brcmfmac: pcie: Fix crashes due to early IRQs
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio
brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path
brcmfmac: firmware: Allocate space for default boardrev in nvram
xtensa: fix xtensa_wsr always writing 0
xtensa: fix stop_machine_cpuslocked call in patch_text
media: davinci: vpif: fix unbalanced runtime PM enable
media: davinci: vpif: fix unbalanced runtime PM get
media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC
DEC: Limit PMAX memory probing to R3k systems
crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete()
crypto: rsa-pkcs1pad - restore signature length check
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist
crypto: rsa-pkcs1pad - only allow with rsa
exec: Force single empty string when argv is empty
lib/raid6/test: fix multiple definition linking error
thermal: int340x: Increase bitmap size
pstore: Don't use semaphores in always-atomic-context code
carl9170: fix missing bit-wise or operator for tx_params
mgag200 fix memmapsl configuration in GCTL6 register
ARM: dts: exynos: add missing HDMI supplies on SMDK5420
ARM: dts: exynos: add missing HDMI supplies on SMDK5250
ARM: dts: exynos: fix UART3 pins configuration in Exynos5250
ARM: dts: at91: sama5d2: Fix PMERRLOC resource size
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix
video: fbdev: sm712fb: Fix crash in smtcfb_read()
drm/edid: check basic audio support on CEA extension block
block: limit request dispatch loop duration
mailbox: tegra-hsp: Flush whole channel
ext4: fix fs corruption when tring to remove a non-empty directory with IO error
ext4: fix ext4_fc_stats trace point
coredump: Also dump first pages of non-executable ELF libraries
ACPI: properties: Consistently return -ENOENT if there are no more references
arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs
arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs
arm64: signal: nofpsimd: Do not allocate fp/simd context when not available
udp: call udp_encap_enable for v6 sockets when enabling encap
powerpc/kvm: Fix kvm_use_magic_page
can: isotp: sanitize CAN ID checks in isotp_bind()
drbd: fix potential silent data corruption
dm integrity: set journal entry unused when shrinking device
mm/kmemleak: reset tag when compare object pointer
mm,hwpoison: unmap poisoned page before invalidation
Revert "mm: madvise: skip unmapped vma holes passed to process_madvise"
mm: madvise: return correct bytes advised with process_madvise
mm: madvise: skip unmapped vma holes passed to process_madvise
ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020
ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock
ALSA: hda: Avoid unsol event during RPM suspending
ALSA: cs4236: fix an incorrect NULL check on list iterator
cifs: fix NULL ptr dereference in smb2_ioctl_query_info()
cifs: prevent bad output lengths in smb2_ioctl_query_info()
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"
riscv: Increase stack size under KASAN
riscv: Fix fill_callchain return value
qed: display VF trust config
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands
mempolicy: mbind_range() set_policy() after vma_merge()
mm: invalidate hwpoison page cache page in fault path
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
mtd: rawnand: protect access to rawnand devices while in suspend
spi: mxic: Fix the transmit path
pinctrl: samsung: drop pin banks references on error paths
remoteproc: Fix count check in rproc_coredump_write()
f2fs: fix to do sanity check on .cp_pack_total_block_count
f2fs: quota: fix loop condition at f2fs_quota_sync()
f2fs: fix to unlock page correctly in error path of is_alive()
NFSD: prevent integer overflow on 32 bit systems
NFSD: prevent underflow in nfssvc_decode_writeargs()
SUNRPC: avoid race between mod_timer() and del_timer_sync()
HID: intel-ish-hid: Use dma_alloc_coherent for firmware update
firmware: stratix10-svc: add missing callback parameter on RSU
Documentation: update stable tree link
Documentation: add link to stable release candidate tree
KEYS: fix length validation in keyctl_pkey_params_get_2()
clk: uniphier: Fix fixed-rate initialization
greybus: svc: fix an error handling bug in gb_svc_hello()
iio: inkern: make a best effort on offset calculation
iio: inkern: apply consumer scale when no channel scale is available
iio: inkern: apply consumer scale on IIO_VAL_INT cases
iio: afe: rescale: use s64 for temporary scale calculations
coresight: Fix TRCCONFIGR.QE sysfs interface
mei: avoid iterator usage outside of list_for_each_entry
mei: me: add Alder Lake N device id.
xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()
xhci: make xhci_handshake timeout for xhci_reset() adjustable
xhci: fix runtime PM imbalance in USB2 resume
xhci: fix garbage USBSTS being logged in some cases
USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c
virtio-blk: Use blk_validate_block_size() to validate block size
tpm: fix reference counting for struct tpm_chip
iommu/iova: Improve 32-bit free space estimate
locking/lockdep: Avoid potential access of invalid memory in lock_class
net: dsa: microchip: add spi_device_id tables
Input: zinitix - do not report shadow fingers
spi: Fix erroneous sgs value with min_t()
Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"
net:mcf8390: Use platform_get_irq() to get the interrupt
spi: Fix invalid sgs value
gpio: Revert regression in sysfs-gpio (gpiolib.c)
ethernet: sun: Free the coherent when failing in probing
tools/virtio: fix virtio_test execution
vdpa/mlx5: should verify CTRL_VQ feature exists for MQ
virtio_console: break out of buf poll on remove
ARM: mstar: Select HAVE_ARM_ARCH_TIMER
xfrm: fix tunnel model fragmentation behavior
HID: logitech-dj: add new lightspeed receiver id
hv: utils: add PTP_1588_CLOCK to Kconfig to fix build
USB: serial: simple: add Nokia phone driver
USB: serial: pl2303: add IBM device IDs
already merged(32)
can: usb_8dev: usb_8dev_start_xmit(): fix double dev_kfree_skb() in error path
KVM: x86/mmu: do compare-and-exchange of gPTE via the user address
ubi: fastmap: Return error code if memory allocation fails in add_aeb()
ubi: Fix race condition between ctrl_cdev_ioctl and ubi_cdev_ioctl
net: hns3: fix software vlan talbe of vlan 0 inconsistent with hardware
can: mcba_usb: mcba_usb_start_xmit(): fix double dev_kfree_skb in error path
ubifs: rename_whiteout: correct old_dir size computing
ubifs: Fix to add refcount once page is set private
ubifs: Fix read out-of-bounds in ubifs_wbuf_write_nolock()
ubifs: setflags: Make dirtied_ino_d 8 bytes aligned
ubifs: Add missing iput if do_tmpfile() failed in rename whiteout
ubifs: Fix deadlock in concurrent rename whiteout and inode writeback
ubifs: rename_whiteout: Fix double free for whiteout_ui->data
bfq: fix use-after-free in bfq_dispatch_request
block, bfq: don't move oom_bfqq
net/x25: Fix null-ptr-deref caused by x25_disconnect
net: hns3: fix bug when PF set the duplicate MAC address for VFs
bpf, sockmap: Fix double uncharge the mem of sk_msg
bpf, sockmap: Fix more uncharged while msg has more_data
bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full
livepatch: Fix build failure on 32 bits processors
drm/i915/opregion: check port number bounds for SWSCI display power state
bcache: fixup multiple threads crash
drivers: hamradio: 6pack: fix UAF bug caused by mod_timer()
jffs2: fix memory leak in jffs2_scan_medium
jffs2: fix memory leak in jffs2_do_mount_fs
jffs2: fix use-after-free in jffs2_clear_xattr_subsystem
can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path
ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE
af_key: add __GFP_ZERO flag for compose_sadb_supported in function
pfkey_register
netdevice: add the case if dev is NULL
swiotlb: fix info leak with DMA_FROM_DEVICE
kabi conflict(8)
PCI: Reduce warnings on possible RW1C corruption
qed: validate and restrict untrusted VFs vlan promisc mode
block: don't merge across cgroup boundaries if blkcg is enabled
rseq: Remove broken uapi field layout on 32-bit little endian
coredump: Use the vma snapshot in fill_files_note
coredump/elf: Pass coredump_params into fill_note_info
coredump: Remove the WARN_ON in dump_vma_snapshot
coredump: Snapshot the vmas in do_coredump
Total Patches = 597 - 32 - 8 = 557
Aaron Conole (1):
openvswitch: always update flow key after nat
Aashish Sharma (1):
dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS
Abel Vesa (2):
clk: imx7d: Remove audio_mclk_root_clk
ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk
Adrian Hunter (2):
perf/core: Fix address filter parser for multiple filters
perf/x86/intel/pt: Fix address filter config for 32-bit kernel
Aharon Landau (1):
RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR
Akira Kawata (1):
fs/binfmt_elf: Fix AT_PHDR for unusual ELF files
Alan Stern (1):
USB: usb-storage: Fix use of bitfields for hardware data in
ene_ub6250.c
Alexander Lobakin (2):
i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb
i40e: respect metadata on XSK Rx to skb
Alexander Usyskin (2):
mei: me: add Alder Lake N device id.
mei: avoid iterator usage outside of list_for_each_entry
Alexey Khoroshilov (1):
NFS: remove unneeded check in decode_devicenotify_args()
Alistair Delva (1):
remoteproc: Fix count check in rproc_coredump_write()
Alistair Popple (1):
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
Amadeusz Sławiński (1):
ASoC: topology: Allow TLV control to be either read or write
Amir Goldstein (1):
nfsd: more robust allocation failure handling in nfsd_file_cache_init
Ammar Faizi (1):
ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM
Anders Roxell (3):
powerpc/lib/sstep: Fix 'sthcx' instruction
powerpc/lib/sstep: Fix build errors with newer binutils
powerpc: Fix build errors with newer binutils
Andre Przywara (1):
ARM: configs: multi_v5_defconfig: re-enable
CONFIG_V4L_PLATFORM_DRIVERS
Andreas Gruenbacher (1):
powerpc/kvm: Fix kvm_use_magic_page
Andrew Price (1):
gfs2: Make sure FITRIM minlen is rounded up to fs block size
Andy Shevchenko (3):
spi: pxa2xx-pci: Balance reference count for PCI DMA device
serial: 8250_mid: Balance reference count for PCI DMA device
serial: 8250_lpss: Balance reference count for PCI DMA device
Ang Tien Sung (1):
firmware: stratix10-svc: add missing callback parameter on RSU
Anssi Hannula (3):
xhci: fix garbage USBSTS being logged in some cases
xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()
hv_balloon: rate-limit "Unhandled message" warning
Anton Ivanov (1):
um: Fix uml_mconsole stop/go
Ard Biesheuvel (1):
ARM: ftrace: avoid redundant loads or clobbering IP
Armin Wolf (1):
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING
Arnd Bergmann (4):
uaccess: fix nios2 and microblaze get_user_8()
uaccess: fix type mismatch warnings from access_ok()
lib/test_lockup: fix kernel pointer check for separate address spaces
ARM: iop32x: offset IRQ numbers by 1
Arun Easi (2):
scsi: qla2xxx: Fix device reconnect in loop topology
scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests
Arınç ÜNAL (5):
staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree
staging: mt7621-dts: fix formatting
staging: mt7621-dts: fix pinctrl properties for ethernet
staging: mt7621-dts: fix GB-PC2 devicetree
staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on
ethernet
Athira Rajeev (1):
powerpc/perf: Don't use perf_hw_context for trace IMC PMU
Bagas Sanjaya (2):
Documentation: add link to stable release candidate tree
Documentation: update stable tree link
Bartosz Golaszewski (1):
Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"
Bharata B Rao (1):
sched/debug: Remove mpol_get/put and task_lock/unlock from
sched_show_numa
Biju Das (2):
spi: Fix invalid sgs value
spi: Fix erroneous sgs value with min_t()
Bikash Hazarika (1):
scsi: qla2xxx: Fix wrong FDMI data for 64G adapter
Bjorn Helgaas (1):
PCI: Avoid broken MSI on SB600 USB devices
Brandon Wyman (1):
hwmon: (pmbus) Add Vin unit off handling
Casey Schaufler (2):
LSM: general protection fault in legacy_parse_param
Fix incorrect type in assignment of ipv6 port for audit
Chaitanya Kulkarni (1):
loop: use sysfs_emit() in the sysfs xxx show()
Chao Yu (6):
f2fs: fix to unlock page correctly in error path of is_alive()
f2fs: fix to do sanity check on .cp_pack_total_block_count
f2fs: fix to enable ATGC correctly via gc_idle sysfs interface
f2fs: fix to avoid potential deadlock
f2fs: fix to do sanity check on curseg->alloc_type
f2fs: compress: fix to print raw data size in error path of lz4
decompression
Charan Teja Kalla (3):
mm: madvise: skip unmapped vma holes passed to process_madvise
mm: madvise: return correct bytes advised with process_madvise
Revert "mm: madvise: skip unmapped vma holes passed to
process_madvise"
Charles Keepax (1):
ASoC: madera: Add dependencies on MFD
Chen Jingwen (1):
powerpc/kasan: Fix early region not updated correctly
Chen-Yu Tsai (7):
media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across
ioctls
media: hantro: Fix overfill bottom register field name
pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback
pinctrl: mediatek: paris: Fix "argument" argument type for
mtk_pinconf_get()
pinctrl: mediatek: paris: Fix pingroup pin config state readback
pinctrl: mediatek: paris: Skip custom extra pin config dump for
virtual GPIOs
pinctrl: pinconf-generic: Print arguments for bias-pull-*
Chris Leech (1):
nvme-tcp: lockdep: annotate in-kernel sockets
Christian Göttsche (2):
selinux: check return value of sel_make_avc_files
selinux: use correct type for context length
Christoph Hellwig (1):
nvme: cleanup __nvme_check_ids
Christophe JAILLET (4):
firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL
is not defined
gpu: host1x: Fix a memory leak in 'host1x_remove()'
fsi: Aspeed: Fix a potential double free
misc: alcor_pci: Fix an error handling path
Chuck Lever (1):
NFSD: Fix nfsd_breaker_owns_lease() return values
Claudiu Beznea (3):
net: dsa: microchip: add spi_device_id tables
hwrng: atmel - disable trng on failure path
clocksource/drivers/timer-microchip-pit64b: Use notrace
Codrin Ciubotariu (2):
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
clk: at91: sama7g5: fix parents of PDMCs' GCLK
Colin Ian King (2):
carl9170: fix missing bit-wise or operator for tx_params
iwlwifi: Fix -EIO error code that is never returned
Cooper Chiou (1):
drm/edid: check basic audio support on CEA extension block
Corentin Labbe (8):
crypto: sun8i-ss - really disable hash on A80
crypto: rockchip - ECB does not need IV
crypto: sun8i-ss - call finalize with bh disabled
crypto: sun8i-ce - call finalize with bh disabled
crypto: amlogic - call finalize with bh disabled
media: staging: media: zoran: fix usage of
vb2_dma_contig_set_max_seg_size
media: staging: media: zoran: move videodev alloc
media: staging: media: zoran: calculate the right buffer number for
zoran_reap_stat_com
Dafna Hirschfeld (1):
media: stk1160: If start stream fails, return buffers with
VB2_BUF_STATE_QUEUED
Damien Le Moal (11):
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()
scsi: pm8001: Fix payload initialization in
pm80xx_set_thermal_config()
scsi: pm8001: Fix le32 values handling in
pm80xx_set_sas_protocol_timer_config()
scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req()
scsi: pm8001: Fix NCQ NON DATA command task initialization
scsi: pm8001: Fix NCQ NON DATA command completion handling
scsi: pm8001: Fix abort all task initialization
Dan Carpenter (9):
greybus: svc: fix an error handling bug in gb_svc_hello()
NFSD: prevent underflow in nfssvc_decode_writeargs()
NFSD: prevent integer overflow on 32 bit systems
video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe()
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()
media: usb: go7007: s2250-board: fix leak in probe()
iwlwifi: mvm: Fix an error code in iwl_mvm_up()
USB: storage: ums-realtek: fix error code in rts51x_read_mem()
lib/test: use after free in register_test_dev_kmod()
Dan Williams (1):
nvdimm/region: Fix default alignment for small regions
Daniel González Cabanelas (1):
media: cx88-mpeg: clear interrupt status register before streaming
video
Daniel Henrique Barboza (1):
powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties()
Daniel Palmer (1):
ARM: mstar: Select HAVE_ARM_ARCH_TIMER
Daniel Thompson (2):
soc: qcom: aoss: remove spurious IRQF_ONESHOT flags
kdb: Fix the putarea helper function
Dario Binacchi (1):
mtd: rawnand: gpmi: fix controller timings setting
Darren Hart (1):
ACPI/APEI: Limit printable size of BERT table data
Dave Stevenson (1):
regulator: rpi-panel: Handle I2C errors/timing to the Atmel
David Engraf (1):
arm64: signal: nofpsimd: Do not allocate fp/simd context when not
available
David Gow (1):
firmware: google: Properly state IOMEM dependency
David Heidelberg (2):
arm64: dts: qcom: sdm845: fix microphone bias properties and values
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960
David Howells (3):
watch_queue: Fix NULL dereference in error cleanup
watch_queue: Actually free the watch
rxrpc: Fix call timer start racing with call destruction
David Matlack (1):
KVM: Prevent module exit until all VMs are freed
Dirk Buchwalder (1):
clk: qcom: ipq8074: Use floor ops for SDCC1 clock
Dirk Müller (1):
lib/raid6/test: fix multiple definition linking error
Dmitry Baryshkov (3):
drm/msm/dpu: add DSPP blocks teardown
drm/msm/dpu: fix dp audio condition
PM: core: keep irq flags in device_pm_check_callbacks()
Dmitry Torokhov (1):
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
Dmitry Vyukov (1):
riscv: Increase stack size under KASAN
Dongliang Mu (3):
media: em28xx: initialize refcount before kref_get
ntfs: add sanity check on allocation size
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
Drew Fustini (1):
clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix
Dāvis Mosāns (1):
crypto: ccp - ccp_dmaengine_unregister release dma channels
Eddie James (1):
USB: serial: pl2303: add IBM device IDs
Eric Biggers (6):
KEYS: fix length validation in keyctl_pkey_params_get_2()
crypto: rsa-pkcs1pad - only allow with rsa
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist
crypto: rsa-pkcs1pad - restore signature length check
crypto: rsa-pkcs1pad - fix buffer overread in
pkcs1pad_verify_complete()
block: don't delete queue kobject before its children
Eric Dumazet (2):
rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs()
watch_queue: Free the page array when watch_queue is dismantled
Evgeny Novikov (1):
video: fbdev: w100fb: Reset global state
Fabiano Rosas (2):
KVM: PPC: Fix vmx/vsx mixup in mmio emulation
KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init
Fangrui Song (1):
riscv module: remove (NOLOAD)
Felix Maurer (1):
selftests/bpf: Make test_lwt_ip_encap more stable and faster
Fengnan Chang (2):
f2fs: compress: remove unneeded read when rewrite whole cluster
f2fs: fix compressed file start atomic write may cause data corruption
Filipe Manana (1):
btrfs: fix unexpected error path when reflinking an inline extent
Florian Fainelli (1):
net: phy: broadcom: Fix brcm_fet_config_init()
Frank Wunderlich (1):
arm64: dts: broadcom: Fix sata nodename
Geert Uytterhoeven (3):
hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER
pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel
pinctrl: renesas: checker: Fix miscalculation of number of states
George Kennedy (1):
video: fbdev: cirrusfb: check pixclock to avoid divide by zero
Gilad Ben-Yossef (1):
crypto: ccree - don't attempt 0 len DMA mappings
Guilherme G. Piccoli (1):
docs: sysctl/kernel: add missing bit to panic_print
Guillaume Nault (1):
ipv4: Fix route lookups when handling ICMP redirects and PMTU updates
Guillaume Ranquet (1):
clocksource/drivers/timer-of: Check return value of of_iomap in
timer_of_base_init()
Guillaume Tucker (1):
selftests, x86: fix how check_cc.sh is being invoked
Gwendal Grignou (2):
HID: intel-ish-hid: Use dma_alloc_coherent for firmware update
platform: chrome: Split trace include file
Hangbin Liu (2):
bareudp: use ipv6_mod_enabled to check if IPv6 enabled
selftests/bpf/test_lirc_mode2.sh: Exit with proper code
Hangyu Hua (1):
powerpc: 8xx: fix a return value error in mpc8xx_pic_init
Hans Verkuil (2):
ivtv: fix incorrect device_caps for ivtvfb
media: staging: media: zoran: fix various V4L2 compliance errors
Hans de Goede (3):
power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong
false return
iio: mma8452: Fix probe failing when an i2c_device_id is used
media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2
regulator off on some boards
Hector Martin (4):
brcmfmac: firmware: Allocate space for default boardrev in nvram
brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio
brcmfmac: pcie: Fix crashes due to early IRQs
Helge Deller (1):
video: fbdev: sm712fb: Fix crash in smtcfb_read()
Hengqi Chen (1):
bpf: Fix comment for helper bpf_current_task_under_cgroup()
Henry Lin (1):
xhci: fix runtime PM imbalance in USB2 resume
Herbert Xu (2):
crypto: authenc - Fix sleep in atomic context in decrypt_tail
crypto: arm/aes-neonbs-cbc - Select generic cbc and aes
Hoang Le (1):
tipc: fix the timer expires after interval 100ms
Hou Tao (2):
bpf, arm64: Call build_prologue() first in first JIT pass
bpf, arm64: Feed byte-offset into bpf line info
Hou Wenlong (1):
KVM: x86/emulator: Defer not-present segment check in
__load_segment_descriptor()
Hugh Dickins (1):
mempolicy: mbind_range() set_policy() after vma_merge()
Håkon Bugge (1):
IB/cma: Allow XRC INI QPs to set their local ACK timeout
Ido Schimmel (1):
selftests: test_vxlan_under_vrf: Fix broken test case
Ilpo Järvinen (1):
serial: 8250: fix XOFF/XON sending when DMA is used
Jaegeuk Kim (1):
f2fs: fix missing free nid in f2fs_handle_failed_inode
Jagan Teki (1):
drm: bridge: adv7511: Fix ADV7535 HPD enablement
Jakob Koschel (2):
media: saa7134: fix incorrect use to determine if list is empty
powerpc/sysdev: fix incorrect use to determine if list is empty
Jakub Kicinski (1):
tcp: ensure PMTU updates are processed during fastopen
Jakub Sitnicki (1):
selftests/bpf: Fix error reporting from sock_fields programs
James Clark (1):
coresight: Fix TRCCONFIGR.QE sysfs interface
Jammy Huang (1):
media: aspeed: Correct value for h-total-pixels
Jann Horn (2):
coredump: Also dump first pages of non-executable ELF libraries
pstore: Don't use semaphores in always-atomic-context code
Jason A. Donenfeld (2):
wireguard: queueing: use CFI-safe ptr_ring cleanup function
wireguard: socket: ignore v6 endpoints when ipv6 is disabled
Jens Axboe (1):
io_uring: terminate manual loop iterator loop correctly for non-vecs
Jeremy Linton (1):
net: bcmgenet: Use stronger register read/writes to assure ordering
Jernej Skrabec (2):
media: cedrus: H265: Fix neighbour info buffer size
media: cedrus: h264: Fix neighbour info buffer size
Jia-Ju Bai (3):
ASoC: rt5663: check the return value of devm_kzalloc() in
rt5663_parse_dp()
memory: emif: check the pointer temp in get_device_details()
platform/x86: huawei-wmi: check the return value of
device_create_file()
Jianglei Nie (1):
crypto: ccree - Fix use after free in cc_cipher_exit()
Jianyong Wu (1):
arm64/mm: avoid fixmap race condition when create pud mapping
Jiasheng Jiang (26):
thermal: int340x: Check for NULL after calling kmemdup()
spi: spi-zynqmp-gqspi: Handle error for dma_set_mask
media: mtk-vcodec: potential dereference of null pointer
media: meson: vdec: potential dereference of null pointer
soc: qcom: rpmpd: Check for null return of devm_kcalloc
ASoC: ti: davinci-i2s: Add check for clk_enable()
ALSA: spi: Add check for clk_enable()
ASoC: mxs-saif: Handle errors for clk_enable
ASoC: atmel_ssc_dai: Handle errors for clk_enable
ASoC: dwc-i2s: Handle errors for clk_enable
ASoC: soc-compress: prevent the potentially use of null pointer
memory: emif: Add check for setup_interrupts
media: vidtv: Check for null return of vzalloc
ASoC: wm8350: Handle error for wm8350_register_irq
ASoC: fsi: Add check for clk_enable
mmc: davinci_mmc: Handle error for clk_enable
drm/panfrost: Check for error num after setting mask
mtd: onenand: Check for error irq
ray_cs: Check ioremap return value
iommu/ipmmu-vmsa: Check for error num after setting mask
power: supply: wm8350-power: Handle error for wm8350_register_irq
power: supply: wm8350-power: Add missing free in free_charger_irq
mfd: mc13xxx: Add check for mc13xxx_irq_request
iio: adc: Add check for devm_request_threaded_irq
habanalabs: Add check for pci_enable_device
ASoC: soc-compress: Change the check for codec_dai
Jiaxin Yu (1):
ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs
Jie Hai (1):
dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma
Jing Yao (3):
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of
snprintf()
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead
of snprintf()
video: fbdev: udlfb: replace snprintf in show functions with
sysfs_emit
Jiri Slaby (1):
mxser: fix xmit_buf leak in activate when LSR == 0xff
Jocelyn Falempe (1):
mgag200 fix memmapsl configuration in GCTL6 register
Joe Carnuccio (2):
scsi: qla2xxx: Add devids and conditionals for 28xx
scsi: qla2xxx: Check for firmware dump already collected
Johan Hovold (3):
USB: serial: simple: add Nokia phone driver
media: davinci: vpif: fix unbalanced runtime PM get
media: davinci: vpif: fix unbalanced runtime PM enable
John David Anglin (1):
parisc: Fix handling off probe non-access faults
Jonathan Cameron (1):
staging:iio:adc:ad7280a: Fix handing of device address bit reversing.
Jonathan Neuschäfer (5):
clk: actions: Terminate clk_div_table with sentinel element
clk: loongson1: Terminate clk_div_table with sentinel element
clk: clps711x: Terminate clk_div_table with sentinel element
pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR()
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()
José Expósito (1):
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"
Juergen Gross (1):
xen: fix is_xen_pmu()
Juhyung Park (1):
f2fs: quota: fix loop condition at f2fs_quota_sync()
Kai-Heng Feng (1):
ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020
Kees Cook (2):
exec: Force single empty string when argv is empty
gcc-plugins/stackleak: Exactly match strings instead of prefixes
Konrad Dybcio (1):
clk: qcom: gcc-msm8994: Fix gpll4 width
Krzysztof Kozlowski (5):
pinctrl: samsung: drop pin banks references on error paths
ARM: dts: exynos: fix UART3 pins configuration in Exynos5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5420
clocksource/drivers/exynos_mct: Handle DTS with higher number of
interrupts
Kuan-Ying Lee (1):
mm/kmemleak: reset tag when compare object pointer
Kuldeep Singh (3):
arm64: dts: ns2: Fix spi-cpol and spi-cpha property
ARM: dts: spear1340: Update serial node properties
ARM: dts: spear13xx: Update SPI dma properties
Kunihiko Hayashi (1):
clk: uniphier: Fix fixed-rate initialization
Kuogee Hsieh (1):
drm/msm/dp: populate connector of struct dp_panel
Lars Ellenberg (1):
drbd: fix potential silent data corruption
Li RongQing (1):
KVM: x86: fix sending PV IPI
Liam Beguin (4):
iio: afe: rescale: use s64 for temporary scale calculations
iio: inkern: apply consumer scale on IIO_VAL_INT cases
iio: inkern: apply consumer scale when no channel scale is available
iio: inkern: make a best effort on offset calculation
Libin Yang (1):
soundwire: intel: fix wrong register name in intel_shim_wake
Liguang Zhang (1):
PCI: pciehp: Clear cmd_busy bit in polling mode
Lina Wang (1):
xfrm: fix tunnel model fragmentation behavior
Lino Sanfilippo (1):
tpm: fix reference counting for struct tpm_chip
Linus Torvalds (2):
fs: fd tables have to be multiples of BITS_PER_LONG
fs: fix fd table size alignment properly
Linus Walleij (1):
Input: zinitix - do not report shadow fingers
Liu Ying (1):
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})
Lorenzo Bianconi (4):
mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in
sta mode
mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv
mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update
mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update
Luca Weiss (1):
cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse
Lucas Tanure (1):
i2c: meson: Fix wrong speed use from probe
Lucas Zampieri (1):
HID: logitech-dj: add new lightspeed receiver id
Lv Ruyi (1):
proc: bootconfig: Add null pointer check
Maciej W. Rozycki (1):
DEC: Limit PMAX memory probing to R3k systems
Manish Chopra (1):
qed: display VF trust config
Manish Rangankar (1):
scsi: qla2xxx: Use correct feature type field during RFF_ID processing
Maor Gottlieb (1):
RDMA/core: Set MR type in ib_reg_user_mr
Marc Kleine-Budde (1):
can: m_can: m_can_tx_handler(): fix use after free of skb
Marc Zyngier (4):
PCI: xgene: Revert "PCI: xgene: Fix IB window setup"
pinctrl: npcm: Fix broken references to chip->parent_device
irqchip/qcom-pdc: Fix broken locking
PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup"
Marcel Ziswiler (1):
arm64: defconfig: build imx-sdma as a module
Marcelo Roberto Jimenez (1):
gpio: Revert regression in sysfs-gpio (gpiolib.c)
Marek Szyprowski (1):
clocksource/drivers/exynos_mct: Refactor resources allocation
Marek Vasut (1):
ARM: dts: imx: Add missing LVDS decoder on M53Menlo
Marijn Suijten (1):
firmware: qcom: scm: Remove reassignment to desc following initializer
Martin Blumenstingl (1):
drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops
Martin Varghese (1):
openvswitch: Fixed nd target mask field in the flow dump.
Mastan Katragadda (1):
drm/i915/gem: add missing boundary check in vm_access
Mathias Nyman (1):
xhci: make xhci_handshake timeout for xhci_reset() adjustable
Matt Kramer (1):
ALSA: hda/realtek: Add alc256-samsung-headphone fixup
Matthew Wilcox (Oracle) (2):
XArray: Fix xas_create_range() when multi-order entry present
XArray: Update the LRU list in xas_split()
Maulik Shah (1):
arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc
Mauro Carvalho Chehab (1):
media: atomisp: fix bad usage at error handling logic
Max Filippov (2):
xtensa: fix stop_machine_cpuslocked call in patch_text
xtensa: fix xtensa_wsr always writing 0
Maxim Kiselev (1):
powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch
Maxime Ripard (2):
drm/edid: Don't clear formats if using deep color
clk: Initialize orphan req_rate
Maíra Canal (1):
drm/amd/display: Remove vupdate_int_entry definition
Miaoqian Lin (31):
spi: tegra114: Add missing IRQ check in tegra_spi_probe
hwrng: nomadik - Change clk_disable to clk_disable_unprepare
media: coda: Fix missing put_device() call in coda_get_vdoa_data
soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of
ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in
rockchip_i2s_probe
ASoC: SOF: Add missing of_node_put() in imx8m_probe
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in
msm8916_wcd_digital_probe
ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe
ASoC: msm8916-wcd-analog: Fix error handling in
pm8916_wcd_analog_spmi_probe
ASoC: codecs: wcd934x: Add missing of_node_put() in
wcd934x_codec_parse_data
drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev
drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe
drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe
power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init
drm/tegra: Fix reference leak in tegra_dsi_ganged_probe
ath10k: Fix error handling in ath10k_setup_msa_resources
mips: cdmm: Fix refcount leak in mips_cdmm_phys_base
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region
remoteproc: qcom_wcnss: Add missing of_node_put() in
wcnss_alloc_memory_region
remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region
clk: tegra: tegra124-emc: Fix missing put_device() call in
emc_ensure_emc_driver
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe
pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe
watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function
Michael Ellerman (1):
powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit
Michael S. Tsirkin (1):
virtio_console: break out of buf poll on remove
Michael Schmitz (1):
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix
Mike Marciniszyn (1):
IB/hfi1: Allow larger MTU without AIP
Mikulas Patocka (1):
dm integrity: set journal entry unused when shrinking device
Minghao Chi (1):
spi: tegra20: Use of_device_get_match_data()
Minghao Chi (CGEL ZTE) (1):
net:mcf8390: Use platform_get_irq() to get the interrupt
Miquel Raynal (4):
spi: mxic: Fix the transmit path
dt-bindings: mtd: nand-controller: Fix the reg property description
dt-bindings: mtd: nand-controller: Fix a comment in the examples
dt-bindings: spi: mxic: The interrupt property is not mandatory
Mohan Kumar (1):
ALSA: hda: Avoid unsol event during RPM suspending
Muhammad Usama Anjum (1):
selftests/x86: Add validity check and allow field splitting
Namhyung Kim (1):
bpf: Adjust BPF stack helper functions to accommodate skip > 0
Neil Armstrong (1):
drm/bridge: dw-hdmi: use safe format when first in bridge chain
NeilBrown (1):
SUNRPC: avoid race between mod_timer() and del_timer_sync()
Niels Dossche (1):
Bluetooth: call hci_le_conn_failed with hdev lock in
hci_le_conn_failed
Nikita Shubin (1):
riscv: Fix fill_callchain return value
Niklas Söderlund (1):
samples/bpf, xdpsock: Fix race when running for fix duration of time
Nilesh Javali (1):
scsi: qla2xxx: Fix warning for missing error code
Nishanth Menon (4):
arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs
drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt
Olga Kornievskaia (1):
NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error
Oliver Hartkopp (5):
can: isotp: sanitize CAN ID checks in isotp_bind()
vxcan: enable local echo for sent CAN frames
can: isotp: return -EADDRNOTAVAIL when reading from unbound socket
can: isotp: support MSG_TRUNC flag when reading from socket
can: isotp: restore accidentally removed MSG_PEEK feature
Ondrej Zary (1):
media: bttv: fix WARNING regression on tunerless devices
Pablo Neira Ayuso (1):
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options
Pali Rohár (1):
PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge
Paolo Valente (1):
Revert "Revert "block, bfq: honor already-setup queue merges""
Patrick Rudolph (1):
hwmon: (pmbus) Add mutex to regulator ops
Paul Kocialkowski (1):
ARM: dts: sun8i: v3s: Move the csi1 block to follow address order
Paul Menzel (1):
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3
Paulo Alcantara (2):
cifs: prevent bad output lengths in smb2_ioctl_query_info()
cifs: fix NULL ptr dereference in smb2_ioctl_query_info()
Pavel Begunkov (1):
io_uring: fix memory leak of uid in files registration
Pavel Kubelun (1):
ARM: dts: qcom: ipq4019: fix sleep clock
Pavel Skripkin (6):
udmabuf: validate ubuf->pagecount
Bluetooth: hci_serdev: call init_rwsem() before p->open()
ath9k_htc: fix uninit value bugs
jfs: fix divide error in dbNextAG
media: Revert "media: em28xx: add missing em28xx_close_extension"
can: mcba_usb: properly check endpoint type
Peiwei Hu (1):
media: ir_toy: free before error exiting
Pekka Pessi (1):
mailbox: tegra-hsp: Flush whole channel
Peng Liu (1):
kunit: make kunit_test_timeout compatible with comment
Peter Rosin (1):
i2c: mux: demux-pinctrl: do not deactivate a master that is not active
Petr Machata (1):
af_netlink: Fix shift out of bounds in group mask calculation
Petr Vorel (1):
crypto: vmx - add missing dependencies
Pierre-Louis Bossart (1):
ASoC: generic: simple-card-utils: remove useless assignment
Prashant Malani (1):
platform/chrome: cros_ec_typec: Check for EC device
Qais Yousef (1):
sched/core: Export pelt_thermal_tp
Quinn Tran (7):
scsi: qla2xxx: Fix stuck session in gpdb
scsi: qla2xxx: Fix scheduling while atomic
scsi: qla2xxx: Fix disk failure to rediscover
scsi: qla2xxx: Fix incorrect reporting of task management failure
scsi: qla2xxx: Fix hang due to session stuck
scsi: qla2xxx: Fix N2N inconsistent PLOGI
scsi: qla2xxx: Reduce false trigger to login
Rafael J. Wysocki (2):
ACPICA: Avoid walking the ACPI Namespace if it is not there
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data
Randy Dunlap (20):
hv: utils: add PTP_1588_CLOCK to Kconfig to fix build
EVM: fix the evm= __setup handler return value
PM: hibernate: fix __setup handler error handling
PM: suspend: fix return value of __setup handler
ACPI: APEI: fix return value of __setup handlers
clocksource: acpi_pm: fix return value of __setup handler
printk: fix return value of printk.devkmsg __setup handler
m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are
defined
TOMOYO: fix __setup handlers return values
mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n
MIPS: RB532: fix return value of __setup handler
dma-debug: fix return value of __setup handlers
tty: hvc: fix return value of __setup handler
kgdboc: fix return value of __setup handler
kgdbts: fix return value of __setup handler
driver core: dd: fix return value of __setup handler
mm/mmap: return 1 from stack_guard_gap __setup() handler
ARM: 9187/1: JIVE: fix return value of __setup handler
mm/memcontrol: return 1 from cgroup.memory __setup() handler
mm/usercopy: return 1 from hardened_usercopy __setup() handler
Richard Guy Briggs (1):
audit: log AUDIT_TIME_* records only from rules
Richard Haines (1):
selinux: allow FIOCLEX and FIONCLEX with policy capability
Richard Leitner (1):
ARM: tegra: tamonten: Fix I2C3 pad setting
Richard Schleich (2):
ARM: dts: bcm2837: Add the missing L1/L2 cache information
ARM: dts: bcm2711: Add the missing L1/L2 cache information
Rik van Riel (2):
mm: invalidate hwpoison page cache page in fault path
mm,hwpoison: unmap poisoned page before invalidation
Ritesh Harjani (3):
ext4: fix ext4_fc_stats trace point
ext4: correct cluster len and clusters changed accounting in
ext4_mb_mark_bb
ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit
Rob Herring (1):
arm64: dts: rockchip: Fix SDIO regulator supply properties on
rk3399-firefly
Robert Hancock (3):
ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting
i2c: xiic: Make bus names unique
net: axienet: fix RX ring refill allocation failure handling
Robert Marko (1):
clk: qcom: ipq8074: fix PCI-E clock oops
Robin Gong (1):
mailbox: imx: fix wakeup failure from freeze mode
Robin Murphy (1):
iommu/iova: Improve 32-bit free space estimate
Roman Li (1):
drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug
Sakari Ailus (1):
ACPI: properties: Consistently return -ENOENT if there are no more
references
Sam Ravnborg (1):
video: fbdev: controlfb: Fix set but not used warnings
Saurav Kashyap (1):
scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()
Sean Christopherson (1):
KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP
MMU
Sean Nyekjaer (1):
mtd: rawnand: protect access to rawnand devices while in suspend
Sean Young (1):
media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC
Shannon Nelson (1):
ionic: fix type complaint in ionic_dev_cmd_clean()
Shengjiu Wang (2):
ASoC: fsl_spdif: Disable TX clock when stop
ASoC: soc-core: skip zero num_dai component in searching dai name
Shin'ichiro Kawasaki (1):
block: limit request dispatch loop duration
Si-Wei Liu (1):
vdpa/mlx5: should verify CTRL_VQ feature exists for MQ
Souptick Joarder (HPE) (1):
irqchip/nvic: Release nvic_base upon failure
Srinivas Kandagatla (1):
ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put
Srinivas Pandruvada (1):
thermal: int340x: Increase bitmap size
Stefano Garzarella (1):
tools/virtio: fix virtio_test execution
Sunil Goutham (1):
hwrng: cavium - Check health status while reading random data
Sven Eckelmann (1):
batman-adv: Check ptr for NULL before reducing its refcnt
Takashi Iwai (1):
ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock
Takashi Sakamoto (1):
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred
transaction
Taniya Das (2):
clk: qcom: clk-rcg2: Update logic to calculate D value for RCG
clk: qcom: clk-rcg2: Update the frac table for pixel clock
Theodore Ts'o (1):
ext4: don't BUG if someone dirty pages without asking ext4 first
Thomas Bracht Laumann Jespersen (1):
scripts/dtc: Call pkg-config POSIXly correct
Tim Gardner (1):
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow
Tobias Waldekranz (1):
net: dsa: mv88e6xxx: Enable port policy support on 6097
Tom Rix (5):
media: video/hdmi: handle short reads of hdmi info frame.
drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq
function
qlcnic: dcb: default to returning -EOPNOTSUPP
can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error
value
rtc: check if __rtc_read_time was successful
Tomas Paukrt (1):
crypto: mxs-dcp - Fix scatterlist processing
Tong Zhang (1):
dax: make sure inodes are flushed before destroy cache
Trond Myklebust (3):
NFS: Use of mapping_set_error() results in spurious errors
NFS: Return valid errors from nfs2/3_decode_dirent()
NFSv4/pNFS: Fix another issue with a list iterator pointing to the
head
Tsuchiya Yuto (1):
media: atomisp: fix dummy_ptr check to avoid duplicate active_bo
Tudor Ambarus (1):
ARM: dts: at91: sama5d2: Fix PMERRLOC resource size
Ulf Hansson (1):
mmc: host: Return an error when ->enable_sdio_irq() ops is missing
Uwe Kleine-König (5):
vfio: platform: simplify device removal
amba: Make the remove callback return void
pwm: lpc18xx-sct: Initialize driver data and hardware before
pwmchip_add()
serial: 8250: Fix race condition in RTS-after-send handling
ARM: mmp: Fix failure to remove sram device
Vijay Balakrishna (1):
arm64: Do not defer reserve_crashkernel() for platforms with no DMA
memory zones
Vitaly Kuznetsov (1):
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't
activated
Vladimir Oltean (1):
net: enetc: report software timestamping via SO_TIMESTAMPING
Waiman Long (2):
locking/lockdep: Avoid potential access of invalid memory in
lock_class
locking/lockdep: Iterate lock_classes directly when reading lockdep
files
Wang Hai (2):
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()
wireguard: socket: free skb in send6 when ipv6 is disabled
Wang Wensheng (1):
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()
Wen Gong (1):
ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern
Xiang Chen (1):
scsi: hisi_sas: Change permission of parameter prot_mask
Xiaomeng Tong (2):
ALSA: cs4236: fix an incorrect NULL check on list iterator
net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator
Xie Yongji (1):
virtio-blk: Use blk_validate_block_size() to validate block size
Xin Long (1):
udp: call udp_encap_enable for v6 sockets when enabling encap
Xin Xiong (1):
mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init
Xu Kuohai (1):
libbpf: Skip forward declaration when counting duplicated type names
Yafang Shao (1):
libbpf: Fix possible NULL pointer dereference when destroying skeleton
Yake Yang (1):
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt
Yaliang Wang (1):
MIPS: pgalloc: fix memory leak caused by pgd_free()
Yang Guang (1):
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit
Yang Yingliang (3):
media: saa7134: convert list_for_each to entry variant
ASoC: rockchip: i2s: Use devm_platform_get_and_ioremap_resource()
ASoC: atmel: sam9x5_wm8731: use devm_snd_soc_register_card()
Yangtao Li (1):
fsi: aspeed: convert to devm_platform_ioremap_resource
Ye Bin (1):
ext4: fix fs corruption when tring to remove a non-empty directory
with IO error
Yi Wang (1):
KVM: SVM: fix panic on out-of-bounds guest IRQ
Yiqing Yao (1):
drm/amd/pm: enable pm sysfs write for one VF mode
Yongzhi Liu (1):
RDMA/mlx5: Fix memory leak in error flow for subscribe event routine
YueHaibing (1):
video: fbdev: controlfb: Fix COMPILE_TEST build
Z. Liu (1):
video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200
to avoid black screen
Zhang Yi (1):
ext2: correct max file size computing
Zhenzhong Duan (1):
KVM: x86: Fix emulation in writing cr8
Zheyu Ma (2):
ethernet: sun: Free the coherent when failing in probing
video: fbdev: sm712fb: Fix crash in smtcfb_write()
Zhou Qingyang (2):
drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl()
drm/amd/display: Fix a NULL pointer dereference in
amdgpu_dm_connector_add_common_modes()
kernel test robot (1):
regulator: qcom_smd: fix for_each_child.cocci warnings
lic121 (1):
libbpf: Unmap rings when umem deleted
Documentation/admin-guide/sysctl/kernel.rst | 1 +
.../bindings/mtd/nand-controller.yaml | 4 +-
.../devicetree/bindings/spi/spi-mxic.txt | 4 +-
Documentation/process/stable-kernel-rules.rst | 11 +-
Documentation/sound/hd-audio/models.rst | 4 +
arch/arc/kernel/process.c | 2 +-
arch/arm/boot/dts/bcm2711.dtsi | 50 +++++
arch/arm/boot/dts/bcm2837.dtsi | 49 ++++
arch/arm/boot/dts/dra7-l4.dtsi | 5 +-
arch/arm/boot/dts/dra7.dtsi | 8 +-
arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 2 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 3 +
arch/arm/boot/dts/exynos5420-smdk5420.dts | 3 +
arch/arm/boot/dts/imx53-m53menlo.dts | 29 ++-
arch/arm/boot/dts/imx7-colibri.dtsi | 4 +-
arch/arm/boot/dts/imx7-mba7.dtsi | 2 +-
arch/arm/boot/dts/imx7d-nitrogen7.dts | 2 +-
arch/arm/boot/dts/imx7d-pico-hobbit.dts | 4 +-
arch/arm/boot/dts/imx7d-pico-pi.dts | 4 +-
arch/arm/boot/dts/imx7d-sdb.dts | 4 +-
arch/arm/boot/dts/imx7s-warp.dts | 4 +-
arch/arm/boot/dts/qcom-ipq4019.dtsi | 3 +-
arch/arm/boot/dts/qcom-msm8960.dtsi | 8 +-
arch/arm/boot/dts/sama5d2.dtsi | 2 +-
arch/arm/boot/dts/spear1340.dtsi | 6 +-
arch/arm/boot/dts/spear13xx.dtsi | 6 +-
arch/arm/boot/dts/sun8i-v3s.dtsi | 22 +-
arch/arm/boot/dts/tegra20-tamonten.dtsi | 6 +-
arch/arm/configs/multi_v5_defconfig | 1 +
arch/arm/crypto/Kconfig | 2 +
arch/arm/kernel/entry-ftrace.S | 51 ++---
arch/arm/kernel/swp_emulate.c | 2 +-
arch/arm/kernel/traps.c | 2 +-
.../mach-iop32x/include/mach/entry-macro.S | 2 +-
arch/arm/mach-iop32x/include/mach/irqs.h | 2 +-
arch/arm/mach-iop32x/irq.c | 6 +-
arch/arm/mach-iop32x/irqs.h | 60 ++---
arch/arm/mach-mmp/sram.c | 22 +-
arch/arm/mach-mstar/Kconfig | 1 +
arch/arm/mach-s3c/mach-jive.c | 6 +-
.../boot/dts/broadcom/northstar2/ns2-svk.dts | 8 +-
.../boot/dts/broadcom/northstar2/ns2.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8150.dtsi | 6 +-
.../boot/dts/rockchip/rk3399-firefly.dts | 4 +-
arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-am65.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-j7200.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-j721e.dtsi | 1 +
arch/arm64/configs/defconfig | 2 +-
arch/arm64/kernel/signal.c | 10 +-
arch/arm64/mm/init.c | 36 ++-
arch/arm64/mm/mmu.c | 36 ++-
arch/arm64/net/bpf_jit_comp.c | 18 +-
arch/csky/kernel/perf_callchain.c | 2 +-
arch/csky/kernel/signal.c | 2 +-
arch/m68k/coldfire/device.c | 6 +-
arch/microblaze/include/asm/uaccess.h | 18 +-
arch/mips/dec/int-handler.S | 6 +-
arch/mips/dec/prom/Makefile | 2 +-
arch/mips/dec/setup.c | 3 +-
arch/mips/include/asm/dec/prom.h | 15 +-
arch/mips/include/asm/pgalloc.h | 6 +
arch/mips/rb532/devices.c | 6 +-
arch/nios2/include/asm/uaccess.h | 26 ++-
arch/nios2/kernel/signal.c | 20 +-
arch/parisc/include/asm/traps.h | 1 +
arch/parisc/kernel/traps.c | 2 +
arch/parisc/mm/fault.c | 89 ++++++++
arch/powerpc/Makefile | 2 +-
arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts | 30 +++
arch/powerpc/boot/dts/fsl/t1040rdb.dts | 8 +-
arch/powerpc/include/asm/io.h | 40 +++-
arch/powerpc/include/asm/uaccess.h | 3 +
arch/powerpc/kernel/kvm.c | 2 +-
arch/powerpc/kvm/book3s_hv.c | 5 +-
arch/powerpc/kvm/powerpc.c | 4 +-
arch/powerpc/lib/sstep.c | 12 +-
arch/powerpc/mm/kasan/kasan_init_32.c | 3 +-
arch/powerpc/mm/numa.c | 4 +-
arch/powerpc/perf/imc-pmu.c | 6 +-
arch/powerpc/platforms/8xx/pic.c | 1 +
arch/powerpc/platforms/powernv/rng.c | 6 +-
arch/powerpc/sysdev/fsl_gtm.c | 4 +-
arch/riscv/include/asm/module.lds.h | 6 +-
arch/riscv/include/asm/thread_info.h | 10 +-
arch/riscv/kernel/perf_callchain.c | 6 +-
arch/sparc/kernel/signal_32.c | 2 +-
arch/um/drivers/mconsole_kern.c | 3 +-
arch/x86/events/intel/pt.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kvm/emulate.c | 14 +-
arch/x86/kvm/hyperv.c | 9 +-
arch/x86/kvm/lapic.c | 5 +-
arch/x86/kvm/mmu/tdp_mmu.c | 3 +
arch/x86/kvm/svm/avic.c | 10 +-
arch/x86/xen/pmu.c | 10 +-
arch/x86/xen/pmu.h | 3 +-
arch/x86/xen/smp_pv.c | 2 +-
arch/xtensa/include/asm/processor.h | 4 +-
arch/xtensa/kernel/jump_label.c | 2 +-
block/bfq-iosched.c | 16 +-
block/blk-mq-sched.c | 9 +-
block/blk-sysfs.c | 8 +-
crypto/authenc.c | 2 +-
crypto/rsa-pkcs1pad.c | 11 +-
drivers/acpi/acpica/nswalk.c | 3 +
drivers/acpi/apei/bert.c | 10 +-
drivers/acpi/apei/erst.c | 2 +-
drivers/acpi/apei/hest.c | 2 +-
drivers/acpi/cppc_acpi.c | 5 +
drivers/acpi/property.c | 2 +-
drivers/amba/bus.c | 5 +-
drivers/base/dd.c | 2 +-
drivers/base/power/main.c | 6 +-
drivers/block/drbd/drbd_req.c | 3 +-
drivers/block/loop.c | 10 +-
drivers/block/virtio_blk.c | 12 +-
drivers/bluetooth/btmtksdio.c | 4 +-
drivers/bluetooth/hci_serdev.c | 3 +-
drivers/bus/mips_cdmm.c | 1 +
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/atmel-rng.c | 1 +
drivers/char/hw_random/cavium-rng-vf.c | 194 +++++++++++++++-
drivers/char/hw_random/cavium-rng.c | 11 +-
drivers/char/hw_random/nomadik-rng.c | 7 +-
drivers/char/tpm/tpm-chip.c | 46 +---
drivers/char/tpm/tpm.h | 2 +
drivers/char/tpm/tpm2-space.c | 65 ++++++
drivers/char/virtio_console.c | 7 +
drivers/clk/actions/owl-s700.c | 1 +
drivers/clk/actions/owl-s900.c | 2 +-
drivers/clk/at91/sama7g5.c | 8 +-
drivers/clk/clk-clps711x.c | 2 +
drivers/clk/clk.c | 13 ++
drivers/clk/imx/clk-imx7d.c | 1 -
drivers/clk/loongson1/clk-loongson1c.c | 1 +
drivers/clk/qcom/clk-rcg2.c | 14 +-
drivers/clk/qcom/gcc-ipq8074.c | 21 +-
drivers/clk/qcom/gcc-msm8994.c | 1 +
drivers/clk/tegra/clk-tegra124-emc.c | 1 +
.../clk/uniphier/clk-uniphier-fixed-rate.c | 1 +
drivers/clocksource/acpi_pm.c | 6 +-
drivers/clocksource/exynos_mct.c | 60 +++--
drivers/clocksource/timer-microchip-pit64b.c | 2 +-
drivers/clocksource/timer-of.c | 6 +-
drivers/clocksource/timer-ti-dm-systimer.c | 4 +-
drivers/cpufreq/qcom-cpufreq-nvmem.c | 2 +-
.../allwinner/sun8i-ce/sun8i-ce-cipher.c | 3 +
.../crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 3 +
.../allwinner/sun8i-ss/sun8i-ss-cipher.c | 3 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 2 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 3 +
drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +
drivers/crypto/ccp/ccp-dmaengine.c | 16 ++
drivers/crypto/ccree/cc_buffer_mgr.c | 7 +
drivers/crypto/ccree/cc_cipher.c | 2 +-
drivers/crypto/mxs-dcp.c | 2 +-
.../crypto/rockchip/rk3288_crypto_skcipher.c | 1 -
drivers/crypto/vmx/Kconfig | 4 +
drivers/dax/super.c | 1 +
drivers/dma-buf/udmabuf.c | 4 +
drivers/dma/hisi_dma.c | 2 +-
drivers/dma/pl330.c | 3 +-
drivers/firmware/efi/efi-pstore.c | 2 +-
drivers/firmware/google/Kconfig | 2 +-
drivers/firmware/qcom_scm.c | 6 -
drivers/firmware/stratix10-svc.c | 2 +-
drivers/fsi/fsi-master-aspeed.c | 21 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +-
.../display/dc/irq/dcn21/irq_service_dcn21.c | 14 --
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 4 +-
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 2 +-
drivers/gpu/drm/bridge/adv7511/adv7511.h | 1 +
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 29 ++-
drivers/gpu/drm/bridge/cdns-dsi.c | 1 +
drivers/gpu/drm/bridge/nwl-dsi.c | 1 +
drivers/gpu/drm/bridge/sil-sii8620.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 5 +-
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 1 +
drivers/gpu/drm/drm_edid.c | 11 +-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
drivers/gpu/drm/meson/meson_drv.c | 6 +-
drivers/gpu/drm/meson/meson_osd_afbcd.c | 41 ++--
drivers/gpu/drm/meson/meson_osd_afbcd.h | 1 +
drivers/gpu/drm/mgag200/mgag200_mode.c | 5 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 8 +
drivers/gpu/drm/msm/dp/dp_display.c | 5 +
.../gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c | 9 +-
drivers/gpu/drm/panfrost/panfrost_gpu.c | 5 +-
drivers/gpu/drm/pl111/pl111_drv.c | 4 +-
drivers/gpu/drm/tegra/dsi.c | 4 +-
drivers/gpu/host1x/dev.c | 1 +
drivers/greybus/svc.c | 8 +-
drivers/hid/hid-logitech-dj.c | 1 +
drivers/hid/i2c-hid/i2c-hid-core.c | 32 ++-
drivers/hid/intel-ish-hid/ishtp-fw-loader.c | 29 +--
drivers/hv/Kconfig | 1 +
drivers/hv/hv_balloon.c | 2 +-
drivers/hwmon/pmbus/pmbus.h | 1 +
drivers/hwmon/pmbus/pmbus_core.c | 18 +-
drivers/hwmon/sch56xx-common.c | 2 +-
drivers/hwtracing/coresight/coresight-catu.c | 3 +-
.../hwtracing/coresight/coresight-cpu-debug.c | 4 +-
.../hwtracing/coresight/coresight-cti-core.c | 4 +-
drivers/hwtracing/coresight/coresight-etb10.c | 4 +-
.../coresight/coresight-etm3x-core.c | 4 +-
.../coresight/coresight-etm4x-core.c | 4 +-
.../coresight/coresight-etm4x-sysfs.c | 8 +-
.../hwtracing/coresight/coresight-funnel.c | 4 +-
.../coresight/coresight-replicator.c | 4 +-
drivers/hwtracing/coresight/coresight-stm.c | 4 +-
.../hwtracing/coresight/coresight-tmc-core.c | 4 +-
drivers/hwtracing/coresight/coresight-tpiu.c | 4 +-
drivers/i2c/busses/i2c-meson.c | 12 +-
drivers/i2c/busses/i2c-nomadik.c | 4 +-
drivers/i2c/busses/i2c-xiic.c | 3 +-
drivers/i2c/muxes/i2c-demux-pinctrl.c | 5 +-
drivers/iio/accel/mma8452.c | 29 ++-
drivers/iio/adc/twl6030-gpadc.c | 2 +
drivers/iio/afe/iio-rescale.c | 8 +-
drivers/iio/inkern.c | 40 +++-
drivers/infiniband/core/cma.c | 2 +-
drivers/infiniband/core/verbs.c | 1 +
drivers/infiniband/hw/hfi1/verbs.c | 3 +-
drivers/infiniband/hw/mlx5/devx.c | 4 +-
drivers/infiniband/hw/mlx5/mr.c | 2 +
drivers/input/input.c | 6 -
drivers/input/serio/ambakmi.c | 3 +-
drivers/input/touchscreen/zinitix.c | 44 +++-
drivers/iommu/iova.c | 5 +-
drivers/iommu/ipmmu-vmsa.c | 4 +-
drivers/irqchip/irq-nvic.c | 2 +
drivers/irqchip/qcom-pdc.c | 5 +-
drivers/mailbox/imx-mailbox.c | 9 +
drivers/mailbox/tegra-hsp.c | 5 +
drivers/md/dm-crypt.c | 2 +-
drivers/md/dm-integrity.c | 6 +-
drivers/media/i2c/adv7511-v4l2.c | 2 +-
drivers/media/i2c/adv7604.c | 2 +-
drivers/media/i2c/adv7842.c | 2 +-
drivers/media/pci/bt8xx/bttv-driver.c | 4 +-
drivers/media/pci/cx88/cx88-mpeg.c | 3 +
drivers/media/pci/ivtv/ivtv-driver.h | 1 -
drivers/media/pci/ivtv/ivtv-ioctl.c | 10 +-
drivers/media/pci/ivtv/ivtv-streams.c | 11 +-
drivers/media/pci/saa7134/saa7134-alsa.c | 8 +-
drivers/media/platform/aspeed-video.c | 9 +-
drivers/media/platform/coda/coda-common.c | 1 +
drivers/media/platform/davinci/vpif.c | 12 +-
.../platform/mtk-vcodec/mtk_vcodec_fw_vpu.c | 2 +
drivers/media/rc/gpio-ir-tx.c | 28 ++-
drivers/media/rc/ir_toy.c | 2 +-
.../media/test-drivers/vidtv/vidtv_s302m.c | 17 +-
drivers/media/usb/em28xx/em28xx-cards.c | 13 +-
drivers/media/usb/go7007/s2250-board.c | 10 +-
drivers/media/usb/hdpvr/hdpvr-video.c | 4 +-
drivers/media/usb/stk1160/stk1160-core.c | 2 +-
drivers/media/usb/stk1160/stk1160-v4l.c | 10 +-
drivers/media/usb/stk1160/stk1160.h | 2 +-
drivers/media/v4l2-core/v4l2-mem2mem.c | 53 ++++-
drivers/memory/emif.c | 8 +-
drivers/memory/pl172.c | 4 +-
drivers/memory/pl353-smc.c | 4 +-
drivers/mfd/asic3.c | 10 +-
drivers/mfd/mc13xxx-core.c | 4 +-
drivers/misc/cardreader/alcor_pci.c | 9 +-
drivers/misc/habanalabs/common/debugfs.c | 2 +
drivers/misc/kgdbts.c | 4 +-
drivers/misc/mei/hw-me-regs.h | 1 +
drivers/misc/mei/interrupt.c | 35 ++-
drivers/misc/mei/pci-me.c | 1 +
drivers/mmc/core/host.c | 15 +-
drivers/mmc/host/davinci_mmc.c | 6 +-
drivers/mmc/host/mmci.c | 4 +-
drivers/mtd/nand/onenand/generic.c | 7 +-
drivers/mtd/nand/raw/atmel/nand-controller.c | 14 +-
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 3 +
drivers/mtd/nand/raw/nand_base.c | 44 ++--
drivers/net/bareudp.c | 25 +--
drivers/net/can/m_can/m_can.c | 5 +-
.../net/can/spi/mcp251xfd/mcp251xfd-core.c | 2 +-
drivers/net/can/usb/mcba_usb.c | 26 ++-
drivers/net/can/vxcan.c | 2 +-
drivers/net/dsa/bcm_sf2_cfp.c | 6 +-
drivers/net/dsa/microchip/ksz8795_spi.c | 11 +
drivers/net/dsa/microchip/ksz9477_spi.c | 12 +
drivers/net/dsa/mv88e6xxx/chip.c | 1 +
drivers/net/ethernet/8390/mcf8390.c | 10 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 +-
.../ethernet/freescale/enetc/enetc_ethtool.c | 5 +-
drivers/net/ethernet/intel/i40e/i40e_xsk.c | 16 +-
.../net/ethernet/pensando/ionic/ionic_main.c | 6 +-
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
.../net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/sun/sunhme.c | 6 +-
.../net/ethernet/xilinx/xilinx_axienet_main.c | 72 +++---
drivers/net/phy/broadcom.c | 21 ++
drivers/net/wireguard/queueing.c | 3 +-
drivers/net/wireguard/socket.c | 5 +-
drivers/net/wireless/ath/ath10k/snoc.c | 2 +-
drivers/net/wireless/ath/ath10k/wow.c | 7 +-
drivers/net/wireless/ath/ath9k/htc_hst.c | 5 +
drivers/net/wireless/ath/carl9170/main.c | 2 +-
.../broadcom/brcm80211/brcmfmac/firmware.c | 2 +
.../broadcom/brcm80211/brcmfmac/pcie.c | 66 ++----
.../net/wireless/intel/iwlwifi/dvm/mac80211.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 +-
.../net/wireless/mediatek/mt76/mt7603/main.c | 3 +
.../net/wireless/mediatek/mt76/mt7615/main.c | 3 +
.../net/wireless/mediatek/mt76/mt7915/mcu.c | 9 +-
drivers/net/wireless/ray_cs.c | 6 +
drivers/nvdimm/region_devs.c | 3 +
drivers/nvme/host/core.c | 9 +-
drivers/nvme/host/tcp.c | 40 ++++
drivers/pci/controller/pci-aardvark.c | 4 +-
drivers/pci/controller/pci-xgene.c | 35 ++-
drivers/pci/hotplug/pciehp_hpc.c | 2 +
drivers/pci/quirks.c | 12 +
drivers/phy/phy-core-mipi-dphy.c | 4 +-
drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 2 +
drivers/pinctrl/mediatek/pinctrl-paris.c | 30 ++-
drivers/pinctrl/nomadik/pinctrl-nomadik.c | 4 +-
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 185 ++++++++--------
drivers/pinctrl/pinconf-generic.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 2 +
drivers/pinctrl/renesas/core.c | 5 +-
drivers/pinctrl/renesas/pfc-r8a77470.c | 4 +-
drivers/pinctrl/samsung/pinctrl-samsung.c | 30 ++-
drivers/platform/chrome/Makefile | 3 +-
.../platform/chrome/cros_ec_sensorhub_ring.c | 3 +-
.../platform/chrome/cros_ec_sensorhub_trace.h | 123 +++++++++++
drivers/platform/chrome/cros_ec_trace.h | 95 --------
drivers/platform/chrome/cros_ec_typec.c | 6 +
drivers/platform/x86/huawei-wmi.c | 13 +-
drivers/power/reset/gemini-poweroff.c | 4 +-
drivers/power/supply/ab8500_fg.c | 4 +-
drivers/power/supply/bq24190_charger.c | 7 +-
drivers/power/supply/wm8350_power.c | 97 ++++++--
drivers/pwm/pwm-lpc18xx-sct.c | 20 +-
drivers/regulator/qcom_smd-regulator.c | 4 +-
.../regulator/rpi-panel-attiny-regulator.c | 56 ++++-
drivers/remoteproc/qcom_q6v5_adsp.c | 1 +
drivers/remoteproc/qcom_q6v5_mss.c | 11 +-
drivers/remoteproc/qcom_wcnss.c | 1 +
drivers/remoteproc/remoteproc_debugfs.c | 2 +-
drivers/rtc/interface.c | 7 +-
drivers/rtc/rtc-pl030.c | 4 +-
drivers/rtc/rtc-pl031.c | 4 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +-
drivers/scsi/libsas/sas_ata.c | 2 +-
drivers/scsi/pm8001/pm8001_hwi.c | 23 +-
drivers/scsi/pm8001/pm80xx_hwi.c | 209 ++++++++++--------
drivers/scsi/qla2xxx/qla_attr.c | 7 +-
drivers/scsi/qla2xxx/qla_def.h | 10 +-
drivers/scsi/qla2xxx/qla_gs.c | 5 +-
drivers/scsi/qla2xxx/qla_init.c | 73 ++++--
drivers/scsi/qla2xxx/qla_iocb.c | 8 +-
drivers/scsi/qla2xxx/qla_isr.c | 1 +
drivers/scsi/qla2xxx/qla_mbx.c | 14 +-
drivers/scsi/qla2xxx/qla_nvme.c | 22 ++
drivers/scsi/qla2xxx/qla_os.c | 8 +-
drivers/scsi/qla2xxx/qla_sup.c | 4 +-
drivers/scsi/qla2xxx/qla_target.c | 4 +-
drivers/soc/qcom/ocmem.c | 1 +
drivers/soc/qcom/qcom_aoss.c | 2 +-
drivers/soc/qcom/rpmpd.c | 3 +
drivers/soc/ti/wkup_m3_ipc.c | 4 +-
drivers/soundwire/intel.c | 4 +-
drivers/spi/spi-mxic.c | 28 +--
drivers/spi/spi-pl022.c | 5 +-
drivers/spi/spi-pxa2xx-pci.c | 17 +-
drivers/spi/spi-tegra114.c | 4 +
drivers/spi/spi-tegra20-slink.c | 8 +-
drivers/spi/spi-zynqmp-gqspi.c | 5 +-
drivers/spi/spi.c | 4 +-
drivers/staging/iio/adc/ad7280a.c | 4 +-
.../staging/media/atomisp/pci/atomisp_acc.c | 28 ++-
.../media/atomisp/pci/atomisp_gmin_platform.c | 18 ++
drivers/staging/media/atomisp/pci/hmm/hmm.c | 7 +-
.../staging/media/hantro/hantro_h1_jpeg_enc.c | 2 +-
drivers/staging/media/hantro/hantro_h1_regs.h | 2 +-
drivers/staging/media/meson/vdec/esparser.c | 7 +-
.../staging/media/meson/vdec/vdec_helpers.c | 8 +-
.../staging/media/meson/vdec/vdec_helpers.h | 4 +-
.../staging/media/sunxi/cedrus/cedrus_h264.c | 2 +-
.../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +-
drivers/staging/media/zoran/zoran.h | 2 +-
drivers/staging/media/zoran/zoran_card.c | 86 ++++---
drivers/staging/media/zoran/zoran_device.c | 7 +-
drivers/staging/media/zoran/zoran_driver.c | 18 +-
drivers/staging/mt7621-dts/gbpc1.dts | 40 ++--
drivers/staging/mt7621-dts/gbpc2.dts | 116 +++++++++-
drivers/staging/mt7621-dts/mt7621.dtsi | 26 ++-
.../intel/int340x_thermal/int3400_thermal.c | 7 +-
drivers/tty/hvc/hvc_iucv.c | 4 +-
drivers/tty/mxser.c | 15 +-
drivers/tty/serial/8250/8250_dma.c | 11 +-
drivers/tty/serial/8250/8250_lpss.c | 28 ++-
drivers/tty/serial/8250/8250_mid.c | 19 +-
drivers/tty/serial/8250/8250_port.c | 16 +-
drivers/tty/serial/amba-pl010.c | 4 +-
drivers/tty/serial/amba-pl011.c | 3 +-
drivers/tty/serial/kgdboc.c | 6 +-
drivers/tty/serial/serial_core.c | 14 ++
drivers/usb/host/xhci-hub.c | 5 +-
drivers/usb/host/xhci-mem.c | 2 +-
drivers/usb/host/xhci.c | 20 +-
drivers/usb/host/xhci.h | 14 +-
drivers/usb/serial/Kconfig | 1 +
drivers/usb/serial/pl2303.c | 1 +
drivers/usb/serial/pl2303.h | 3 +
drivers/usb/serial/usb-serial-simple.c | 7 +
drivers/usb/storage/ene_ub6250.c | 155 +++++++------
drivers/usb/storage/realtek_cr.c | 2 +-
drivers/vdpa/mlx5/net/mlx5_vnet.c | 18 +-
drivers/vfio/platform/vfio_amba.c | 15 +-
drivers/video/fbdev/amba-clcd.c | 4 +-
drivers/video/fbdev/atafb.c | 12 +-
drivers/video/fbdev/atmel_lcdfb.c | 11 +-
drivers/video/fbdev/cirrusfb.c | 16 +-
drivers/video/fbdev/controlfb.c | 6 +-
drivers/video/fbdev/core/fbcvt.c | 53 ++---
drivers/video/fbdev/matrox/matroxfb_base.c | 2 +-
drivers/video/fbdev/nvidia/nv_i2c.c | 2 +-
.../omap2/omapfb/displays/connector-dvi.c | 1 +
.../omap2/omapfb/displays/panel-dsi-cm.c | 8 +-
.../omapfb/displays/panel-sony-acx565akm.c | 2 +-
.../omapfb/displays/panel-tpo-td043mtea1.c | 4 +-
drivers/video/fbdev/sm712fb.c | 46 +---
drivers/video/fbdev/smscufx.c | 3 +-
drivers/video/fbdev/udlfb.c | 8 +-
drivers/video/fbdev/w100fb.c | 15 +-
drivers/watchdog/rti_wdt.c | 1 +
drivers/watchdog/sp805_wdt.c | 4 +-
fs/binfmt_elf.c | 24 +-
fs/btrfs/reflink.c | 7 +-
fs/cifs/smb2ops.c | 130 ++++++-----
fs/coredump.c | 39 +++-
fs/exec.c | 26 ++-
fs/ext2/super.c | 6 +-
fs/ext4/inline.c | 9 +-
fs/ext4/inode.c | 25 +++
fs/ext4/mballoc.c | 126 ++++++-----
fs/ext4/namei.c | 10 +-
fs/f2fs/checkpoint.c | 8 +-
fs/f2fs/compress.c | 5 +-
fs/f2fs/data.c | 9 +-
fs/f2fs/file.c | 5 +-
fs/f2fs/gc.c | 4 +-
fs/f2fs/inode.c | 1 +
fs/f2fs/node.c | 6 +-
fs/f2fs/segment.c | 7 +
fs/f2fs/super.c | 6 +-
fs/f2fs/sysfs.c | 2 +-
fs/file.c | 31 ++-
fs/gfs2/rgrp.c | 3 +-
fs/io_uring.c | 7 +-
fs/jfs/jfs_dmap.c | 7 +
fs/nfs/callback_proc.c | 27 +--
fs/nfs/callback_xdr.c | 4 -
fs/nfs/nfs2xdr.c | 2 +-
fs/nfs/nfs3xdr.c | 21 +-
fs/nfs/nfs4proc.c | 1 +
fs/nfs/pnfs.c | 11 +
fs/nfs/pnfs.h | 2 +
fs/nfs/write.c | 5 +-
fs/nfsd/filecache.c | 6 +-
fs/nfsd/nfs4state.c | 12 +-
fs/nfsd/nfsproc.c | 2 +-
fs/nfsd/xdr.h | 2 +-
fs/ntfs/inode.c | 4 +
fs/proc/bootconfig.c | 2 +
fs/pstore/platform.c | 38 ++--
include/linux/amba/bus.h | 2 +-
include/linux/mtd/rawnand.h | 2 +
include/linux/pstore.h | 6 +-
include/linux/serial_core.h | 2 +
include/linux/soc/ti/ti_sci_protocol.h | 2 +-
include/linux/sunrpc/xdr.h | 2 +
include/net/udp.h | 1 +
include/net/udp_tunnel.h | 3 +-
include/sound/pcm.h | 1 +
include/trace/events/ext4.h | 78 ++++---
include/trace/events/rxrpc.h | 8 +-
include/uapi/linux/bpf.h | 12 +-
kernel/audit.h | 4 +
kernel/auditsc.c | 87 ++++++--
kernel/bpf/stackmap.c | 56 ++---
kernel/debug/kdb/kdb_support.c | 2 +-
kernel/dma/debug.c | 4 +-
kernel/events/core.c | 3 +
kernel/locking/lockdep.c | 38 ++--
kernel/locking/lockdep_internals.h | 6 +-
kernel/locking/lockdep_proc.c | 51 ++++-
kernel/power/hibernate.c | 2 +-
kernel/power/suspend_test.c | 8 +-
kernel/printk/printk.c | 6 +-
kernel/rseq.c | 9 +
kernel/sched/core.c | 1 +
kernel/sched/debug.c | 10 -
kernel/watch_queue.c | 4 +-
lib/kunit/try-catch.c | 2 +-
lib/raid6/test/Makefile | 4 +-
lib/raid6/test/test.c | 1 -
lib/test_kmod.c | 1 +
lib/test_lockup.c | 11 +-
lib/test_xarray.c | 22 ++
lib/xarray.c | 4 +
mm/kmemleak.c | 9 +-
mm/madvise.c | 3 +-
mm/memcontrol.c | 2 +-
mm/memory.c | 17 +-
mm/mempolicy.c | 8 +-
mm/mmap.c | 2 +-
mm/page_alloc.c | 9 +-
mm/usercopy.c | 5 +-
net/batman-adv/bridge_loop_avoidance.c | 6 +
net/batman-adv/distributed-arp-table.c | 3 +
net/batman-adv/gateway_client.c | 12 +-
net/batman-adv/gateway_client.h | 16 +-
net/batman-adv/hard-interface.h | 3 +
net/batman-adv/network-coding.c | 6 +
net/batman-adv/originator.c | 72 +-----
net/batman-adv/originator.h | 96 +++++++-
net/batman-adv/soft-interface.c | 15 +-
net/batman-adv/soft-interface.h | 16 +-
net/batman-adv/tp_meter.c | 3 +
net/batman-adv/translation-table.c | 22 +-
net/batman-adv/translation-table.h | 18 +-
net/batman-adv/tvlv.c | 6 +
net/bluetooth/hci_conn.c | 2 +
net/can/isotp.c | 69 +++---
net/ipv4/route.c | 18 +-
net/ipv4/tcp_output.c | 5 +-
net/ipv4/udp.c | 6 +
net/ipv6/udp.c | 4 +-
net/ipv6/xfrm6_output.c | 16 ++
net/netfilter/nf_conntrack_proto_tcp.c | 17 +-
net/netlink/af_netlink.c | 2 +
net/openvswitch/conntrack.c | 118 +++++-----
net/openvswitch/flow_netlink.c | 4 +-
net/rxrpc/ar-internal.h | 15 +-
net/rxrpc/call_event.c | 2 +-
net/rxrpc/call_object.c | 40 +++-
net/sunrpc/xprt.c | 7 +
net/tipc/socket.c | 3 +-
net/xfrm/xfrm_interface.c | 5 +-
samples/bpf/xdpsock_user.c | 5 +-
scripts/dtc/Makefile | 2 +-
scripts/gcc-plugins/stackleak_plugin.c | 25 ++-
security/integrity/evm/evm_main.c | 2 +-
security/keys/keyctl_pkey.c | 14 +-
security/security.c | 17 +-
security/selinux/hooks.c | 11 +-
security/selinux/include/policycap.h | 1 +
security/selinux/include/policycap_names.h | 3 +-
security/selinux/include/security.h | 7 +
security/selinux/selinuxfs.c | 2 +
security/selinux/xfrm.c | 2 +-
security/smack/smack_lsm.c | 2 +-
security/tomoyo/load_policy.c | 4 +-
sound/arm/aaci.c | 4 +-
sound/core/pcm.c | 1 +
sound/core/pcm_lib.c | 9 +-
sound/core/pcm_native.c | 39 +++-
sound/firewire/fcp.c | 4 +-
sound/isa/cs423x/cs4236.c | 8 +-
sound/pci/hda/patch_hdmi.c | 8 +-
sound/pci/hda/patch_realtek.c | 15 +-
sound/soc/atmel/atmel_ssc_dai.c | 5 +-
sound/soc/atmel/sam9g20_wm8731.c | 1 +
sound/soc/atmel/sam9x5_wm8731.c | 16 +-
sound/soc/codecs/Kconfig | 5 +
sound/soc/codecs/msm8916-wcd-analog.c | 22 +-
sound/soc/codecs/msm8916-wcd-digital.c | 5 +-
sound/soc/codecs/mt6358.c | 4 +
sound/soc/codecs/rt5663.c | 2 +
sound/soc/codecs/wcd934x.c | 6 +-
sound/soc/codecs/wm8350.c | 28 ++-
sound/soc/dwc/dwc-i2s.c | 17 +-
sound/soc/fsl/fsl_spdif.c | 2 +
sound/soc/fsl/imx-es8328.c | 1 +
sound/soc/generic/simple-card-utils.c | 2 +-
sound/soc/mxs/mxs-saif.c | 5 +-
sound/soc/mxs/mxs-sgtl5000.c | 3 +
sound/soc/rockchip/rockchip_i2s.c | 18 +-
sound/soc/sh/fsi.c | 19 +-
sound/soc/soc-compress.c | 5 +
sound/soc/soc-core.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +-
sound/soc/soc-topology.c | 3 +-
sound/soc/sof/imx/imx8m.c | 1 +
sound/soc/sof/intel/hda-loader.c | 11 +-
sound/soc/ti/davinci-i2s.c | 5 +-
sound/soc/xilinx/xlnx_formatter_pcm.c | 25 +++
sound/spi/at73c213.c | 27 ++-
tools/include/uapi/linux/bpf.h | 4 +-
tools/lib/bpf/btf_dump.c | 5 +
tools/lib/bpf/libbpf.c | 3 +
tools/lib/bpf/xsk.c | 11 +
.../selftests/bpf/progs/test_sock_fields.c | 2 +-
.../testing/selftests/bpf/test_lirc_mode2.sh | 5 +-
.../selftests/bpf/test_lwt_ip_encap.sh | 10 +-
.../selftests/net/test_vxlan_under_vrf.sh | 8 +-
tools/testing/selftests/vm/Makefile | 6 +-
tools/testing/selftests/x86/Makefile | 6 +-
tools/testing/selftests/x86/check_cc.sh | 2 +-
tools/virtio/virtio_test.c | 1 +
virt/kvm/kvm_main.c | 13 ++
613 files changed, 4980 insertions(+), 2512 deletions(-)
create mode 100644 arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts
create mode 100644 drivers/platform/chrome/cros_ec_sensorhub_trace.h
--
2.20.1
1
557
CVE-2022-21123,CVE-2022-21125,CVE-2022-21166
Gayatri Kammela (2):
x86/cpu: Add Elkhart Lake to Intel family
x86/cpu: Add another Alder Lake CPU to the Intel family
Guenter Roeck (1):
cpu/speculation: Add prototype for cpu_show_srbds()
Josh Poimboeuf (1):
x86/speculation/mmio: Print SMT warning
Pawan Gupta (10):
Documentation: Add documentation for Processor MMIO Stale Data
x86/speculation/mmio: Enumerate Processor MMIO Stale Data bug
x86/speculation: Add a common function for MD_CLEAR mitigation update
x86/speculation/mmio: Add mitigation for Processor MMIO Stale Data
x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations
x86/speculation/mmio: Enable CPU Fill buffer clearing on idle
x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale
Data
x86/speculation/srbds: Update SRBDS mitigation selection
x86/speculation/mmio: Reuse SRBDS mitigation for SBDS
KVM: x86/speculation: Disable Fill buffer clear within guests
Tony Luck (1):
x86/cpu: Add Lakefield, Alder Lake and Rocket Lake models to the to
Intel CPU family
Zhang Rui (1):
x86/cpu: Add Jasper Lake to Intel family
.../ABI/testing/sysfs-devices-system-cpu | 1 +
Documentation/admin-guide/hw-vuln/index.rst | 1 +
.../hw-vuln/processor_mmio_stale_data.rst | 246 ++++++++++++++++++
.../admin-guide/kernel-parameters.txt | 36 +++
arch/x86/include/asm/cpufeatures.h | 1 +
arch/x86/include/asm/intel-family.h | 11 +
arch/x86/include/asm/msr-index.h | 25 ++
arch/x86/include/asm/nospec-branch.h | 2 +
arch/x86/kernel/cpu/bugs.c | 235 ++++++++++++++---
arch/x86/kernel/cpu/common.c | 52 +++-
arch/x86/kvm/vmx.c | 76 +++++-
arch/x86/kvm/x86.c | 4 +
drivers/base/cpu.c | 8 +
include/linux/cpu.h | 4 +
14 files changed, 662 insertions(+), 40 deletions(-)
create mode 100644 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
--
2.25.1
1
16

[PATCH openEuler-1.0-LTS 1/4] fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
by Yongqiang Liu 06 Jul '22
by Yongqiang Liu 06 Jul '22
06 Jul '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
mainline inclusion
from mainline-5.19-rc1
commit 68f4c6eba70df70a720188bce95c85570ddfcc87
category: bugfix
bugzilla: 186540, https://gitee.com/openeuler/kernel/issues/I55AKK
CVE: NA
--------------------------------
Commit 505a666ee3fc ("writeback: plug writeback in wb_writeback() and
writeback_inodes_wb()") has us holding a plug during wb_writeback, which
may cause a potential ABBA dead lock:
wb_writeback fat_file_fsync
blk_start_plug(&plug)
for (;;) {
iter i-1: some reqs have been added into plug->mq_list // LOCK A
iter i:
progress = __writeback_inodes_wb(wb, work)
. writeback_sb_inodes // fat's bdev
. __writeback_single_inode
. . generic_writepages
. . __block_write_full_page
. . . . __generic_file_fsync
. . . . sync_inode_metadata
. . . . writeback_single_inode
. . . . __writeback_single_inode
. . . . fat_write_inode
. . . . __fat_write_inode
. . . . sync_dirty_buffer // fat's bdev
. . . . lock_buffer(bh) // LOCK B
. . . . submit_bh
. . . . blk_mq_get_tag // LOCK A
. . . trylock_buffer(bh) // LOCK B
. . . redirty_page_for_writepage
. . . wbc->pages_skipped++
. . --wbc->nr_to_write
. wrote += write_chunk - wbc.nr_to_write // wrote > 0
. requeue_inode
. redirty_tail_locked
if (progress) // progress > 0
continue;
iter i+1:
queue_io
// similar process with iter i, infinite for-loop !
}
blk_finish_plug(&plug) // flush plug won't be called
Above process triggers a hungtask like:
[ 399.044861] INFO: task bb:2607 blocked for more than 30 seconds.
[ 399.046824] Not tainted 5.18.0-rc1-00005-gefae4d9eb6a2-dirty
[ 399.051539] task:bb state:D stack: 0 pid: 2607 ppid:
2426 flags:0x00004000
[ 399.051556] Call Trace:
[ 399.051570] __schedule+0x480/0x1050
[ 399.051592] schedule+0x92/0x1a0
[ 399.051602] io_schedule+0x22/0x50
[ 399.051613] blk_mq_get_tag+0x1d3/0x3c0
[ 399.051640] __blk_mq_alloc_requests+0x21d/0x3f0
[ 399.051657] blk_mq_submit_bio+0x68d/0xca0
[ 399.051674] __submit_bio+0x1b5/0x2d0
[ 399.051708] submit_bio_noacct+0x34e/0x720
[ 399.051718] submit_bio+0x3b/0x150
[ 399.051725] submit_bh_wbc+0x161/0x230
[ 399.051734] __sync_dirty_buffer+0xd1/0x420
[ 399.051744] sync_dirty_buffer+0x17/0x20
[ 399.051750] __fat_write_inode+0x289/0x310
[ 399.051766] fat_write_inode+0x2a/0xa0
[ 399.051783] __writeback_single_inode+0x53c/0x6f0
[ 399.051795] writeback_single_inode+0x145/0x200
[ 399.051803] sync_inode_metadata+0x45/0x70
[ 399.051856] __generic_file_fsync+0xa3/0x150
[ 399.051880] fat_file_fsync+0x1d/0x80
[ 399.051895] vfs_fsync_range+0x40/0xb0
[ 399.051929] __x64_sys_fsync+0x18/0x30
In my test, 'need_resched()' (which is imported by 590dca3a71 "fs-writeback:
unplug before cond_resched in writeback_sb_inodes") in function
'writeback_sb_inodes()' seldom comes true, unless cond_resched() is deleted
from write_cache_pages().
Fix it by correcting wrote number according number of skipped pages
in writeback_sb_inodes().
Goto Link to find a reproducer.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=215837
Cc: stable(a)vger.kernel.org # v4.3
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Jan Kara <jack(a)suse.cz>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Link: https://lore.kernel.org/r/20220510133805.1988292-1-chengzhihao1@huawei.com
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/fs-writeback.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 5abb71da2b9a..23a632f02839 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -1568,11 +1568,12 @@ static long writeback_sb_inodes(struct super_block *sb,
};
unsigned long start_time = jiffies;
long write_chunk;
- long wrote = 0; /* count both pages and inodes */
+ long total_wrote = 0; /* count both pages and inodes */
while (!list_empty(&wb->b_io)) {
struct inode *inode = wb_inode(wb->b_io.prev);
struct bdi_writeback *tmp_wb;
+ long wrote;
if (inode->i_sb != sb) {
if (work->sb) {
@@ -1648,7 +1649,9 @@ static long writeback_sb_inodes(struct super_block *sb,
wbc_detach_inode(&wbc);
work->nr_pages -= write_chunk - wbc.nr_to_write;
- wrote += write_chunk - wbc.nr_to_write;
+ wrote = write_chunk - wbc.nr_to_write - wbc.pages_skipped;
+ wrote = wrote < 0 ? 0 : wrote;
+ total_wrote += wrote;
if (need_resched()) {
/*
@@ -1670,7 +1673,7 @@ static long writeback_sb_inodes(struct super_block *sb,
tmp_wb = inode_to_wb_and_lock_list(inode);
spin_lock(&inode->i_lock);
if (!(inode->i_state & I_DIRTY_ALL))
- wrote++;
+ total_wrote++;
requeue_inode(inode, tmp_wb, &wbc);
inode_sync_complete(inode);
spin_unlock(&inode->i_lock);
@@ -1684,14 +1687,14 @@ static long writeback_sb_inodes(struct super_block *sb,
* bail out to wb_writeback() often enough to check
* background threshold and other termination conditions.
*/
- if (wrote) {
+ if (total_wrote) {
if (time_is_before_jiffies(start_time + HZ / 10UL))
break;
if (work->nr_pages <= 0)
break;
}
}
- return wrote;
+ return total_wrote;
}
static long __writeback_inodes_wb(struct bdi_writeback *wb,
--
2.25.1
1
3

[PATCH openEuler-5.10-LTS 01/30] Documentation: Add documentation for Processor MMIO Stale Data
by Zheng Zengkai 05 Jul '22
by Zheng Zengkai 05 Jul '22
05 Jul '22
From: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
stable inclusion
from stable-v5.10.123
commit f8a85334a57e7842320476ff27be3a5f151da364
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5D5RS
CVE: CVE-2022-21123,CVE-2022-21125,CVE-2022-21166
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=…
--------------------------------
commit 4419470191386456e0b8ed4eb06a70b0021798a6 upstream
Add the admin guide for Processor MMIO stale data vulnerabilities.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
Documentation/admin-guide/hw-vuln/index.rst | 1 +
.../hw-vuln/processor_mmio_stale_data.rst | 246 ++++++++++++++++++
2 files changed, 247 insertions(+)
create mode 100644 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
diff --git a/Documentation/admin-guide/hw-vuln/index.rst b/Documentation/admin-guide/hw-vuln/index.rst
index ca4dbdd9016d..2adec1e6520a 100644
--- a/Documentation/admin-guide/hw-vuln/index.rst
+++ b/Documentation/admin-guide/hw-vuln/index.rst
@@ -15,3 +15,4 @@ are configurable at compile, boot or run time.
tsx_async_abort
multihit.rst
special-register-buffer-data-sampling.rst
+ processor_mmio_stale_data.rst
diff --git a/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
new file mode 100644
index 000000000000..9393c50b5afc
--- /dev/null
+++ b/Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
@@ -0,0 +1,246 @@
+=========================================
+Processor MMIO Stale Data Vulnerabilities
+=========================================
+
+Processor MMIO Stale Data Vulnerabilities are a class of memory-mapped I/O
+(MMIO) vulnerabilities that can expose data. The sequences of operations for
+exposing data range from simple to very complex. Because most of the
+vulnerabilities require the attacker to have access to MMIO, many environments
+are not affected. System environments using virtualization where MMIO access is
+provided to untrusted guests may need mitigation. These vulnerabilities are
+not transient execution attacks. However, these vulnerabilities may propagate
+stale data into core fill buffers where the data can subsequently be inferred
+by an unmitigated transient execution attack. Mitigation for these
+vulnerabilities includes a combination of microcode update and software
+changes, depending on the platform and usage model. Some of these mitigations
+are similar to those used to mitigate Microarchitectural Data Sampling (MDS) or
+those used to mitigate Special Register Buffer Data Sampling (SRBDS).
+
+Data Propagators
+================
+Propagators are operations that result in stale data being copied or moved from
+one microarchitectural buffer or register to another. Processor MMIO Stale Data
+Vulnerabilities are operations that may result in stale data being directly
+read into an architectural, software-visible state or sampled from a buffer or
+register.
+
+Fill Buffer Stale Data Propagator (FBSDP)
+-----------------------------------------
+Stale data may propagate from fill buffers (FB) into the non-coherent portion
+of the uncore on some non-coherent writes. Fill buffer propagation by itself
+does not make stale data architecturally visible. Stale data must be propagated
+to a location where it is subject to reading or sampling.
+
+Sideband Stale Data Propagator (SSDP)
+-------------------------------------
+The sideband stale data propagator (SSDP) is limited to the client (including
+Intel Xeon server E3) uncore implementation. The sideband response buffer is
+shared by all client cores. For non-coherent reads that go to sideband
+destinations, the uncore logic returns 64 bytes of data to the core, including
+both requested data and unrequested stale data, from a transaction buffer and
+the sideband response buffer. As a result, stale data from the sideband
+response and transaction buffers may now reside in a core fill buffer.
+
+Primary Stale Data Propagator (PSDP)
+------------------------------------
+The primary stale data propagator (PSDP) is limited to the client (including
+Intel Xeon server E3) uncore implementation. Similar to the sideband response
+buffer, the primary response buffer is shared by all client cores. For some
+processors, MMIO primary reads will return 64 bytes of data to the core fill
+buffer including both requested data and unrequested stale data. This is
+similar to the sideband stale data propagator.
+
+Vulnerabilities
+===============
+Device Register Partial Write (DRPW) (CVE-2022-21166)
+-----------------------------------------------------
+Some endpoint MMIO registers incorrectly handle writes that are smaller than
+the register size. Instead of aborting the write or only copying the correct
+subset of bytes (for example, 2 bytes for a 2-byte write), more bytes than
+specified by the write transaction may be written to the register. On
+processors affected by FBSDP, this may expose stale data from the fill buffers
+of the core that created the write transaction.
+
+Shared Buffers Data Sampling (SBDS) (CVE-2022-21125)
+----------------------------------------------------
+After propagators may have moved data around the uncore and copied stale data
+into client core fill buffers, processors affected by MFBDS can leak data from
+the fill buffer. It is limited to the client (including Intel Xeon server E3)
+uncore implementation.
+
+Shared Buffers Data Read (SBDR) (CVE-2022-21123)
+------------------------------------------------
+It is similar to Shared Buffer Data Sampling (SBDS) except that the data is
+directly read into the architectural software-visible state. It is limited to
+the client (including Intel Xeon server E3) uncore implementation.
+
+Affected Processors
+===================
+Not all the CPUs are affected by all the variants. For instance, most
+processors for the server market (excluding Intel Xeon E3 processors) are
+impacted by only Device Register Partial Write (DRPW).
+
+Below is the list of affected Intel processors [#f1]_:
+
+ =================== ============ =========
+ Common name Family_Model Steppings
+ =================== ============ =========
+ HASWELL_X 06_3FH 2,4
+ SKYLAKE_L 06_4EH 3
+ BROADWELL_X 06_4FH All
+ SKYLAKE_X 06_55H 3,4,6,7,11
+ BROADWELL_D 06_56H 3,4,5
+ SKYLAKE 06_5EH 3
+ ICELAKE_X 06_6AH 4,5,6
+ ICELAKE_D 06_6CH 1
+ ICELAKE_L 06_7EH 5
+ ATOM_TREMONT_D 06_86H All
+ LAKEFIELD 06_8AH 1
+ KABYLAKE_L 06_8EH 9 to 12
+ ATOM_TREMONT 06_96H 1
+ ATOM_TREMONT_L 06_9CH 0
+ KABYLAKE 06_9EH 9 to 13
+ COMETLAKE 06_A5H 2,3,5
+ COMETLAKE_L 06_A6H 0,1
+ ROCKETLAKE 06_A7H 1
+ =================== ============ =========
+
+If a CPU is in the affected processor list, but not affected by a variant, it
+is indicated by new bits in MSR IA32_ARCH_CAPABILITIES. As described in a later
+section, mitigation largely remains the same for all the variants, i.e. to
+clear the CPU fill buffers via VERW instruction.
+
+New bits in MSRs
+================
+Newer processors and microcode update on existing affected processors added new
+bits to IA32_ARCH_CAPABILITIES MSR. These bits can be used to enumerate
+specific variants of Processor MMIO Stale Data vulnerabilities and mitigation
+capability.
+
+MSR IA32_ARCH_CAPABILITIES
+--------------------------
+Bit 13 - SBDR_SSDP_NO - When set, processor is not affected by either the
+ Shared Buffers Data Read (SBDR) vulnerability or the sideband stale
+ data propagator (SSDP).
+Bit 14 - FBSDP_NO - When set, processor is not affected by the Fill Buffer
+ Stale Data Propagator (FBSDP).
+Bit 15 - PSDP_NO - When set, processor is not affected by Primary Stale Data
+ Propagator (PSDP).
+Bit 17 - FB_CLEAR - When set, VERW instruction will overwrite CPU fill buffer
+ values as part of MD_CLEAR operations. Processors that do not
+ enumerate MDS_NO (meaning they are affected by MDS) but that do
+ enumerate support for both L1D_FLUSH and MD_CLEAR implicitly enumerate
+ FB_CLEAR as part of their MD_CLEAR support.
+Bit 18 - FB_CLEAR_CTRL - Processor supports read and write to MSR
+ IA32_MCU_OPT_CTRL[FB_CLEAR_DIS]. On such processors, the FB_CLEAR_DIS
+ bit can be set to cause the VERW instruction to not perform the
+ FB_CLEAR action. Not all processors that support FB_CLEAR will support
+ FB_CLEAR_CTRL.
+
+MSR IA32_MCU_OPT_CTRL
+---------------------
+Bit 3 - FB_CLEAR_DIS - When set, VERW instruction does not perform the FB_CLEAR
+action. This may be useful to reduce the performance impact of FB_CLEAR in
+cases where system software deems it warranted (for example, when performance
+is more critical, or the untrusted software has no MMIO access). Note that
+FB_CLEAR_DIS has no impact on enumeration (for example, it does not change
+FB_CLEAR or MD_CLEAR enumeration) and it may not be supported on all processors
+that enumerate FB_CLEAR.
+
+Mitigation
+==========
+Like MDS, all variants of Processor MMIO Stale Data vulnerabilities have the
+same mitigation strategy to force the CPU to clear the affected buffers before
+an attacker can extract the secrets.
+
+This is achieved by using the otherwise unused and obsolete VERW instruction in
+combination with a microcode update. The microcode clears the affected CPU
+buffers when the VERW instruction is executed.
+
+Kernel reuses the MDS function to invoke the buffer clearing:
+
+ mds_clear_cpu_buffers()
+
+On MDS affected CPUs, the kernel already invokes CPU buffer clear on
+kernel/userspace, hypervisor/guest and C-state (idle) transitions. No
+additional mitigation is needed on such CPUs.
+
+For CPUs not affected by MDS or TAA, mitigation is needed only for the attacker
+with MMIO capability. Therefore, VERW is not required for kernel/userspace. For
+virtualization case, VERW is only needed at VMENTER for a guest with MMIO
+capability.
+
+Mitigation points
+-----------------
+Return to user space
+^^^^^^^^^^^^^^^^^^^^
+Same mitigation as MDS when affected by MDS/TAA, otherwise no mitigation
+needed.
+
+C-State transition
+^^^^^^^^^^^^^^^^^^
+Control register writes by CPU during C-state transition can propagate data
+from fill buffer to uncore buffers. Execute VERW before C-state transition to
+clear CPU fill buffers.
+
+Guest entry point
+^^^^^^^^^^^^^^^^^
+Same mitigation as MDS when processor is also affected by MDS/TAA, otherwise
+execute VERW at VMENTER only for MMIO capable guests. On CPUs not affected by
+MDS/TAA, guest without MMIO access cannot extract secrets using Processor MMIO
+Stale Data vulnerabilities, so there is no need to execute VERW for such guests.
+
+Mitigation control on the kernel command line
+---------------------------------------------
+The kernel command line allows to control the Processor MMIO Stale Data
+mitigations at boot time with the option "mmio_stale_data=". The valid
+arguments for this option are:
+
+ ========== =================================================================
+ full If the CPU is vulnerable, enable mitigation; CPU buffer clearing
+ on exit to userspace and when entering a VM. Idle transitions are
+ protected as well. It does not automatically disable SMT.
+ full,nosmt Same as full, with SMT disabled on vulnerable CPUs. This is the
+ complete mitigation.
+ off Disables mitigation completely.
+ ========== =================================================================
+
+If the CPU is affected and mmio_stale_data=off is not supplied on the kernel
+command line, then the kernel selects the appropriate mitigation.
+
+Mitigation status information
+-----------------------------
+The Linux kernel provides a sysfs interface to enumerate the current
+vulnerability status of the system: whether the system is vulnerable, and
+which mitigations are active. The relevant sysfs file is:
+
+ /sys/devices/system/cpu/vulnerabilities/mmio_stale_data
+
+The possible values in this file are:
+
+ .. list-table::
+
+ * - 'Not affected'
+ - The processor is not vulnerable
+ * - 'Vulnerable'
+ - The processor is vulnerable, but no mitigation enabled
+ * - 'Vulnerable: Clear CPU buffers attempted, no microcode'
+ - The processor is vulnerable, but microcode is not updated. The
+ mitigation is enabled on a best effort basis.
+ * - 'Mitigation: Clear CPU buffers'
+ - The processor is vulnerable and the CPU buffer clearing mitigation is
+ enabled.
+
+If the processor is vulnerable then the following information is appended to
+the above information:
+
+ ======================== ===========================================
+ 'SMT vulnerable' SMT is enabled
+ 'SMT disabled' SMT is disabled
+ 'SMT Host state unknown' Kernel runs in a VM, Host SMT state unknown
+ ======================== ===========================================
+
+References
+----------
+.. [#f1] Affected Processors
+ https://www.intel.com/content/www/us/en/developer/topic-technology/software…
--
2.20.1
1
29
Backport 5.10.110 LTS patches from upstream
PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup"
can: m_can: m_can_tx_handler(): fix use after free of skb
openvswitch: Fixed nd target mask field in the flow dump.
docs: sysctl/kernel: add missing bit to panic_print
um: Fix uml_mconsole stop/go
ARM: dts: spear13xx: Update SPI dma properties
ARM: dts: spear1340: Update serial node properties
ASoC: topology: Allow TLV control to be either read or write
dt-bindings: spi: mxic: The interrupt property is not mandatory
dt-bindings: mtd: nand-controller: Fix a comment in the examples
dt-bindings: mtd: nand-controller: Fix the reg property description
bpf: Fix comment for helper bpf_current_task_under_cgroup()
bpf: Adjust BPF stack helper functions to accommodate skip > 0
mm/usercopy: return 1 from hardened_usercopy __setup() handler
mm/memcontrol: return 1 from cgroup.memory __setup() handler
ARM: 9187/1: JIVE: fix return value of __setup handler
mm/mmap: return 1 from stack_guard_gap __setup() handler
batman-adv: Check ptr for NULL before reducing its refcnt
ASoC: soc-compress: Change the check for codec_dai
staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on ethernet
proc: bootconfig: Add null pointer check
can: isotp: restore accidentally removed MSG_PEEK feature
platform/chrome: cros_ec_typec: Check for EC device
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data
riscv module: remove (NOLOAD)
io_uring: fix memory leak of uid in files registration
ARM: iop32x: offset IRQ numbers by 1
ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()
pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR()
watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function
pinctrl: pinconf-generic: Print arguments for bias-pull-*
watch_queue: Free the page array when watch_queue is dismantled
crypto: arm/aes-neonbs-cbc - Select generic cbc and aes
mailbox: imx: fix wakeup failure from freeze mode
rxrpc: Fix call timer start racing with call destruction
gfs2: Make sure FITRIM minlen is rounded up to fs block size
rtc: check if __rtc_read_time was successful
XArray: Update the LRU list in xas_split()
can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error value
can: mcba_usb: properly check endpoint type
XArray: Fix xas_create_range() when multi-order entry present
wireguard: socket: ignore v6 endpoints when ipv6 is disabled
wireguard: socket: free skb in send6 when ipv6 is disabled
wireguard: queueing: use CFI-safe ptr_ring cleanup function
ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM
KVM: SVM: fix panic on out-of-bounds guest IRQ
KVM: x86: fix sending PV IPI
KVM: Prevent module exit until all VMs are freed
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated
platform: chrome: Split trace include file
scsi: qla2xxx: Use correct feature type field during RFF_ID processing
scsi: qla2xxx: Reduce false trigger to login
scsi: qla2xxx: Fix N2N inconsistent PLOGI
scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests
scsi: qla2xxx: Fix hang due to session stuck
scsi: qla2xxx: Fix incorrect reporting of task management failure
scsi: qla2xxx: Fix disk failure to rediscover
scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()
scsi: qla2xxx: Check for firmware dump already collected
scsi: qla2xxx: Add devids and conditionals for 28xx
scsi: qla2xxx: Fix device reconnect in loop topology
scsi: qla2xxx: Fix warning for missing error code
scsi: qla2xxx: Fix wrong FDMI data for 64G adapter
scsi: qla2xxx: Fix scheduling while atomic
scsi: qla2xxx: Fix stuck session in gpdb
powerpc: Fix build errors with newer binutils
powerpc/lib/sstep: Fix build errors with newer binutils
powerpc/lib/sstep: Fix 'sthcx' instruction
powerpc/kasan: Fix early region not updated correctly
KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP MMU
ALSA: hda/realtek: Add alc256-samsung-headphone fixup
media: atomisp: fix bad usage at error handling logic
mmc: host: Return an error when ->enable_sdio_irq() ops is missing
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
media: Revert "media: em28xx: add missing em28xx_close_extension"
video: fbdev: sm712fb: Fix crash in smtcfb_write()
ARM: mmp: Fix failure to remove sram device
ARM: tegra: tamonten: Fix I2C3 pad setting
lib/test_lockup: fix kernel pointer check for separate address spaces
uaccess: fix type mismatch warnings from access_ok()
media: cx88-mpeg: clear interrupt status register before streaming video
ASoC: soc-core: skip zero num_dai component in searching dai name
ARM: dts: bcm2711: Add the missing L1/L2 cache information
video: fbdev: udlfb: replace snprintf in show functions with sysfs_emit
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of
snprintf()
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf()
arm64: defconfig: build imx-sdma as a module
ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk
ARM: ftrace: avoid redundant loads or clobbering IP
media: atomisp: fix dummy_ptr check to avoid duplicate active_bo
media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2 regulator off
on some boards
ASoC: madera: Add dependencies on MFD
ARM: dts: bcm2837: Add the missing L1/L2 cache information
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit
video: fbdev: cirrusfb: check pixclock to avoid divide by zero
video: fbdev: w100fb: Reset global state
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow
media: ir_toy: free before error exiting
media: staging: media: zoran: fix various V4L2 compliance errors
media: staging: media: zoran: calculate the right buffer number for
zoran_reap_stat_com
media: staging: media: zoran: move videodev alloc
ntfs: add sanity check on allocation size
f2fs: compress: fix to print raw data size in error path of lz4 decompression
NFSD: Fix nfsd_breaker_owns_lease() return values
f2fs: fix to do sanity check on curseg->alloc_type
ext4: don't BUG if someone dirty pages without asking ext4 first
ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit
ext4: correct cluster len and clusters changed accounting in ext4_mb_mark_bb
locking/lockdep: Iterate lock_classes directly when reading lockdep files
spi: tegra20: Use of_device_get_match_data()
nvme-tcp: lockdep: annotate in-kernel sockets
parisc: Fix handling off probe non-access faults
PM: core: keep irq flags in device_pm_check_callbacks()
ACPI/APEI: Limit printable size of BERT table data
Revert "Revert "block, bfq: honor already-setup queue merges""
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3
ACPICA: Avoid walking the ACPI Namespace if it is not there
fs/binfmt_elf: Fix AT_PHDR for unusual ELF files
irqchip/nvic: Release nvic_base upon failure
irqchip/qcom-pdc: Fix broken locking
Fix incorrect type in assignment of ipv6 port for audit
loop: use sysfs_emit() in the sysfs xxx show()
selinux: allow FIOCLEX and FIONCLEX with policy capability
selinux: use correct type for context length
pinctrl: npcm: Fix broken references to chip->parent_device
gcc-plugins/stackleak: Exactly match strings instead of prefixes
regulator: rpi-panel: Handle I2C errors/timing to the Atmel
LSM: general protection fault in legacy_parse_param
fs: fix fd table size alignment properly
lib/test: use after free in register_test_dev_kmod()
fs: fd tables have to be multiples of BITS_PER_LONG
net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator
NFSv4/pNFS: Fix another issue with a list iterator pointing to the head
qlcnic: dcb: default to returning -EOPNOTSUPP
selftests: test_vxlan_under_vrf: Fix broken test case
net: phy: broadcom: Fix brcm_fet_config_init()
net: enetc: report software timestamping via SO_TIMESTAMPING
xen: fix is_xen_pmu()
clk: Initialize orphan req_rate
clk: qcom: gcc-msm8994: Fix gpll4 width
kdb: Fix the putarea helper function
NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options
jfs: fix divide error in dbNextAG
driver core: dd: fix return value of __setup handler
firmware: google: Properly state IOMEM dependency
kgdbts: fix return value of __setup handler
serial: 8250: fix XOFF/XON sending when DMA is used
kgdboc: fix return value of __setup handler
tty: hvc: fix return value of __setup handler
pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe
pinctrl: mediatek: paris: Skip custom extra pin config dump for virtual GPIOs
pinctrl: mediatek: paris: Fix pingroup pin config state readback
pinctrl: mediatek: paris: Fix "argument" argument type for mtk_pinconf_get()
pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init
staging: mt7621-dts: fix GB-PC2 devicetree
staging: mt7621-dts: fix pinctrl properties for ethernet
staging: mt7621-dts: fix formatting
staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree
NFS: remove unneeded check in decode_devicenotify_args()
clk: tegra: tegra124-emc: Fix missing put_device() call in emc_ensure_emc_driver
clk: clps711x: Terminate clk_div_table with sentinel element
clk: loongson1: Terminate clk_div_table with sentinel element
clk: actions: Terminate clk_div_table with sentinel element
nvdimm/region: Fix default alignment for small regions
remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region
remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region
remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region
dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma
clk: qcom: clk-rcg2: Update the frac table for pixel clock
clk: qcom: clk-rcg2: Update logic to calculate D value for RCG
clk: at91: sama7g5: fix parents of PDMCs' GCLK
clk: imx7d: Remove audio_mclk_root_clk
dma-debug: fix return value of __setup handlers
NFS: Return valid errors from nfs2/3_decode_dirent()
habanalabs: Add check for pci_enable_device
iio: adc: Add check for devm_request_threaded_irq
serial: 8250: Fix race condition in RTS-after-send handling
NFS: Use of mapping_set_error() results in spurious errors
serial: 8250_lpss: Balance reference count for PCI DMA device
serial: 8250_mid: Balance reference count for PCI DMA device
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})
clk: qcom: ipq8074: Use floor ops for SDCC1 clock
pinctrl: renesas: checker: Fix miscalculation of number of states
pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel
staging:iio:adc:ad7280a: Fix handing of device address bit reversing.
iio: mma8452: Fix probe failing when an i2c_device_id is used
clk: qcom: ipq8074: fix PCI-E clock oops
soundwire: intel: fix wrong register name in intel_shim_wake
cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse
misc: alcor_pci: Fix an error handling path
fsi: Aspeed: Fix a potential double free
fsi: aspeed: convert to devm_platform_ioremap_resource
pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add()
mxser: fix xmit_buf leak in activate when LSR == 0xff
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
tipc: fix the timer expires after interval 100ms
openvswitch: always update flow key after nat
tcp: ensure PMTU updates are processed during fastopen
net: bcmgenet: Use stronger register read/writes to assure ordering
PCI: Avoid broken MSI on SB600 USB devices
selftests/bpf/test_lirc_mode2.sh: Exit with proper code
i2c: mux: demux-pinctrl: do not deactivate a master that is not active
i2c: meson: Fix wrong speed use from probe
af_netlink: Fix shift out of bounds in group mask calculation
ipv4: Fix route lookups when handling ICMP redirects and PMTU updates
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt
Bluetooth: call hci_le_conn_failed with hdev lock in hci_le_conn_failed
selftests/bpf: Fix error reporting from sock_fields programs
bareudp: use ipv6_mod_enabled to check if IPv6 enabled
can: isotp: support MSG_TRUNC flag when reading from socket
can: isotp: return -EADDRNOTAVAIL when reading from unbound socket
USB: storage: ums-realtek: fix error code in rts51x_read_mem()
samples/bpf, xdpsock: Fix race when running for fix duration of time
bpf, sockmap: Fix double uncharge the mem of sk_msg
bpf, sockmap: Fix more uncharged while msg has more_data
bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full
RDMA/mlx5: Fix memory leak in error flow for subscribe event routine
mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init
MIPS: pgalloc: fix memory leak caused by pgd_free()
MIPS: RB532: fix return value of __setup handler
mips: cdmm: Fix refcount leak in mips_cdmm_phys_base
ath10k: Fix error handling in ath10k_setup_msa_resources
vxcan: enable local echo for sent CAN frames
powerpc: 8xx: fix a return value error in mpc8xx_pic_init
platform/x86: huawei-wmi: check the return value of device_create_file()
selftests/bpf: Make test_lwt_ip_encap more stable and faster
libbpf: Unmap rings when umem deleted
mfd: mc13xxx: Add check for mc13xxx_irq_request
powerpc/sysdev: fix incorrect use to determine if list is empty
mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n
net: axienet: fix RX ring refill allocation failure handling
IB/hfi1: Allow larger MTU without AIP
power: supply: wm8350-power: Add missing free in free_charger_irq
power: supply: wm8350-power: Handle error for wm8350_register_irq
i2c: xiic: Make bus names unique
hv_balloon: rate-limit "Unhandled message" warning
KVM: x86/emulator: Defer not-present segment check in
__load_segment_descriptor()
KVM: x86: Fix emulation in writing cr8
powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit
powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties()
libbpf: Skip forward declaration when counting duplicated type names
gpu: host1x: Fix a memory leak in 'host1x_remove()'
bpf, arm64: Feed byte-offset into bpf line info
bpf, arm64: Call build_prologue() first in first JIT pass
drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt
scsi: hisi_sas: Change permission of parameter prot_mask
power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong false return
drm/tegra: Fix reference leak in tegra_dsi_ganged_probe
ext2: correct max file size computing
TOMOYO: fix __setup handlers return values
drm/amd/display: Remove vupdate_int_entry definition
RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR
scsi: pm8001: Fix abort all task initialization
scsi: pm8001: Fix NCQ NON DATA command completion handling
scsi: pm8001: Fix NCQ NON DATA command task initialization
scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req()
scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update()
scsi: pm8001: Fix le32 values handling in pm80xx_set_sas_protocol_timer_config()
scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config()
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()
dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS
drm/msm/dpu: fix dp audio condition
drm/msm/dpu: add DSPP blocks teardown
drm/msm/dp: populate connector of struct dp_panel
iwlwifi: mvm: Fix an error code in iwl_mvm_up()
iwlwifi: Fix -EIO error code that is never returned
dax: make sure inodes are flushed before destroy cache
IB/cma: Allow XRC INI QPs to set their local ACK timeout
drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug
drm/amd/pm: enable pm sysfs write for one VF mode
iommu/ipmmu-vmsa: Check for error num after setting mask
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init
drm/bridge: dw-hdmi: use safe format when first in bridge chain
PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge
scripts/dtc: Call pkg-config POSIXly correct
net: dsa: mv88e6xxx: Enable port policy support on 6097
mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update
mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update
mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv
mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in sta mode
powerpc/perf: Don't use perf_hw_context for trace IMC PMU
KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init
powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch
ray_cs: Check ioremap return value
power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe
i40e: respect metadata on XSK Rx to skb
i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb
KVM: PPC: Fix vmx/vsx mixup in mmio emulation
RDMA/core: Set MR type in ib_reg_user_mr
ath9k_htc: fix uninit value bugs
drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq function
drm/amd/display: Fix a NULL pointer dereference in
amdgpu_dm_connector_add_common_modes()
drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl()
ionic: fix type complaint in ionic_dev_cmd_clean()
drm/edid: Don't clear formats if using deep color
mtd: rawnand: gpmi: fix controller timings setting
mtd: onenand: Check for error irq
Bluetooth: hci_serdev: call init_rwsem() before p->open()
udmabuf: validate ubuf->pagecount
libbpf: Fix possible NULL pointer dereference when destroying skeleton
drm/panfrost: Check for error num after setting mask
ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern
drm: bridge: adv7511: Fix ADV7535 HPD enablement
drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe
drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe
drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev
drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops
ARM: configs: multi_v5_defconfig: re-enable CONFIG_V4L_PLATFORM_DRIVERS
ASoC: codecs: wcd934x: Add missing of_node_put() in wcd934x_codec_parse_data
ASoC: msm8916-wcd-analog: Fix error handling in pm8916_wcd_analog_spmi_probe
ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe
ASoC: atmel: sam9x5_wm8731: use devm_snd_soc_register_card()
mmc: davinci_mmc: Handle error for clk_enable
ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in
msm8916_wcd_digital_probe
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()
ASoC: fsl_spdif: Disable TX clock when stop
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
ASoC: SOF: Add missing of_node_put() in imx8m_probe
ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in rockchip_i2s_probe
ASoC: rockchip: i2s: Use devm_platform_get_and_ioremap_resource()
ivtv: fix incorrect device_caps for ivtvfb
media: saa7134: fix incorrect use to determine if list is empty
media: saa7134: convert list_for_each to entry variant
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of
ASoC: fsi: Add check for clk_enable
ASoC: wm8350: Handle error for wm8350_register_irq
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe
media: vidtv: Check for null return of vzalloc
media: stk1160: If start stream fails, return buffers with VB2_BUF_STATE_QUEUED
m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are defined
arm64: dts: rockchip: Fix SDIO regulator supply properties on rk3399-firefly
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transaction
memory: emif: check the pointer temp in get_device_details()
memory: emif: Add check for setup_interrupts
ASoC: soc-compress: prevent the potentially use of null pointer
ASoC: dwc-i2s: Handle errors for clk_enable
ASoC: atmel_ssc_dai: Handle errors for clk_enable
ASoC: mxs-saif: Handle errors for clk_enable
printk: fix return value of printk.devkmsg __setup handler
arm64: dts: broadcom: Fix sata nodename
arm64: dts: ns2: Fix spi-cpol and spi-cpha property
ALSA: spi: Add check for clk_enable()
ASoC: ti: davinci-i2s: Add check for clk_enable()
ASoC: rt5663: check the return value of devm_kzalloc() in rt5663_parse_dp()
uaccess: fix nios2 and microblaze get_user_8()
ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put
media: cedrus: h264: Fix neighbour info buffer size
media: cedrus: H265: Fix neighbour info buffer size
media: usb: go7007: s2250-board: fix leak in probe()
media: em28xx: initialize refcount before kref_get
media: video/hdmi: handle short reads of hdmi info frame.
ARM: dts: imx: Add missing LVDS decoder on M53Menlo
ARM: dts: sun8i: v3s: Move the csi1 block to follow address order
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL is not
defined
arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc
arm64: dts: qcom: sdm845: fix microphone bias properties and values
soc: qcom: aoss: remove spurious IRQF_ONESHOT flags
soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem
soc: qcom: rpmpd: Check for null return of devm_kcalloc
ARM: dts: qcom: ipq4019: fix sleep clock
firmware: qcom: scm: Remove reassignment to desc following initializer
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()
video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe()
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()
video: fbdev: controlfb: Fix COMPILE_TEST build
video: fbdev: controlfb: Fix set but not used warnings
video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200 to avoid
black screen
media: aspeed: Correct value for h-total-pixels
media: hantro: Fix overfill bottom register field name
media: meson: vdec: potential dereference of null pointer
media: coda: Fix missing put_device() call in coda_get_vdoa_data
ASoC: generic: simple-card-utils: remove useless assignment
ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting
media: bttv: fix WARNING regression on tunerless devices
media: mtk-vcodec: potential dereference of null pointer
media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls
media: staging: media: zoran: fix usage of vb2_dma_contig_set_max_seg_size
kunit: make kunit_test_timeout compatible with comment
selftests, x86: fix how check_cc.sh is being invoked
f2fs: fix compressed file start atomic write may cause data corruption
f2fs: compress: remove unneeded read when rewrite whole cluster
btrfs: fix unexpected error path when reflinking an inline extent
f2fs: fix to avoid potential deadlock
nfsd: more robust allocation failure handling in nfsd_file_cache_init
f2fs: fix missing free nid in f2fs_handle_failed_inode
perf/x86/intel/pt: Fix address filter config for 32-bit kernel
perf/core: Fix address filter parser for multiple filters
rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs()
sched/core: Export pelt_thermal_tp
sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa
f2fs: fix to enable ATGC correctly via gc_idle sysfs interface
watch_queue: Actually free the watch
watch_queue: Fix NULL dereference in error cleanup
io_uring: terminate manual loop iterator loop correctly for non-vecs
clocksource: acpi_pm: fix return value of __setup handler
hwmon: (pmbus) Add Vin unit off handling
hwrng: nomadik - Change clk_disable to clk_disable_unprepare
amba: Make the remove callback return void
vfio: platform: simplify device removal
crypto: ccree - Fix use after free in cc_cipher_exit()
crypto: ccp - ccp_dmaengine_unregister release dma channels
ACPI: APEI: fix return value of __setup handlers
clocksource/drivers/timer-of: Check return value of of_iomap in
timer_of_base_init()
clocksource/drivers/timer-microchip-pit64b: Use notrace
clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts
clocksource/drivers/exynos_mct: Refactor resources allocation
clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix
crypto: vmx - add missing dependencies
crypto: amlogic - call finalize with bh disabled
crypto: sun8i-ce - call finalize with bh disabled
crypto: sun8i-ss - call finalize with bh disabled
hwrng: atmel - disable trng on failure path
spi: spi-zynqmp-gqspi: Handle error for dma_set_mask
PM: suspend: fix return value of __setup handler
PM: hibernate: fix __setup handler error handling
block: don't delete queue kobject before its children
nvme: cleanup __nvme_check_ids
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING
hwmon: (pmbus) Add mutex to regulator ops
spi: pxa2xx-pci: Balance reference count for PCI DMA device
crypto: ccree - don't attempt 0 len DMA mappings
EVM: fix the evm= __setup handler return value
audit: log AUDIT_TIME_* records only from rules
crypto: rockchip - ECB does not need IV
selftests/x86: Add validity check and allow field splitting
arm64/mm: avoid fixmap race condition when create pud mapping
spi: tegra114: Add missing IRQ check in tegra_spi_probe
thermal: int340x: Check for NULL after calling kmemdup()
crypto: mxs-dcp - Fix scatterlist processing
crypto: authenc - Fix sleep in atomic context in decrypt_tail
crypto: sun8i-ss - really disable hash on A80
hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER
hwrng: cavium - Check health status while reading random data
selinux: check return value of sel_make_avc_files
regulator: qcom_smd: fix for_each_child.cocci warnings
PCI: xgene: Revert "PCI: xgene: Fix IB window setup"
PCI: pciehp: Clear cmd_busy bit in polling mode
drm/i915/gem: add missing boundary check in vm_access
brcmfmac: pcie: Fix crashes due to early IRQs
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio
brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path
brcmfmac: firmware: Allocate space for default boardrev in nvram
xtensa: fix xtensa_wsr always writing 0
xtensa: fix stop_machine_cpuslocked call in patch_text
media: davinci: vpif: fix unbalanced runtime PM enable
media: davinci: vpif: fix unbalanced runtime PM get
media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC
DEC: Limit PMAX memory probing to R3k systems
crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete()
crypto: rsa-pkcs1pad - restore signature length check
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist
crypto: rsa-pkcs1pad - only allow with rsa
exec: Force single empty string when argv is empty
lib/raid6/test: fix multiple definition linking error
thermal: int340x: Increase bitmap size
pstore: Don't use semaphores in always-atomic-context code
carl9170: fix missing bit-wise or operator for tx_params
mgag200 fix memmapsl configuration in GCTL6 register
ARM: dts: exynos: add missing HDMI supplies on SMDK5420
ARM: dts: exynos: add missing HDMI supplies on SMDK5250
ARM: dts: exynos: fix UART3 pins configuration in Exynos5250
ARM: dts: at91: sama5d2: Fix PMERRLOC resource size
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix
video: fbdev: sm712fb: Fix crash in smtcfb_read()
drm/edid: check basic audio support on CEA extension block
block: limit request dispatch loop duration
mailbox: tegra-hsp: Flush whole channel
ext4: fix fs corruption when tring to remove a non-empty directory with IO error
ext4: fix ext4_fc_stats trace point
coredump: Also dump first pages of non-executable ELF libraries
ACPI: properties: Consistently return -ENOENT if there are no more references
arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs
arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs
arm64: signal: nofpsimd: Do not allocate fp/simd context when not available
udp: call udp_encap_enable for v6 sockets when enabling encap
powerpc/kvm: Fix kvm_use_magic_page
can: isotp: sanitize CAN ID checks in isotp_bind()
drbd: fix potential silent data corruption
dm integrity: set journal entry unused when shrinking device
mm/kmemleak: reset tag when compare object pointer
mm,hwpoison: unmap poisoned page before invalidation
Revert "mm: madvise: skip unmapped vma holes passed to process_madvise"
mm: madvise: return correct bytes advised with process_madvise
mm: madvise: skip unmapped vma holes passed to process_madvise
ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020
ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock
ALSA: hda: Avoid unsol event during RPM suspending
ALSA: cs4236: fix an incorrect NULL check on list iterator
cifs: fix NULL ptr dereference in smb2_ioctl_query_info()
cifs: prevent bad output lengths in smb2_ioctl_query_info()
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"
riscv: Increase stack size under KASAN
riscv: Fix fill_callchain return value
qed: display VF trust config
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands
mempolicy: mbind_range() set_policy() after vma_merge()
mm: invalidate hwpoison page cache page in fault path
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
mtd: rawnand: protect access to rawnand devices while in suspend
spi: mxic: Fix the transmit path
pinctrl: samsung: drop pin banks references on error paths
remoteproc: Fix count check in rproc_coredump_write()
f2fs: fix to do sanity check on .cp_pack_total_block_count
f2fs: quota: fix loop condition at f2fs_quota_sync()
f2fs: fix to unlock page correctly in error path of is_alive()
NFSD: prevent integer overflow on 32 bit systems
NFSD: prevent underflow in nfssvc_decode_writeargs()
SUNRPC: avoid race between mod_timer() and del_timer_sync()
HID: intel-ish-hid: Use dma_alloc_coherent for firmware update
firmware: stratix10-svc: add missing callback parameter on RSU
Documentation: update stable tree link
Documentation: add link to stable release candidate tree
KEYS: fix length validation in keyctl_pkey_params_get_2()
clk: uniphier: Fix fixed-rate initialization
greybus: svc: fix an error handling bug in gb_svc_hello()
iio: inkern: make a best effort on offset calculation
iio: inkern: apply consumer scale when no channel scale is available
iio: inkern: apply consumer scale on IIO_VAL_INT cases
iio: afe: rescale: use s64 for temporary scale calculations
coresight: Fix TRCCONFIGR.QE sysfs interface
mei: avoid iterator usage outside of list_for_each_entry
mei: me: add Alder Lake N device id.
xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()
xhci: make xhci_handshake timeout for xhci_reset() adjustable
xhci: fix runtime PM imbalance in USB2 resume
xhci: fix garbage USBSTS being logged in some cases
USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c
virtio-blk: Use blk_validate_block_size() to validate block size
tpm: fix reference counting for struct tpm_chip
iommu/iova: Improve 32-bit free space estimate
locking/lockdep: Avoid potential access of invalid memory in lock_class
net: dsa: microchip: add spi_device_id tables
Input: zinitix - do not report shadow fingers
spi: Fix erroneous sgs value with min_t()
Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"
net:mcf8390: Use platform_get_irq() to get the interrupt
spi: Fix invalid sgs value
gpio: Revert regression in sysfs-gpio (gpiolib.c)
ethernet: sun: Free the coherent when failing in probing
tools/virtio: fix virtio_test execution
vdpa/mlx5: should verify CTRL_VQ feature exists for MQ
virtio_console: break out of buf poll on remove
ARM: mstar: Select HAVE_ARM_ARCH_TIMER
xfrm: fix tunnel model fragmentation behavior
HID: logitech-dj: add new lightspeed receiver id
hv: utils: add PTP_1588_CLOCK to Kconfig to fix build
USB: serial: simple: add Nokia phone driver
USB: serial: pl2303: add IBM device IDs
already merged(30)
arm64: Do not defer reserve_crashkernel() for platforms with no DMA memory zones
can: usb_8dev: usb_8dev_start_xmit(): fix double dev_kfree_skb() in error path
KVM: x86/mmu: do compare-and-exchange of gPTE via the user address
ubi: fastmap: Return error code if memory allocation fails in add_aeb()
ubi: Fix race condition between ctrl_cdev_ioctl and ubi_cdev_ioctl
net: hns3: fix software vlan talbe of vlan 0 inconsistent with hardware
can: mcba_usb: mcba_usb_start_xmit(): fix double dev_kfree_skb in error path
ubifs: rename_whiteout: correct old_dir size computing
ubifs: Fix to add refcount once page is set private
ubifs: Fix read out-of-bounds in ubifs_wbuf_write_nolock()
ubifs: setflags: Make dirtied_ino_d 8 bytes aligned
ubifs: Add missing iput if do_tmpfile() failed in rename whiteout
ubifs: Fix deadlock in concurrent rename whiteout and inode writeback
ubifs: rename_whiteout: Fix double free for whiteout_ui->data
bfq: fix use-after-free in bfq_dispatch_request
net/x25: Fix null-ptr-deref caused by x25_disconnect
net: hns3: fix bug when PF set the duplicate MAC address for VFs
livepatch: Fix build failure on 32 bits processors
bcache: fixup multiple threads crash
drivers: hamradio: 6pack: fix UAF bug caused by mod_timer()
jffs2: fix memory leak in jffs2_scan_medium
jffs2: fix memory leak in jffs2_do_mount_fs
jffs2: fix use-after-free in jffs2_clear_xattr_subsystem
can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path
ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE
af_key: add __GFP_ZERO flag for compose_sadb_supported in function
pfkey_register
netdevice: add the case if dev is NULL
swiotlb: fix info leak with DMA_FROM_DEVICE
block, bfq: don't move oom_bfqq
drm/i915/opregion: check port number bounds for SWSCI display power state
kabi conflict(8)
PCI: Reduce warnings on possible RW1C corruption
qed: validate and restrict untrusted VFs vlan promisc mode
block: don't merge across cgroup boundaries if blkcg is enabled
rseq: Remove broken uapi field layout on 32-bit little endian
coredump: Snapshot the vmas in do_coredump
coredump: Use the vma snapshot in fill_files_note
coredump/elf: Pass coredump_params into fill_note_info
coredump: Remove the WARN_ON in dump_vma_snapshot
all patches: 597 - 30 - 8 = 559
Aaron Conole (1):
openvswitch: always update flow key after nat
Aashish Sharma (1):
dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS
Abel Vesa (2):
clk: imx7d: Remove audio_mclk_root_clk
ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk
Adrian Hunter (2):
perf/core: Fix address filter parser for multiple filters
perf/x86/intel/pt: Fix address filter config for 32-bit kernel
Aharon Landau (1):
RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR
Akira Kawata (1):
fs/binfmt_elf: Fix AT_PHDR for unusual ELF files
Alan Stern (1):
USB: usb-storage: Fix use of bitfields for hardware data in
ene_ub6250.c
Alexander Lobakin (2):
i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb
i40e: respect metadata on XSK Rx to skb
Alexander Usyskin (2):
mei: me: add Alder Lake N device id.
mei: avoid iterator usage outside of list_for_each_entry
Alexey Khoroshilov (1):
NFS: remove unneeded check in decode_devicenotify_args()
Alistair Delva (1):
remoteproc: Fix count check in rproc_coredump_write()
Alistair Popple (1):
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
Amadeusz Sławiński (1):
ASoC: topology: Allow TLV control to be either read or write
Amir Goldstein (1):
nfsd: more robust allocation failure handling in nfsd_file_cache_init
Ammar Faizi (1):
ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM
Anders Roxell (3):
powerpc/lib/sstep: Fix 'sthcx' instruction
powerpc/lib/sstep: Fix build errors with newer binutils
powerpc: Fix build errors with newer binutils
Andre Przywara (1):
ARM: configs: multi_v5_defconfig: re-enable
CONFIG_V4L_PLATFORM_DRIVERS
Andreas Gruenbacher (1):
powerpc/kvm: Fix kvm_use_magic_page
Andrew Price (1):
gfs2: Make sure FITRIM minlen is rounded up to fs block size
Andy Shevchenko (3):
spi: pxa2xx-pci: Balance reference count for PCI DMA device
serial: 8250_mid: Balance reference count for PCI DMA device
serial: 8250_lpss: Balance reference count for PCI DMA device
Ang Tien Sung (1):
firmware: stratix10-svc: add missing callback parameter on RSU
Anssi Hannula (3):
xhci: fix garbage USBSTS being logged in some cases
xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()
hv_balloon: rate-limit "Unhandled message" warning
Anton Ivanov (1):
um: Fix uml_mconsole stop/go
Ard Biesheuvel (1):
ARM: ftrace: avoid redundant loads or clobbering IP
Armin Wolf (1):
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING
Arnd Bergmann (4):
uaccess: fix nios2 and microblaze get_user_8()
uaccess: fix type mismatch warnings from access_ok()
lib/test_lockup: fix kernel pointer check for separate address spaces
ARM: iop32x: offset IRQ numbers by 1
Arun Easi (2):
scsi: qla2xxx: Fix device reconnect in loop topology
scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests
Arınç ÜNAL (5):
staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree
staging: mt7621-dts: fix formatting
staging: mt7621-dts: fix pinctrl properties for ethernet
staging: mt7621-dts: fix GB-PC2 devicetree
staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on
ethernet
Athira Rajeev (1):
powerpc/perf: Don't use perf_hw_context for trace IMC PMU
Bagas Sanjaya (2):
Documentation: add link to stable release candidate tree
Documentation: update stable tree link
Bartosz Golaszewski (1):
Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"
Bharata B Rao (1):
sched/debug: Remove mpol_get/put and task_lock/unlock from
sched_show_numa
Biju Das (2):
spi: Fix invalid sgs value
spi: Fix erroneous sgs value with min_t()
Bikash Hazarika (1):
scsi: qla2xxx: Fix wrong FDMI data for 64G adapter
Bjorn Helgaas (1):
PCI: Avoid broken MSI on SB600 USB devices
Brandon Wyman (1):
hwmon: (pmbus) Add Vin unit off handling
Casey Schaufler (2):
LSM: general protection fault in legacy_parse_param
Fix incorrect type in assignment of ipv6 port for audit
Chaitanya Kulkarni (1):
loop: use sysfs_emit() in the sysfs xxx show()
Chao Yu (6):
f2fs: fix to unlock page correctly in error path of is_alive()
f2fs: fix to do sanity check on .cp_pack_total_block_count
f2fs: fix to enable ATGC correctly via gc_idle sysfs interface
f2fs: fix to avoid potential deadlock
f2fs: fix to do sanity check on curseg->alloc_type
f2fs: compress: fix to print raw data size in error path of lz4
decompression
Charan Teja Kalla (3):
mm: madvise: skip unmapped vma holes passed to process_madvise
mm: madvise: return correct bytes advised with process_madvise
Revert "mm: madvise: skip unmapped vma holes passed to
process_madvise"
Charles Keepax (1):
ASoC: madera: Add dependencies on MFD
Chen Jingwen (1):
powerpc/kasan: Fix early region not updated correctly
Chen-Yu Tsai (7):
media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across
ioctls
media: hantro: Fix overfill bottom register field name
pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback
pinctrl: mediatek: paris: Fix "argument" argument type for
mtk_pinconf_get()
pinctrl: mediatek: paris: Fix pingroup pin config state readback
pinctrl: mediatek: paris: Skip custom extra pin config dump for
virtual GPIOs
pinctrl: pinconf-generic: Print arguments for bias-pull-*
Chris Leech (1):
nvme-tcp: lockdep: annotate in-kernel sockets
Christian Göttsche (2):
selinux: check return value of sel_make_avc_files
selinux: use correct type for context length
Christoph Hellwig (1):
nvme: cleanup __nvme_check_ids
Christophe JAILLET (4):
firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL
is not defined
gpu: host1x: Fix a memory leak in 'host1x_remove()'
fsi: Aspeed: Fix a potential double free
misc: alcor_pci: Fix an error handling path
Chuck Lever (1):
NFSD: Fix nfsd_breaker_owns_lease() return values
Claudiu Beznea (3):
net: dsa: microchip: add spi_device_id tables
hwrng: atmel - disable trng on failure path
clocksource/drivers/timer-microchip-pit64b: Use notrace
Codrin Ciubotariu (2):
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
clk: at91: sama7g5: fix parents of PDMCs' GCLK
Colin Ian King (2):
carl9170: fix missing bit-wise or operator for tx_params
iwlwifi: Fix -EIO error code that is never returned
Cooper Chiou (1):
drm/edid: check basic audio support on CEA extension block
Corentin Labbe (8):
crypto: sun8i-ss - really disable hash on A80
crypto: rockchip - ECB does not need IV
crypto: sun8i-ss - call finalize with bh disabled
crypto: sun8i-ce - call finalize with bh disabled
crypto: amlogic - call finalize with bh disabled
media: staging: media: zoran: fix usage of
vb2_dma_contig_set_max_seg_size
media: staging: media: zoran: move videodev alloc
media: staging: media: zoran: calculate the right buffer number for
zoran_reap_stat_com
Dafna Hirschfeld (1):
media: stk1160: If start stream fails, return buffers with
VB2_BUF_STATE_QUEUED
Damien Le Moal (11):
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()
scsi: pm8001: Fix payload initialization in
pm80xx_set_thermal_config()
scsi: pm8001: Fix le32 values handling in
pm80xx_set_sas_protocol_timer_config()
scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req()
scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req()
scsi: pm8001: Fix NCQ NON DATA command task initialization
scsi: pm8001: Fix NCQ NON DATA command completion handling
scsi: pm8001: Fix abort all task initialization
Dan Carpenter (9):
greybus: svc: fix an error handling bug in gb_svc_hello()
NFSD: prevent underflow in nfssvc_decode_writeargs()
NFSD: prevent integer overflow on 32 bit systems
video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe()
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()
media: usb: go7007: s2250-board: fix leak in probe()
iwlwifi: mvm: Fix an error code in iwl_mvm_up()
USB: storage: ums-realtek: fix error code in rts51x_read_mem()
lib/test: use after free in register_test_dev_kmod()
Dan Williams (1):
nvdimm/region: Fix default alignment for small regions
Daniel González Cabanelas (1):
media: cx88-mpeg: clear interrupt status register before streaming
video
Daniel Henrique Barboza (1):
powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties()
Daniel Palmer (1):
ARM: mstar: Select HAVE_ARM_ARCH_TIMER
Daniel Thompson (2):
soc: qcom: aoss: remove spurious IRQF_ONESHOT flags
kdb: Fix the putarea helper function
Dario Binacchi (1):
mtd: rawnand: gpmi: fix controller timings setting
Darren Hart (1):
ACPI/APEI: Limit printable size of BERT table data
Dave Stevenson (1):
regulator: rpi-panel: Handle I2C errors/timing to the Atmel
David Engraf (1):
arm64: signal: nofpsimd: Do not allocate fp/simd context when not
available
David Gow (1):
firmware: google: Properly state IOMEM dependency
David Heidelberg (2):
arm64: dts: qcom: sdm845: fix microphone bias properties and values
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960
David Howells (3):
watch_queue: Fix NULL dereference in error cleanup
watch_queue: Actually free the watch
rxrpc: Fix call timer start racing with call destruction
David Matlack (1):
KVM: Prevent module exit until all VMs are freed
Dirk Buchwalder (1):
clk: qcom: ipq8074: Use floor ops for SDCC1 clock
Dirk Müller (1):
lib/raid6/test: fix multiple definition linking error
Dmitry Baryshkov (3):
drm/msm/dpu: add DSPP blocks teardown
drm/msm/dpu: fix dp audio condition
PM: core: keep irq flags in device_pm_check_callbacks()
Dmitry Torokhov (1):
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
Dmitry Vyukov (1):
riscv: Increase stack size under KASAN
Dongliang Mu (3):
media: em28xx: initialize refcount before kref_get
ntfs: add sanity check on allocation size
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
Drew Fustini (1):
clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix
Dāvis Mosāns (1):
crypto: ccp - ccp_dmaengine_unregister release dma channels
Eddie James (1):
USB: serial: pl2303: add IBM device IDs
Eric Biggers (6):
KEYS: fix length validation in keyctl_pkey_params_get_2()
crypto: rsa-pkcs1pad - only allow with rsa
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist
crypto: rsa-pkcs1pad - restore signature length check
crypto: rsa-pkcs1pad - fix buffer overread in
pkcs1pad_verify_complete()
block: don't delete queue kobject before its children
Eric Dumazet (2):
rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs()
watch_queue: Free the page array when watch_queue is dismantled
Evgeny Novikov (1):
video: fbdev: w100fb: Reset global state
Fabiano Rosas (2):
KVM: PPC: Fix vmx/vsx mixup in mmio emulation
KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init
Fangrui Song (1):
riscv module: remove (NOLOAD)
Felix Maurer (1):
selftests/bpf: Make test_lwt_ip_encap more stable and faster
Fengnan Chang (2):
f2fs: compress: remove unneeded read when rewrite whole cluster
f2fs: fix compressed file start atomic write may cause data corruption
Filipe Manana (1):
btrfs: fix unexpected error path when reflinking an inline extent
Florian Fainelli (1):
net: phy: broadcom: Fix brcm_fet_config_init()
Frank Wunderlich (1):
arm64: dts: broadcom: Fix sata nodename
Geert Uytterhoeven (3):
hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER
pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel
pinctrl: renesas: checker: Fix miscalculation of number of states
George Kennedy (1):
video: fbdev: cirrusfb: check pixclock to avoid divide by zero
Gilad Ben-Yossef (1):
crypto: ccree - don't attempt 0 len DMA mappings
Guilherme G. Piccoli (1):
docs: sysctl/kernel: add missing bit to panic_print
Guillaume Nault (1):
ipv4: Fix route lookups when handling ICMP redirects and PMTU updates
Guillaume Ranquet (1):
clocksource/drivers/timer-of: Check return value of of_iomap in
timer_of_base_init()
Guillaume Tucker (1):
selftests, x86: fix how check_cc.sh is being invoked
Gwendal Grignou (2):
HID: intel-ish-hid: Use dma_alloc_coherent for firmware update
platform: chrome: Split trace include file
Hangbin Liu (2):
bareudp: use ipv6_mod_enabled to check if IPv6 enabled
selftests/bpf/test_lirc_mode2.sh: Exit with proper code
Hangyu Hua (1):
powerpc: 8xx: fix a return value error in mpc8xx_pic_init
Hans Verkuil (2):
ivtv: fix incorrect device_caps for ivtvfb
media: staging: media: zoran: fix various V4L2 compliance errors
Hans de Goede (3):
power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong
false return
iio: mma8452: Fix probe failing when an i2c_device_id is used
media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2
regulator off on some boards
Hector Martin (4):
brcmfmac: firmware: Allocate space for default boardrev in nvram
brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio
brcmfmac: pcie: Fix crashes due to early IRQs
Helge Deller (1):
video: fbdev: sm712fb: Fix crash in smtcfb_read()
Hengqi Chen (1):
bpf: Fix comment for helper bpf_current_task_under_cgroup()
Henry Lin (1):
xhci: fix runtime PM imbalance in USB2 resume
Herbert Xu (2):
crypto: authenc - Fix sleep in atomic context in decrypt_tail
crypto: arm/aes-neonbs-cbc - Select generic cbc and aes
Hoang Le (1):
tipc: fix the timer expires after interval 100ms
Hou Tao (2):
bpf, arm64: Call build_prologue() first in first JIT pass
bpf, arm64: Feed byte-offset into bpf line info
Hou Wenlong (1):
KVM: x86/emulator: Defer not-present segment check in
__load_segment_descriptor()
Hugh Dickins (1):
mempolicy: mbind_range() set_policy() after vma_merge()
Håkon Bugge (1):
IB/cma: Allow XRC INI QPs to set their local ACK timeout
Ido Schimmel (1):
selftests: test_vxlan_under_vrf: Fix broken test case
Ilpo Järvinen (1):
serial: 8250: fix XOFF/XON sending when DMA is used
Jaegeuk Kim (1):
f2fs: fix missing free nid in f2fs_handle_failed_inode
Jagan Teki (1):
drm: bridge: adv7511: Fix ADV7535 HPD enablement
Jakob Koschel (2):
media: saa7134: fix incorrect use to determine if list is empty
powerpc/sysdev: fix incorrect use to determine if list is empty
Jakub Kicinski (1):
tcp: ensure PMTU updates are processed during fastopen
Jakub Sitnicki (1):
selftests/bpf: Fix error reporting from sock_fields programs
James Clark (1):
coresight: Fix TRCCONFIGR.QE sysfs interface
Jammy Huang (1):
media: aspeed: Correct value for h-total-pixels
Jann Horn (2):
coredump: Also dump first pages of non-executable ELF libraries
pstore: Don't use semaphores in always-atomic-context code
Jason A. Donenfeld (2):
wireguard: queueing: use CFI-safe ptr_ring cleanup function
wireguard: socket: ignore v6 endpoints when ipv6 is disabled
Jens Axboe (1):
io_uring: terminate manual loop iterator loop correctly for non-vecs
Jeremy Linton (1):
net: bcmgenet: Use stronger register read/writes to assure ordering
Jernej Skrabec (2):
media: cedrus: H265: Fix neighbour info buffer size
media: cedrus: h264: Fix neighbour info buffer size
Jia-Ju Bai (3):
ASoC: rt5663: check the return value of devm_kzalloc() in
rt5663_parse_dp()
memory: emif: check the pointer temp in get_device_details()
platform/x86: huawei-wmi: check the return value of
device_create_file()
Jianglei Nie (1):
crypto: ccree - Fix use after free in cc_cipher_exit()
Jianyong Wu (1):
arm64/mm: avoid fixmap race condition when create pud mapping
Jiasheng Jiang (26):
thermal: int340x: Check for NULL after calling kmemdup()
spi: spi-zynqmp-gqspi: Handle error for dma_set_mask
media: mtk-vcodec: potential dereference of null pointer
media: meson: vdec: potential dereference of null pointer
soc: qcom: rpmpd: Check for null return of devm_kcalloc
ASoC: ti: davinci-i2s: Add check for clk_enable()
ALSA: spi: Add check for clk_enable()
ASoC: mxs-saif: Handle errors for clk_enable
ASoC: atmel_ssc_dai: Handle errors for clk_enable
ASoC: dwc-i2s: Handle errors for clk_enable
ASoC: soc-compress: prevent the potentially use of null pointer
memory: emif: Add check for setup_interrupts
media: vidtv: Check for null return of vzalloc
ASoC: wm8350: Handle error for wm8350_register_irq
ASoC: fsi: Add check for clk_enable
mmc: davinci_mmc: Handle error for clk_enable
drm/panfrost: Check for error num after setting mask
mtd: onenand: Check for error irq
ray_cs: Check ioremap return value
iommu/ipmmu-vmsa: Check for error num after setting mask
power: supply: wm8350-power: Handle error for wm8350_register_irq
power: supply: wm8350-power: Add missing free in free_charger_irq
mfd: mc13xxx: Add check for mc13xxx_irq_request
iio: adc: Add check for devm_request_threaded_irq
habanalabs: Add check for pci_enable_device
ASoC: soc-compress: Change the check for codec_dai
Jiaxin Yu (1):
ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs
Jie Hai (1):
dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma
Jing Yao (3):
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of
snprintf()
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead
of snprintf()
video: fbdev: udlfb: replace snprintf in show functions with
sysfs_emit
Jiri Slaby (1):
mxser: fix xmit_buf leak in activate when LSR == 0xff
Jocelyn Falempe (1):
mgag200 fix memmapsl configuration in GCTL6 register
Joe Carnuccio (2):
scsi: qla2xxx: Add devids and conditionals for 28xx
scsi: qla2xxx: Check for firmware dump already collected
Johan Hovold (3):
USB: serial: simple: add Nokia phone driver
media: davinci: vpif: fix unbalanced runtime PM get
media: davinci: vpif: fix unbalanced runtime PM enable
John David Anglin (1):
parisc: Fix handling off probe non-access faults
Jonathan Cameron (1):
staging:iio:adc:ad7280a: Fix handing of device address bit reversing.
Jonathan Neuschäfer (5):
clk: actions: Terminate clk_div_table with sentinel element
clk: loongson1: Terminate clk_div_table with sentinel element
clk: clps711x: Terminate clk_div_table with sentinel element
pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR()
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()
José Expósito (1):
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"
Juergen Gross (1):
xen: fix is_xen_pmu()
Juhyung Park (1):
f2fs: quota: fix loop condition at f2fs_quota_sync()
Kai-Heng Feng (1):
ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020
Kees Cook (2):
exec: Force single empty string when argv is empty
gcc-plugins/stackleak: Exactly match strings instead of prefixes
Konrad Dybcio (1):
clk: qcom: gcc-msm8994: Fix gpll4 width
Krzysztof Kozlowski (5):
pinctrl: samsung: drop pin banks references on error paths
ARM: dts: exynos: fix UART3 pins configuration in Exynos5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5420
clocksource/drivers/exynos_mct: Handle DTS with higher number of
interrupts
Kuan-Ying Lee (1):
mm/kmemleak: reset tag when compare object pointer
Kuldeep Singh (3):
arm64: dts: ns2: Fix spi-cpol and spi-cpha property
ARM: dts: spear1340: Update serial node properties
ARM: dts: spear13xx: Update SPI dma properties
Kunihiko Hayashi (1):
clk: uniphier: Fix fixed-rate initialization
Kuogee Hsieh (1):
drm/msm/dp: populate connector of struct dp_panel
Lars Ellenberg (1):
drbd: fix potential silent data corruption
Li RongQing (1):
KVM: x86: fix sending PV IPI
Liam Beguin (4):
iio: afe: rescale: use s64 for temporary scale calculations
iio: inkern: apply consumer scale on IIO_VAL_INT cases
iio: inkern: apply consumer scale when no channel scale is available
iio: inkern: make a best effort on offset calculation
Libin Yang (1):
soundwire: intel: fix wrong register name in intel_shim_wake
Liguang Zhang (1):
PCI: pciehp: Clear cmd_busy bit in polling mode
Lina Wang (1):
xfrm: fix tunnel model fragmentation behavior
Lino Sanfilippo (1):
tpm: fix reference counting for struct tpm_chip
Linus Torvalds (2):
fs: fd tables have to be multiples of BITS_PER_LONG
fs: fix fd table size alignment properly
Linus Walleij (1):
Input: zinitix - do not report shadow fingers
Liu Ying (1):
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})
Lorenzo Bianconi (4):
mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in
sta mode
mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv
mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update
mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update
Luca Weiss (1):
cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse
Lucas Tanure (1):
i2c: meson: Fix wrong speed use from probe
Lucas Zampieri (1):
HID: logitech-dj: add new lightspeed receiver id
Lv Ruyi (1):
proc: bootconfig: Add null pointer check
Maciej W. Rozycki (1):
DEC: Limit PMAX memory probing to R3k systems
Manish Chopra (1):
qed: display VF trust config
Manish Rangankar (1):
scsi: qla2xxx: Use correct feature type field during RFF_ID processing
Maor Gottlieb (1):
RDMA/core: Set MR type in ib_reg_user_mr
Marc Kleine-Budde (1):
can: m_can: m_can_tx_handler(): fix use after free of skb
Marc Zyngier (4):
PCI: xgene: Revert "PCI: xgene: Fix IB window setup"
pinctrl: npcm: Fix broken references to chip->parent_device
irqchip/qcom-pdc: Fix broken locking
PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup"
Marcel Ziswiler (1):
arm64: defconfig: build imx-sdma as a module
Marcelo Roberto Jimenez (1):
gpio: Revert regression in sysfs-gpio (gpiolib.c)
Marek Szyprowski (1):
clocksource/drivers/exynos_mct: Refactor resources allocation
Marek Vasut (1):
ARM: dts: imx: Add missing LVDS decoder on M53Menlo
Marijn Suijten (1):
firmware: qcom: scm: Remove reassignment to desc following initializer
Martin Blumenstingl (1):
drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops
Martin Varghese (1):
openvswitch: Fixed nd target mask field in the flow dump.
Mastan Katragadda (1):
drm/i915/gem: add missing boundary check in vm_access
Mathias Nyman (1):
xhci: make xhci_handshake timeout for xhci_reset() adjustable
Matt Kramer (1):
ALSA: hda/realtek: Add alc256-samsung-headphone fixup
Matthew Wilcox (Oracle) (2):
XArray: Fix xas_create_range() when multi-order entry present
XArray: Update the LRU list in xas_split()
Maulik Shah (1):
arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc
Mauro Carvalho Chehab (1):
media: atomisp: fix bad usage at error handling logic
Max Filippov (2):
xtensa: fix stop_machine_cpuslocked call in patch_text
xtensa: fix xtensa_wsr always writing 0
Maxim Kiselev (1):
powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch
Maxime Ripard (2):
drm/edid: Don't clear formats if using deep color
clk: Initialize orphan req_rate
Maíra Canal (1):
drm/amd/display: Remove vupdate_int_entry definition
Miaoqian Lin (31):
spi: tegra114: Add missing IRQ check in tegra_spi_probe
hwrng: nomadik - Change clk_disable to clk_disable_unprepare
media: coda: Fix missing put_device() call in coda_get_vdoa_data
soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of
ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in
rockchip_i2s_probe
ASoC: SOF: Add missing of_node_put() in imx8m_probe
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in
msm8916_wcd_digital_probe
ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe
ASoC: msm8916-wcd-analog: Fix error handling in
pm8916_wcd_analog_spmi_probe
ASoC: codecs: wcd934x: Add missing of_node_put() in
wcd934x_codec_parse_data
drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev
drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe
drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe
power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init
drm/tegra: Fix reference leak in tegra_dsi_ganged_probe
ath10k: Fix error handling in ath10k_setup_msa_resources
mips: cdmm: Fix refcount leak in mips_cdmm_phys_base
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region
remoteproc: qcom_wcnss: Add missing of_node_put() in
wcnss_alloc_memory_region
remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region
clk: tegra: tegra124-emc: Fix missing put_device() call in
emc_ensure_emc_driver
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe
pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe
watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function
Michael Ellerman (1):
powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit
Michael S. Tsirkin (1):
virtio_console: break out of buf poll on remove
Michael Schmitz (1):
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix
Mike Marciniszyn (1):
IB/hfi1: Allow larger MTU without AIP
Mikulas Patocka (1):
dm integrity: set journal entry unused when shrinking device
Minghao Chi (1):
spi: tegra20: Use of_device_get_match_data()
Minghao Chi (CGEL ZTE) (1):
net:mcf8390: Use platform_get_irq() to get the interrupt
Miquel Raynal (4):
spi: mxic: Fix the transmit path
dt-bindings: mtd: nand-controller: Fix the reg property description
dt-bindings: mtd: nand-controller: Fix a comment in the examples
dt-bindings: spi: mxic: The interrupt property is not mandatory
Mohan Kumar (1):
ALSA: hda: Avoid unsol event during RPM suspending
Muhammad Usama Anjum (1):
selftests/x86: Add validity check and allow field splitting
Namhyung Kim (1):
bpf: Adjust BPF stack helper functions to accommodate skip > 0
Neil Armstrong (1):
drm/bridge: dw-hdmi: use safe format when first in bridge chain
NeilBrown (1):
SUNRPC: avoid race between mod_timer() and del_timer_sync()
Niels Dossche (1):
Bluetooth: call hci_le_conn_failed with hdev lock in
hci_le_conn_failed
Nikita Shubin (1):
riscv: Fix fill_callchain return value
Niklas Söderlund (1):
samples/bpf, xdpsock: Fix race when running for fix duration of time
Nilesh Javali (1):
scsi: qla2xxx: Fix warning for missing error code
Nishanth Menon (4):
arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs
arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs
drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt
Olga Kornievskaia (1):
NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error
Oliver Hartkopp (5):
can: isotp: sanitize CAN ID checks in isotp_bind()
vxcan: enable local echo for sent CAN frames
can: isotp: return -EADDRNOTAVAIL when reading from unbound socket
can: isotp: support MSG_TRUNC flag when reading from socket
can: isotp: restore accidentally removed MSG_PEEK feature
Ondrej Zary (1):
media: bttv: fix WARNING regression on tunerless devices
Pablo Neira Ayuso (1):
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options
Pali Rohár (1):
PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge
Paolo Valente (1):
Revert "Revert "block, bfq: honor already-setup queue merges""
Patrick Rudolph (1):
hwmon: (pmbus) Add mutex to regulator ops
Paul Kocialkowski (1):
ARM: dts: sun8i: v3s: Move the csi1 block to follow address order
Paul Menzel (1):
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3
Paulo Alcantara (2):
cifs: prevent bad output lengths in smb2_ioctl_query_info()
cifs: fix NULL ptr dereference in smb2_ioctl_query_info()
Pavel Begunkov (1):
io_uring: fix memory leak of uid in files registration
Pavel Kubelun (1):
ARM: dts: qcom: ipq4019: fix sleep clock
Pavel Skripkin (6):
udmabuf: validate ubuf->pagecount
Bluetooth: hci_serdev: call init_rwsem() before p->open()
ath9k_htc: fix uninit value bugs
jfs: fix divide error in dbNextAG
media: Revert "media: em28xx: add missing em28xx_close_extension"
can: mcba_usb: properly check endpoint type
Peiwei Hu (1):
media: ir_toy: free before error exiting
Pekka Pessi (1):
mailbox: tegra-hsp: Flush whole channel
Peng Liu (1):
kunit: make kunit_test_timeout compatible with comment
Peter Rosin (1):
i2c: mux: demux-pinctrl: do not deactivate a master that is not active
Petr Machata (1):
af_netlink: Fix shift out of bounds in group mask calculation
Petr Vorel (1):
crypto: vmx - add missing dependencies
Pierre-Louis Bossart (1):
ASoC: generic: simple-card-utils: remove useless assignment
Prashant Malani (1):
platform/chrome: cros_ec_typec: Check for EC device
Qais Yousef (1):
sched/core: Export pelt_thermal_tp
Quinn Tran (7):
scsi: qla2xxx: Fix stuck session in gpdb
scsi: qla2xxx: Fix scheduling while atomic
scsi: qla2xxx: Fix disk failure to rediscover
scsi: qla2xxx: Fix incorrect reporting of task management failure
scsi: qla2xxx: Fix hang due to session stuck
scsi: qla2xxx: Fix N2N inconsistent PLOGI
scsi: qla2xxx: Reduce false trigger to login
Rafael J. Wysocki (2):
ACPICA: Avoid walking the ACPI Namespace if it is not there
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data
Randy Dunlap (20):
hv: utils: add PTP_1588_CLOCK to Kconfig to fix build
EVM: fix the evm= __setup handler return value
PM: hibernate: fix __setup handler error handling
PM: suspend: fix return value of __setup handler
ACPI: APEI: fix return value of __setup handlers
clocksource: acpi_pm: fix return value of __setup handler
printk: fix return value of printk.devkmsg __setup handler
m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are
defined
TOMOYO: fix __setup handlers return values
mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n
MIPS: RB532: fix return value of __setup handler
dma-debug: fix return value of __setup handlers
tty: hvc: fix return value of __setup handler
kgdboc: fix return value of __setup handler
kgdbts: fix return value of __setup handler
driver core: dd: fix return value of __setup handler
mm/mmap: return 1 from stack_guard_gap __setup() handler
ARM: 9187/1: JIVE: fix return value of __setup handler
mm/memcontrol: return 1 from cgroup.memory __setup() handler
mm/usercopy: return 1 from hardened_usercopy __setup() handler
Richard Guy Briggs (1):
audit: log AUDIT_TIME_* records only from rules
Richard Haines (1):
selinux: allow FIOCLEX and FIONCLEX with policy capability
Richard Leitner (1):
ARM: tegra: tamonten: Fix I2C3 pad setting
Richard Schleich (2):
ARM: dts: bcm2837: Add the missing L1/L2 cache information
ARM: dts: bcm2711: Add the missing L1/L2 cache information
Rik van Riel (2):
mm: invalidate hwpoison page cache page in fault path
mm,hwpoison: unmap poisoned page before invalidation
Ritesh Harjani (3):
ext4: fix ext4_fc_stats trace point
ext4: correct cluster len and clusters changed accounting in
ext4_mb_mark_bb
ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit
Rob Herring (1):
arm64: dts: rockchip: Fix SDIO regulator supply properties on
rk3399-firefly
Robert Hancock (3):
ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting
i2c: xiic: Make bus names unique
net: axienet: fix RX ring refill allocation failure handling
Robert Marko (1):
clk: qcom: ipq8074: fix PCI-E clock oops
Robin Gong (1):
mailbox: imx: fix wakeup failure from freeze mode
Robin Murphy (1):
iommu/iova: Improve 32-bit free space estimate
Roman Li (1):
drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug
Sakari Ailus (1):
ACPI: properties: Consistently return -ENOENT if there are no more
references
Sam Ravnborg (1):
video: fbdev: controlfb: Fix set but not used warnings
Saurav Kashyap (1):
scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()
Sean Christopherson (1):
KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP
MMU
Sean Nyekjaer (1):
mtd: rawnand: protect access to rawnand devices while in suspend
Sean Young (1):
media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC
Shannon Nelson (1):
ionic: fix type complaint in ionic_dev_cmd_clean()
Shengjiu Wang (2):
ASoC: fsl_spdif: Disable TX clock when stop
ASoC: soc-core: skip zero num_dai component in searching dai name
Shin'ichiro Kawasaki (1):
block: limit request dispatch loop duration
Si-Wei Liu (1):
vdpa/mlx5: should verify CTRL_VQ feature exists for MQ
Souptick Joarder (HPE) (1):
irqchip/nvic: Release nvic_base upon failure
Srinivas Kandagatla (1):
ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put
Srinivas Pandruvada (1):
thermal: int340x: Increase bitmap size
Stefano Garzarella (1):
tools/virtio: fix virtio_test execution
Sunil Goutham (1):
hwrng: cavium - Check health status while reading random data
Sven Eckelmann (1):
batman-adv: Check ptr for NULL before reducing its refcnt
Takashi Iwai (1):
ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock
Takashi Sakamoto (1):
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred
transaction
Taniya Das (2):
clk: qcom: clk-rcg2: Update logic to calculate D value for RCG
clk: qcom: clk-rcg2: Update the frac table for pixel clock
Theodore Ts'o (1):
ext4: don't BUG if someone dirty pages without asking ext4 first
Thomas Bracht Laumann Jespersen (1):
scripts/dtc: Call pkg-config POSIXly correct
Tim Gardner (1):
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow
Tobias Waldekranz (1):
net: dsa: mv88e6xxx: Enable port policy support on 6097
Tom Rix (5):
media: video/hdmi: handle short reads of hdmi info frame.
drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq
function
qlcnic: dcb: default to returning -EOPNOTSUPP
can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error
value
rtc: check if __rtc_read_time was successful
Tomas Paukrt (1):
crypto: mxs-dcp - Fix scatterlist processing
Tong Zhang (1):
dax: make sure inodes are flushed before destroy cache
Trond Myklebust (3):
NFS: Use of mapping_set_error() results in spurious errors
NFS: Return valid errors from nfs2/3_decode_dirent()
NFSv4/pNFS: Fix another issue with a list iterator pointing to the
head
Tsuchiya Yuto (1):
media: atomisp: fix dummy_ptr check to avoid duplicate active_bo
Tudor Ambarus (1):
ARM: dts: at91: sama5d2: Fix PMERRLOC resource size
Ulf Hansson (1):
mmc: host: Return an error when ->enable_sdio_irq() ops is missing
Uwe Kleine-König (5):
vfio: platform: simplify device removal
amba: Make the remove callback return void
pwm: lpc18xx-sct: Initialize driver data and hardware before
pwmchip_add()
serial: 8250: Fix race condition in RTS-after-send handling
ARM: mmp: Fix failure to remove sram device
Vitaly Kuznetsov (1):
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't
activated
Vladimir Oltean (1):
net: enetc: report software timestamping via SO_TIMESTAMPING
Waiman Long (2):
locking/lockdep: Avoid potential access of invalid memory in
lock_class
locking/lockdep: Iterate lock_classes directly when reading lockdep
files
Wang Hai (2):
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()
wireguard: socket: free skb in send6 when ipv6 is disabled
Wang Wensheng (1):
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()
Wang Yufen (3):
bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full
bpf, sockmap: Fix more uncharged while msg has more_data
bpf, sockmap: Fix double uncharge the mem of sk_msg
Wen Gong (1):
ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern
Xiang Chen (1):
scsi: hisi_sas: Change permission of parameter prot_mask
Xiaomeng Tong (2):
ALSA: cs4236: fix an incorrect NULL check on list iterator
net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator
Xie Yongji (1):
virtio-blk: Use blk_validate_block_size() to validate block size
Xin Long (1):
udp: call udp_encap_enable for v6 sockets when enabling encap
Xin Xiong (1):
mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init
Xu Kuohai (1):
libbpf: Skip forward declaration when counting duplicated type names
Yafang Shao (1):
libbpf: Fix possible NULL pointer dereference when destroying skeleton
Yake Yang (1):
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt
Yaliang Wang (1):
MIPS: pgalloc: fix memory leak caused by pgd_free()
Yang Guang (1):
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit
Yang Yingliang (3):
media: saa7134: convert list_for_each to entry variant
ASoC: rockchip: i2s: Use devm_platform_get_and_ioremap_resource()
ASoC: atmel: sam9x5_wm8731: use devm_snd_soc_register_card()
Yangtao Li (1):
fsi: aspeed: convert to devm_platform_ioremap_resource
Ye Bin (1):
ext4: fix fs corruption when tring to remove a non-empty directory
with IO error
Yi Wang (1):
KVM: SVM: fix panic on out-of-bounds guest IRQ
Yiqing Yao (1):
drm/amd/pm: enable pm sysfs write for one VF mode
Yongzhi Liu (1):
RDMA/mlx5: Fix memory leak in error flow for subscribe event routine
YueHaibing (1):
video: fbdev: controlfb: Fix COMPILE_TEST build
Z. Liu (1):
video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200
to avoid black screen
Zhang Yi (1):
ext2: correct max file size computing
Zhenzhong Duan (1):
KVM: x86: Fix emulation in writing cr8
Zheyu Ma (2):
ethernet: sun: Free the coherent when failing in probing
video: fbdev: sm712fb: Fix crash in smtcfb_write()
Zhou Qingyang (2):
drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl()
drm/amd/display: Fix a NULL pointer dereference in
amdgpu_dm_connector_add_common_modes()
kernel test robot (1):
regulator: qcom_smd: fix for_each_child.cocci warnings
lic121 (1):
libbpf: Unmap rings when umem deleted
Documentation/admin-guide/sysctl/kernel.rst | 1 +
.../bindings/mtd/nand-controller.yaml | 4 +-
.../devicetree/bindings/spi/spi-mxic.txt | 4 +-
Documentation/process/stable-kernel-rules.rst | 11 +-
Documentation/sound/hd-audio/models.rst | 4 +
arch/arc/kernel/process.c | 2 +-
arch/arm/boot/dts/bcm2711.dtsi | 50 +++++
arch/arm/boot/dts/bcm2837.dtsi | 49 ++++
arch/arm/boot/dts/dra7-l4.dtsi | 5 +-
arch/arm/boot/dts/dra7.dtsi | 8 +-
arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 2 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 3 +
arch/arm/boot/dts/exynos5420-smdk5420.dts | 3 +
arch/arm/boot/dts/imx53-m53menlo.dts | 29 ++-
arch/arm/boot/dts/imx7-colibri.dtsi | 4 +-
arch/arm/boot/dts/imx7-mba7.dtsi | 2 +-
arch/arm/boot/dts/imx7d-nitrogen7.dts | 2 +-
arch/arm/boot/dts/imx7d-pico-hobbit.dts | 4 +-
arch/arm/boot/dts/imx7d-pico-pi.dts | 4 +-
arch/arm/boot/dts/imx7d-sdb.dts | 4 +-
arch/arm/boot/dts/imx7s-warp.dts | 4 +-
arch/arm/boot/dts/qcom-ipq4019.dtsi | 3 +-
arch/arm/boot/dts/qcom-msm8960.dtsi | 8 +-
arch/arm/boot/dts/sama5d2.dtsi | 2 +-
arch/arm/boot/dts/spear1340.dtsi | 6 +-
arch/arm/boot/dts/spear13xx.dtsi | 6 +-
arch/arm/boot/dts/sun8i-v3s.dtsi | 22 +-
arch/arm/boot/dts/tegra20-tamonten.dtsi | 6 +-
arch/arm/configs/multi_v5_defconfig | 1 +
arch/arm/crypto/Kconfig | 2 +
arch/arm/kernel/entry-ftrace.S | 51 ++---
arch/arm/kernel/swp_emulate.c | 2 +-
arch/arm/kernel/traps.c | 2 +-
.../mach-iop32x/include/mach/entry-macro.S | 2 +-
arch/arm/mach-iop32x/include/mach/irqs.h | 2 +-
arch/arm/mach-iop32x/irq.c | 6 +-
arch/arm/mach-iop32x/irqs.h | 60 ++---
arch/arm/mach-mmp/sram.c | 22 +-
arch/arm/mach-mstar/Kconfig | 1 +
arch/arm/mach-s3c/mach-jive.c | 6 +-
.../boot/dts/broadcom/northstar2/ns2-svk.dts | 8 +-
.../boot/dts/broadcom/northstar2/ns2.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 8 +-
arch/arm64/boot/dts/qcom/sm8150.dtsi | 6 +-
.../boot/dts/rockchip/rk3399-firefly.dts | 4 +-
arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-am65.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-j7200.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 5 +-
arch/arm64/boot/dts/ti/k3-j721e.dtsi | 1 +
arch/arm64/configs/defconfig | 2 +-
arch/arm64/kernel/signal.c | 10 +-
arch/arm64/mm/mmu.c | 9 +
arch/arm64/net/bpf_jit_comp.c | 18 +-
arch/csky/kernel/perf_callchain.c | 2 +-
arch/csky/kernel/signal.c | 2 +-
arch/m68k/coldfire/device.c | 6 +-
arch/microblaze/include/asm/uaccess.h | 18 +-
arch/mips/dec/int-handler.S | 6 +-
arch/mips/dec/prom/Makefile | 2 +-
arch/mips/dec/setup.c | 3 +-
arch/mips/include/asm/dec/prom.h | 15 +-
arch/mips/include/asm/pgalloc.h | 6 +
arch/mips/rb532/devices.c | 6 +-
arch/nios2/include/asm/uaccess.h | 26 ++-
arch/nios2/kernel/signal.c | 20 +-
arch/parisc/include/asm/traps.h | 1 +
arch/parisc/kernel/traps.c | 2 +
arch/parisc/mm/fault.c | 89 ++++++++
arch/powerpc/Makefile | 2 +-
arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts | 30 +++
arch/powerpc/boot/dts/fsl/t1040rdb.dts | 8 +-
arch/powerpc/include/asm/io.h | 40 +++-
arch/powerpc/include/asm/uaccess.h | 3 +
arch/powerpc/kernel/kvm.c | 2 +-
arch/powerpc/kvm/book3s_hv.c | 5 +-
arch/powerpc/kvm/powerpc.c | 4 +-
arch/powerpc/lib/sstep.c | 12 +-
arch/powerpc/mm/kasan/kasan_init_32.c | 3 +-
arch/powerpc/mm/numa.c | 4 +-
arch/powerpc/perf/imc-pmu.c | 6 +-
arch/powerpc/platforms/8xx/pic.c | 1 +
arch/powerpc/platforms/powernv/rng.c | 6 +-
arch/powerpc/sysdev/fsl_gtm.c | 4 +-
arch/riscv/include/asm/module.lds.h | 6 +-
arch/riscv/include/asm/thread_info.h | 10 +-
arch/riscv/kernel/perf_callchain.c | 6 +-
arch/sparc/kernel/signal_32.c | 2 +-
arch/um/drivers/mconsole_kern.c | 3 +-
arch/x86/events/intel/pt.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kvm/emulate.c | 14 +-
arch/x86/kvm/hyperv.c | 9 +-
arch/x86/kvm/lapic.c | 5 +-
arch/x86/kvm/mmu/tdp_mmu.c | 3 +
arch/x86/kvm/svm/avic.c | 10 +-
arch/x86/xen/pmu.c | 10 +-
arch/x86/xen/pmu.h | 3 +-
arch/x86/xen/smp_pv.c | 2 +-
arch/xtensa/include/asm/processor.h | 4 +-
arch/xtensa/kernel/jump_label.c | 2 +-
block/bfq-iosched.c | 16 +-
block/blk-mq-sched.c | 9 +-
block/blk-sysfs.c | 8 +-
crypto/authenc.c | 2 +-
crypto/rsa-pkcs1pad.c | 11 +-
drivers/acpi/acpica/nswalk.c | 3 +
drivers/acpi/apei/bert.c | 10 +-
drivers/acpi/apei/erst.c | 2 +-
drivers/acpi/apei/hest.c | 2 +-
drivers/acpi/cppc_acpi.c | 5 +
drivers/acpi/property.c | 2 +-
drivers/amba/bus.c | 5 +-
drivers/base/dd.c | 2 +-
drivers/base/power/main.c | 6 +-
drivers/block/drbd/drbd_req.c | 3 +-
drivers/block/loop.c | 10 +-
drivers/block/virtio_blk.c | 12 +-
drivers/bluetooth/btmtksdio.c | 4 +-
drivers/bluetooth/hci_serdev.c | 3 +-
drivers/bus/mips_cdmm.c | 1 +
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/atmel-rng.c | 1 +
drivers/char/hw_random/cavium-rng-vf.c | 194 +++++++++++++++-
drivers/char/hw_random/cavium-rng.c | 11 +-
drivers/char/hw_random/nomadik-rng.c | 7 +-
drivers/char/tpm/tpm-chip.c | 46 +---
drivers/char/tpm/tpm.h | 2 +
drivers/char/tpm/tpm2-space.c | 65 ++++++
drivers/char/virtio_console.c | 7 +
drivers/clk/actions/owl-s700.c | 1 +
drivers/clk/actions/owl-s900.c | 2 +-
drivers/clk/at91/sama7g5.c | 8 +-
drivers/clk/clk-clps711x.c | 2 +
drivers/clk/clk.c | 13 ++
drivers/clk/imx/clk-imx7d.c | 1 -
drivers/clk/loongson1/clk-loongson1c.c | 1 +
drivers/clk/qcom/clk-rcg2.c | 14 +-
drivers/clk/qcom/gcc-ipq8074.c | 21 +-
drivers/clk/qcom/gcc-msm8994.c | 1 +
drivers/clk/tegra/clk-tegra124-emc.c | 1 +
.../clk/uniphier/clk-uniphier-fixed-rate.c | 1 +
drivers/clocksource/acpi_pm.c | 6 +-
drivers/clocksource/exynos_mct.c | 60 +++--
drivers/clocksource/timer-microchip-pit64b.c | 2 +-
drivers/clocksource/timer-of.c | 6 +-
drivers/clocksource/timer-ti-dm-systimer.c | 4 +-
drivers/cpufreq/qcom-cpufreq-nvmem.c | 2 +-
.../allwinner/sun8i-ce/sun8i-ce-cipher.c | 3 +
.../crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 3 +
.../allwinner/sun8i-ss/sun8i-ss-cipher.c | 3 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 2 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 3 +
drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +
drivers/crypto/ccp/ccp-dmaengine.c | 16 ++
drivers/crypto/ccree/cc_buffer_mgr.c | 7 +
drivers/crypto/ccree/cc_cipher.c | 2 +-
drivers/crypto/mxs-dcp.c | 2 +-
.../crypto/rockchip/rk3288_crypto_skcipher.c | 1 -
drivers/crypto/vmx/Kconfig | 4 +
drivers/dax/super.c | 1 +
drivers/dma-buf/udmabuf.c | 4 +
drivers/dma/hisi_dma.c | 2 +-
drivers/dma/pl330.c | 3 +-
drivers/firmware/efi/efi-pstore.c | 2 +-
drivers/firmware/google/Kconfig | 2 +-
drivers/firmware/qcom_scm.c | 6 -
drivers/firmware/stratix10-svc.c | 2 +-
drivers/fsi/fsi-master-aspeed.c | 21 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +-
.../display/dc/irq/dcn21/irq_service_dcn21.c | 14 --
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 4 +-
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 2 +-
drivers/gpu/drm/bridge/adv7511/adv7511.h | 1 +
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 29 ++-
drivers/gpu/drm/bridge/cdns-dsi.c | 1 +
drivers/gpu/drm/bridge/nwl-dsi.c | 1 +
drivers/gpu/drm/bridge/sil-sii8620.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 5 +-
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 1 +
drivers/gpu/drm/drm_edid.c | 11 +-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
drivers/gpu/drm/meson/meson_drv.c | 6 +-
drivers/gpu/drm/meson/meson_osd_afbcd.c | 41 ++--
drivers/gpu/drm/meson/meson_osd_afbcd.h | 1 +
drivers/gpu/drm/mgag200/mgag200_mode.c | 5 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 8 +
drivers/gpu/drm/msm/dp/dp_display.c | 5 +
.../gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c | 9 +-
drivers/gpu/drm/panfrost/panfrost_gpu.c | 5 +-
drivers/gpu/drm/pl111/pl111_drv.c | 4 +-
drivers/gpu/drm/tegra/dsi.c | 4 +-
drivers/gpu/host1x/dev.c | 1 +
drivers/greybus/svc.c | 8 +-
drivers/hid/hid-logitech-dj.c | 1 +
drivers/hid/i2c-hid/i2c-hid-core.c | 32 ++-
drivers/hid/intel-ish-hid/ishtp-fw-loader.c | 29 +--
drivers/hv/Kconfig | 1 +
drivers/hv/hv_balloon.c | 2 +-
drivers/hwmon/pmbus/pmbus.h | 1 +
drivers/hwmon/pmbus/pmbus_core.c | 18 +-
drivers/hwmon/sch56xx-common.c | 2 +-
drivers/hwtracing/coresight/coresight-catu.c | 3 +-
.../hwtracing/coresight/coresight-cpu-debug.c | 4 +-
.../hwtracing/coresight/coresight-cti-core.c | 4 +-
drivers/hwtracing/coresight/coresight-etb10.c | 4 +-
.../coresight/coresight-etm3x-core.c | 4 +-
.../coresight/coresight-etm4x-core.c | 4 +-
.../coresight/coresight-etm4x-sysfs.c | 8 +-
.../hwtracing/coresight/coresight-funnel.c | 4 +-
.../coresight/coresight-replicator.c | 4 +-
drivers/hwtracing/coresight/coresight-stm.c | 4 +-
.../hwtracing/coresight/coresight-tmc-core.c | 4 +-
drivers/hwtracing/coresight/coresight-tpiu.c | 4 +-
drivers/i2c/busses/i2c-meson.c | 12 +-
drivers/i2c/busses/i2c-nomadik.c | 4 +-
drivers/i2c/busses/i2c-xiic.c | 3 +-
drivers/i2c/muxes/i2c-demux-pinctrl.c | 5 +-
drivers/iio/accel/mma8452.c | 29 ++-
drivers/iio/adc/twl6030-gpadc.c | 2 +
drivers/iio/afe/iio-rescale.c | 8 +-
drivers/iio/inkern.c | 40 +++-
drivers/infiniband/core/cma.c | 2 +-
drivers/infiniband/core/verbs.c | 1 +
drivers/infiniband/hw/hfi1/verbs.c | 3 +-
drivers/infiniband/hw/mlx5/devx.c | 4 +-
drivers/infiniband/hw/mlx5/mr.c | 2 +
drivers/input/input.c | 6 -
drivers/input/serio/ambakmi.c | 3 +-
drivers/input/touchscreen/zinitix.c | 44 +++-
drivers/iommu/iova.c | 5 +-
drivers/iommu/ipmmu-vmsa.c | 4 +-
drivers/irqchip/irq-nvic.c | 2 +
drivers/irqchip/qcom-pdc.c | 5 +-
drivers/mailbox/imx-mailbox.c | 9 +
drivers/mailbox/tegra-hsp.c | 5 +
drivers/md/dm-crypt.c | 2 +-
drivers/md/dm-integrity.c | 6 +-
drivers/media/i2c/adv7511-v4l2.c | 2 +-
drivers/media/i2c/adv7604.c | 2 +-
drivers/media/i2c/adv7842.c | 2 +-
drivers/media/pci/bt8xx/bttv-driver.c | 4 +-
drivers/media/pci/cx88/cx88-mpeg.c | 3 +
drivers/media/pci/ivtv/ivtv-driver.h | 1 -
drivers/media/pci/ivtv/ivtv-ioctl.c | 10 +-
drivers/media/pci/ivtv/ivtv-streams.c | 11 +-
drivers/media/pci/saa7134/saa7134-alsa.c | 8 +-
drivers/media/platform/aspeed-video.c | 9 +-
drivers/media/platform/coda/coda-common.c | 1 +
drivers/media/platform/davinci/vpif.c | 12 +-
.../platform/mtk-vcodec/mtk_vcodec_fw_vpu.c | 2 +
drivers/media/rc/gpio-ir-tx.c | 28 ++-
drivers/media/rc/ir_toy.c | 2 +-
.../media/test-drivers/vidtv/vidtv_s302m.c | 17 +-
drivers/media/usb/em28xx/em28xx-cards.c | 13 +-
drivers/media/usb/go7007/s2250-board.c | 10 +-
drivers/media/usb/hdpvr/hdpvr-video.c | 4 +-
drivers/media/usb/stk1160/stk1160-core.c | 2 +-
drivers/media/usb/stk1160/stk1160-v4l.c | 10 +-
drivers/media/usb/stk1160/stk1160.h | 2 +-
drivers/media/v4l2-core/v4l2-mem2mem.c | 53 ++++-
drivers/memory/emif.c | 8 +-
drivers/memory/pl172.c | 4 +-
drivers/memory/pl353-smc.c | 4 +-
drivers/mfd/asic3.c | 10 +-
drivers/mfd/mc13xxx-core.c | 4 +-
drivers/misc/cardreader/alcor_pci.c | 9 +-
drivers/misc/habanalabs/common/debugfs.c | 2 +
drivers/misc/kgdbts.c | 4 +-
drivers/misc/mei/hw-me-regs.h | 1 +
drivers/misc/mei/interrupt.c | 35 ++-
drivers/misc/mei/pci-me.c | 1 +
drivers/mmc/core/host.c | 15 +-
drivers/mmc/host/davinci_mmc.c | 6 +-
drivers/mmc/host/mmci.c | 4 +-
drivers/mtd/nand/onenand/generic.c | 7 +-
drivers/mtd/nand/raw/atmel/nand-controller.c | 14 +-
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 3 +
drivers/mtd/nand/raw/nand_base.c | 44 ++--
drivers/net/bareudp.c | 25 +--
drivers/net/can/m_can/m_can.c | 5 +-
.../net/can/spi/mcp251xfd/mcp251xfd-core.c | 2 +-
drivers/net/can/usb/mcba_usb.c | 26 ++-
drivers/net/can/vxcan.c | 2 +-
drivers/net/dsa/bcm_sf2_cfp.c | 6 +-
drivers/net/dsa/microchip/ksz8795_spi.c | 11 +
drivers/net/dsa/microchip/ksz9477_spi.c | 12 +
drivers/net/dsa/mv88e6xxx/chip.c | 1 +
drivers/net/ethernet/8390/mcf8390.c | 10 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 +-
.../ethernet/freescale/enetc/enetc_ethtool.c | 5 +-
drivers/net/ethernet/intel/i40e/i40e_xsk.c | 16 +-
.../net/ethernet/pensando/ionic/ionic_main.c | 6 +-
drivers/net/ethernet/qlogic/qed/qed_sriov.c | 1 +
.../net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/sun/sunhme.c | 6 +-
.../net/ethernet/xilinx/xilinx_axienet_main.c | 72 +++---
drivers/net/phy/broadcom.c | 21 ++
drivers/net/wireguard/queueing.c | 3 +-
drivers/net/wireguard/socket.c | 5 +-
drivers/net/wireless/ath/ath10k/snoc.c | 2 +-
drivers/net/wireless/ath/ath10k/wow.c | 7 +-
drivers/net/wireless/ath/ath9k/htc_hst.c | 5 +
drivers/net/wireless/ath/carl9170/main.c | 2 +-
.../broadcom/brcm80211/brcmfmac/firmware.c | 2 +
.../broadcom/brcm80211/brcmfmac/pcie.c | 66 ++----
.../net/wireless/intel/iwlwifi/dvm/mac80211.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 +-
.../net/wireless/mediatek/mt76/mt7603/main.c | 3 +
.../net/wireless/mediatek/mt76/mt7615/main.c | 3 +
.../net/wireless/mediatek/mt76/mt7915/mcu.c | 9 +-
drivers/net/wireless/ray_cs.c | 6 +
drivers/nvdimm/region_devs.c | 3 +
drivers/nvme/host/core.c | 9 +-
drivers/nvme/host/tcp.c | 40 ++++
drivers/pci/controller/pci-aardvark.c | 4 +-
drivers/pci/controller/pci-xgene.c | 35 ++-
drivers/pci/hotplug/pciehp_hpc.c | 2 +
drivers/pci/quirks.c | 12 +
drivers/phy/phy-core-mipi-dphy.c | 4 +-
drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 2 +
drivers/pinctrl/mediatek/pinctrl-paris.c | 30 ++-
drivers/pinctrl/nomadik/pinctrl-nomadik.c | 4 +-
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 185 ++++++++--------
drivers/pinctrl/pinconf-generic.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 2 +
drivers/pinctrl/renesas/core.c | 5 +-
drivers/pinctrl/renesas/pfc-r8a77470.c | 4 +-
drivers/pinctrl/samsung/pinctrl-samsung.c | 30 ++-
drivers/platform/chrome/Makefile | 3 +-
.../platform/chrome/cros_ec_sensorhub_ring.c | 3 +-
.../platform/chrome/cros_ec_sensorhub_trace.h | 123 +++++++++++
drivers/platform/chrome/cros_ec_trace.h | 95 --------
drivers/platform/chrome/cros_ec_typec.c | 6 +
drivers/platform/x86/huawei-wmi.c | 13 +-
drivers/power/reset/gemini-poweroff.c | 4 +-
drivers/power/supply/ab8500_fg.c | 4 +-
drivers/power/supply/bq24190_charger.c | 7 +-
drivers/power/supply/wm8350_power.c | 97 ++++++--
drivers/pwm/pwm-lpc18xx-sct.c | 20 +-
drivers/regulator/qcom_smd-regulator.c | 4 +-
.../regulator/rpi-panel-attiny-regulator.c | 56 ++++-
drivers/remoteproc/qcom_q6v5_adsp.c | 1 +
drivers/remoteproc/qcom_q6v5_mss.c | 11 +-
drivers/remoteproc/qcom_wcnss.c | 1 +
drivers/remoteproc/remoteproc_debugfs.c | 2 +-
drivers/rtc/interface.c | 7 +-
drivers/rtc/rtc-pl030.c | 4 +-
drivers/rtc/rtc-pl031.c | 4 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +-
drivers/scsi/libsas/sas_ata.c | 2 +-
drivers/scsi/pm8001/pm8001_hwi.c | 23 +-
drivers/scsi/pm8001/pm80xx_hwi.c | 209 ++++++++++--------
drivers/scsi/qla2xxx/qla_attr.c | 7 +-
drivers/scsi/qla2xxx/qla_def.h | 10 +-
drivers/scsi/qla2xxx/qla_gs.c | 5 +-
drivers/scsi/qla2xxx/qla_init.c | 73 ++++--
drivers/scsi/qla2xxx/qla_iocb.c | 8 +-
drivers/scsi/qla2xxx/qla_isr.c | 1 +
drivers/scsi/qla2xxx/qla_mbx.c | 14 +-
drivers/scsi/qla2xxx/qla_nvme.c | 22 ++
drivers/scsi/qla2xxx/qla_os.c | 8 +-
drivers/scsi/qla2xxx/qla_sup.c | 4 +-
drivers/scsi/qla2xxx/qla_target.c | 4 +-
drivers/soc/qcom/ocmem.c | 1 +
drivers/soc/qcom/qcom_aoss.c | 2 +-
drivers/soc/qcom/rpmpd.c | 3 +
drivers/soc/ti/wkup_m3_ipc.c | 4 +-
drivers/soundwire/intel.c | 4 +-
drivers/spi/spi-mxic.c | 28 +--
drivers/spi/spi-pl022.c | 5 +-
drivers/spi/spi-pxa2xx-pci.c | 17 +-
drivers/spi/spi-tegra114.c | 4 +
drivers/spi/spi-tegra20-slink.c | 8 +-
drivers/spi/spi-zynqmp-gqspi.c | 5 +-
drivers/spi/spi.c | 4 +-
drivers/staging/iio/adc/ad7280a.c | 4 +-
.../staging/media/atomisp/pci/atomisp_acc.c | 28 ++-
.../media/atomisp/pci/atomisp_gmin_platform.c | 18 ++
drivers/staging/media/atomisp/pci/hmm/hmm.c | 7 +-
.../staging/media/hantro/hantro_h1_jpeg_enc.c | 2 +-
drivers/staging/media/hantro/hantro_h1_regs.h | 2 +-
drivers/staging/media/meson/vdec/esparser.c | 7 +-
.../staging/media/meson/vdec/vdec_helpers.c | 8 +-
.../staging/media/meson/vdec/vdec_helpers.h | 4 +-
.../staging/media/sunxi/cedrus/cedrus_h264.c | 2 +-
.../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +-
drivers/staging/media/zoran/zoran.h | 2 +-
drivers/staging/media/zoran/zoran_card.c | 86 ++++---
drivers/staging/media/zoran/zoran_device.c | 7 +-
drivers/staging/media/zoran/zoran_driver.c | 18 +-
drivers/staging/mt7621-dts/gbpc1.dts | 40 ++--
drivers/staging/mt7621-dts/gbpc2.dts | 116 +++++++++-
drivers/staging/mt7621-dts/mt7621.dtsi | 26 ++-
.../intel/int340x_thermal/int3400_thermal.c | 7 +-
drivers/tty/hvc/hvc_iucv.c | 4 +-
drivers/tty/mxser.c | 15 +-
drivers/tty/serial/8250/8250_dma.c | 11 +-
drivers/tty/serial/8250/8250_lpss.c | 28 ++-
drivers/tty/serial/8250/8250_mid.c | 19 +-
drivers/tty/serial/8250/8250_port.c | 16 +-
drivers/tty/serial/amba-pl010.c | 4 +-
drivers/tty/serial/amba-pl011.c | 3 +-
drivers/tty/serial/kgdboc.c | 6 +-
drivers/tty/serial/serial_core.c | 14 ++
drivers/usb/host/xhci-hub.c | 5 +-
drivers/usb/host/xhci-mem.c | 2 +-
drivers/usb/host/xhci.c | 20 +-
drivers/usb/host/xhci.h | 14 +-
drivers/usb/serial/Kconfig | 1 +
drivers/usb/serial/pl2303.c | 1 +
drivers/usb/serial/pl2303.h | 3 +
drivers/usb/serial/usb-serial-simple.c | 7 +
drivers/usb/storage/ene_ub6250.c | 155 +++++++------
drivers/usb/storage/realtek_cr.c | 2 +-
drivers/vdpa/mlx5/net/mlx5_vnet.c | 18 +-
drivers/vfio/platform/vfio_amba.c | 15 +-
drivers/video/fbdev/amba-clcd.c | 4 +-
drivers/video/fbdev/atafb.c | 12 +-
drivers/video/fbdev/atmel_lcdfb.c | 11 +-
drivers/video/fbdev/cirrusfb.c | 16 +-
drivers/video/fbdev/controlfb.c | 6 +-
drivers/video/fbdev/core/fbcvt.c | 53 ++---
drivers/video/fbdev/matrox/matroxfb_base.c | 2 +-
drivers/video/fbdev/nvidia/nv_i2c.c | 2 +-
.../omap2/omapfb/displays/connector-dvi.c | 1 +
.../omap2/omapfb/displays/panel-dsi-cm.c | 8 +-
.../omapfb/displays/panel-sony-acx565akm.c | 2 +-
.../omapfb/displays/panel-tpo-td043mtea1.c | 4 +-
drivers/video/fbdev/sm712fb.c | 46 +---
drivers/video/fbdev/smscufx.c | 3 +-
drivers/video/fbdev/udlfb.c | 8 +-
drivers/video/fbdev/w100fb.c | 15 +-
drivers/watchdog/rti_wdt.c | 1 +
drivers/watchdog/sp805_wdt.c | 4 +-
fs/binfmt_elf.c | 24 +-
fs/btrfs/reflink.c | 7 +-
fs/cifs/smb2ops.c | 130 ++++++-----
fs/coredump.c | 39 +++-
fs/exec.c | 26 ++-
fs/ext2/super.c | 6 +-
fs/ext4/inline.c | 9 +-
fs/ext4/inode.c | 25 +++
fs/ext4/mballoc.c | 126 ++++++-----
fs/ext4/namei.c | 10 +-
fs/f2fs/checkpoint.c | 8 +-
fs/f2fs/compress.c | 5 +-
fs/f2fs/data.c | 9 +-
fs/f2fs/file.c | 5 +-
fs/f2fs/gc.c | 4 +-
fs/f2fs/inode.c | 1 +
fs/f2fs/node.c | 6 +-
fs/f2fs/segment.c | 7 +
fs/f2fs/super.c | 6 +-
fs/f2fs/sysfs.c | 2 +-
fs/file.c | 31 ++-
fs/gfs2/rgrp.c | 3 +-
fs/io_uring.c | 7 +-
fs/jfs/jfs_dmap.c | 7 +
fs/nfs/callback_proc.c | 27 +--
fs/nfs/callback_xdr.c | 4 -
fs/nfs/nfs2xdr.c | 2 +-
fs/nfs/nfs3xdr.c | 21 +-
fs/nfs/nfs4proc.c | 1 +
fs/nfs/pnfs.c | 11 +
fs/nfs/pnfs.h | 2 +
fs/nfs/write.c | 5 +-
fs/nfsd/filecache.c | 6 +-
fs/nfsd/nfs4state.c | 12 +-
fs/nfsd/nfsproc.c | 2 +-
fs/nfsd/xdr.h | 2 +-
fs/ntfs/inode.c | 4 +
fs/proc/bootconfig.c | 2 +
fs/pstore/platform.c | 38 ++--
include/linux/amba/bus.h | 2 +-
include/linux/mtd/rawnand.h | 2 +
include/linux/pstore.h | 6 +-
include/linux/serial_core.h | 2 +
include/linux/soc/ti/ti_sci_protocol.h | 2 +-
include/linux/sunrpc/xdr.h | 2 +
include/net/udp.h | 1 +
include/net/udp_tunnel.h | 3 +-
include/sound/pcm.h | 1 +
include/trace/events/ext4.h | 78 ++++---
include/trace/events/rxrpc.h | 8 +-
include/uapi/linux/bpf.h | 12 +-
kernel/audit.h | 4 +
kernel/auditsc.c | 87 ++++++--
kernel/bpf/stackmap.c | 56 ++---
kernel/debug/kdb/kdb_support.c | 2 +-
kernel/dma/debug.c | 4 +-
kernel/events/core.c | 3 +
kernel/locking/lockdep.c | 38 ++--
kernel/locking/lockdep_internals.h | 6 +-
kernel/locking/lockdep_proc.c | 51 ++++-
kernel/power/hibernate.c | 2 +-
kernel/power/suspend_test.c | 8 +-
kernel/printk/printk.c | 6 +-
kernel/rseq.c | 9 +
kernel/sched/core.c | 1 +
kernel/sched/debug.c | 10 -
kernel/watch_queue.c | 4 +-
lib/kunit/try-catch.c | 2 +-
lib/raid6/test/Makefile | 4 +-
lib/raid6/test/test.c | 1 -
lib/test_kmod.c | 1 +
lib/test_lockup.c | 11 +-
lib/test_xarray.c | 22 ++
lib/xarray.c | 4 +
mm/kmemleak.c | 9 +-
mm/madvise.c | 3 +-
mm/memcontrol.c | 2 +-
mm/memory.c | 17 +-
mm/mempolicy.c | 8 +-
mm/mmap.c | 2 +-
mm/page_alloc.c | 9 +-
mm/usercopy.c | 5 +-
net/batman-adv/bridge_loop_avoidance.c | 6 +
net/batman-adv/distributed-arp-table.c | 3 +
net/batman-adv/gateway_client.c | 12 +-
net/batman-adv/gateway_client.h | 16 +-
net/batman-adv/hard-interface.h | 3 +
net/batman-adv/network-coding.c | 6 +
net/batman-adv/originator.c | 72 +-----
net/batman-adv/originator.h | 96 +++++++-
net/batman-adv/soft-interface.c | 15 +-
net/batman-adv/soft-interface.h | 16 +-
net/batman-adv/tp_meter.c | 3 +
net/batman-adv/translation-table.c | 22 +-
net/batman-adv/translation-table.h | 18 +-
net/batman-adv/tvlv.c | 6 +
net/bluetooth/hci_conn.c | 2 +
net/can/isotp.c | 69 +++---
net/core/skmsg.c | 17 +-
net/ipv4/route.c | 18 +-
net/ipv4/tcp_bpf.c | 14 +-
net/ipv4/tcp_output.c | 5 +-
net/ipv4/udp.c | 6 +
net/ipv6/udp.c | 4 +-
net/ipv6/xfrm6_output.c | 16 ++
net/netfilter/nf_conntrack_proto_tcp.c | 17 +-
net/netlink/af_netlink.c | 2 +
net/openvswitch/conntrack.c | 118 +++++-----
net/openvswitch/flow_netlink.c | 4 +-
net/rxrpc/ar-internal.h | 15 +-
net/rxrpc/call_event.c | 2 +-
net/rxrpc/call_object.c | 40 +++-
net/sunrpc/xprt.c | 7 +
net/tipc/socket.c | 3 +-
net/xfrm/xfrm_interface.c | 5 +-
samples/bpf/xdpsock_user.c | 5 +-
scripts/dtc/Makefile | 2 +-
scripts/gcc-plugins/stackleak_plugin.c | 25 ++-
security/integrity/evm/evm_main.c | 2 +-
security/keys/keyctl_pkey.c | 14 +-
security/security.c | 17 +-
security/selinux/hooks.c | 11 +-
security/selinux/include/policycap.h | 1 +
security/selinux/include/policycap_names.h | 3 +-
security/selinux/include/security.h | 7 +
security/selinux/selinuxfs.c | 2 +
security/selinux/xfrm.c | 2 +-
security/smack/smack_lsm.c | 2 +-
security/tomoyo/load_policy.c | 4 +-
sound/arm/aaci.c | 4 +-
sound/core/pcm.c | 1 +
sound/core/pcm_lib.c | 9 +-
sound/core/pcm_native.c | 39 +++-
sound/firewire/fcp.c | 4 +-
sound/isa/cs423x/cs4236.c | 8 +-
sound/pci/hda/patch_hdmi.c | 8 +-
sound/pci/hda/patch_realtek.c | 15 +-
sound/soc/atmel/atmel_ssc_dai.c | 5 +-
sound/soc/atmel/sam9g20_wm8731.c | 1 +
sound/soc/atmel/sam9x5_wm8731.c | 16 +-
sound/soc/codecs/Kconfig | 5 +
sound/soc/codecs/msm8916-wcd-analog.c | 22 +-
sound/soc/codecs/msm8916-wcd-digital.c | 5 +-
sound/soc/codecs/mt6358.c | 4 +
sound/soc/codecs/rt5663.c | 2 +
sound/soc/codecs/wcd934x.c | 6 +-
sound/soc/codecs/wm8350.c | 28 ++-
sound/soc/dwc/dwc-i2s.c | 17 +-
sound/soc/fsl/fsl_spdif.c | 2 +
sound/soc/fsl/imx-es8328.c | 1 +
sound/soc/generic/simple-card-utils.c | 2 +-
sound/soc/mxs/mxs-saif.c | 5 +-
sound/soc/mxs/mxs-sgtl5000.c | 3 +
sound/soc/rockchip/rockchip_i2s.c | 18 +-
sound/soc/sh/fsi.c | 19 +-
sound/soc/soc-compress.c | 5 +
sound/soc/soc-core.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +-
sound/soc/soc-topology.c | 3 +-
sound/soc/sof/imx/imx8m.c | 1 +
sound/soc/sof/intel/hda-loader.c | 11 +-
sound/soc/ti/davinci-i2s.c | 5 +-
sound/soc/xilinx/xlnx_formatter_pcm.c | 25 +++
sound/spi/at73c213.c | 27 ++-
tools/include/uapi/linux/bpf.h | 4 +-
tools/lib/bpf/btf_dump.c | 5 +
tools/lib/bpf/libbpf.c | 3 +
tools/lib/bpf/xsk.c | 11 +
.../selftests/bpf/progs/test_sock_fields.c | 2 +-
.../testing/selftests/bpf/test_lirc_mode2.sh | 5 +-
.../selftests/bpf/test_lwt_ip_encap.sh | 10 +-
.../selftests/net/test_vxlan_under_vrf.sh | 8 +-
tools/testing/selftests/vm/Makefile | 6 +-
tools/testing/selftests/x86/Makefile | 6 +-
tools/testing/selftests/x86/check_cc.sh | 2 +-
tools/virtio/virtio_test.c | 1 +
virt/kvm/kvm_main.c | 13 ++
614 files changed, 4953 insertions(+), 2507 deletions(-)
create mode 100644 arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts
create mode 100644 drivers/platform/chrome/cros_ec_sensorhub_trace.h
--
2.20.1
1
559
From: Rong Wang <w_angrong(a)163.com>
kunpeng inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5CO9A
CVE: NA
---------------------------------
As pass through devices, hypervisor can`t control the status of
device, and can`t track dirty memory DMA from device, during
migration.
The goal of this framework is to combine hardware to accomplish
the task above.
qemu
|status control and dirty memory report
vfio
|ops to hardware
hardware
Signed-off-by: Rong Wang <w_angrong(a)163.com>
Signed-off-by: HuHua Li <18245010845(a)163.com>
Signed-off-by: Ripeng Qiu <965412048(a)qq.com>
---
drivers/vfio/pci/Makefile | 2 +-
drivers/vfio/pci/vfio_pci.c | 54 +++
drivers/vfio/pci/vfio_pci_migration.c | 755 ++++++++++++++++++++++++++++++++++
drivers/vfio/pci/vfio_pci_private.h | 14 +-
drivers/vfio/vfio.c | 411 +++++++++++++++++-
include/linux/vfio_pci_migration.h | 136 ++++++
6 files changed, 1367 insertions(+), 5 deletions(-)
create mode 100644 drivers/vfio/pci/vfio_pci_migration.c
create mode 100644 include/linux/vfio_pci_migration.h
diff --git a/drivers/vfio/pci/Makefile b/drivers/vfio/pci/Makefile
index 76d8ec0..80a777d 100644
--- a/drivers/vfio/pci/Makefile
+++ b/drivers/vfio/pci/Makefile
@@ -1,5 +1,5 @@
-vfio-pci-y := vfio_pci.o vfio_pci_intrs.o vfio_pci_rdwr.o vfio_pci_config.o
+vfio-pci-y := vfio_pci.o vfio_pci_intrs.o vfio_pci_rdwr.o vfio_pci_config.o vfio_pci_migration.o
vfio-pci-$(CONFIG_VFIO_PCI_IGD) += vfio_pci_igd.o
obj-$(CONFIG_VFIO_PCI) += vfio-pci.o
diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
index 51b791c..59d8280 100644
--- a/drivers/vfio/pci/vfio_pci.c
+++ b/drivers/vfio/pci/vfio_pci.c
@@ -30,6 +30,7 @@
#include <linux/vgaarb.h>
#include <linux/nospec.h>
#include <linux/sched/mm.h>
+#include <linux/vfio_pci_migration.h>
#include "vfio_pci_private.h"
@@ -296,6 +297,14 @@ static int vfio_pci_enable(struct vfio_pci_device *vdev)
vfio_pci_probe_mmaps(vdev);
+ if (vfio_dev_migration_is_supported(pdev)) {
+ ret = vfio_pci_migration_init(vdev);
+ if (ret) {
+ dev_warn(&vdev->pdev->dev, "Failed to init vfio_pci_migration\n");
+ vfio_pci_disable(vdev);
+ return ret;
+ }
+ }
return 0;
}
@@ -392,6 +401,7 @@ static void vfio_pci_disable(struct vfio_pci_device *vdev)
out:
pci_disable_device(pdev);
+ vfio_pci_migration_exit(vdev);
vfio_pci_try_bus_reset(vdev);
if (!disable_idle_d3)
@@ -642,6 +652,41 @@ struct vfio_devices {
int max_index;
};
+static long vfio_pci_handle_log_buf_ctl(struct vfio_pci_device *vdev,
+ const unsigned long arg)
+{
+ struct vfio_log_buf_ctl *log_buf_ctl = NULL;
+ struct vfio_log_buf_info *log_buf_info = NULL;
+ struct vf_migration_log_info migration_log_info;
+ long ret = 0;
+
+ log_buf_ctl = (struct vfio_log_buf_ctl *)arg;
+ log_buf_info = (struct vfio_log_buf_info *)log_buf_ctl->data;
+
+ switch (log_buf_ctl->flags) {
+ case VFIO_DEVICE_LOG_BUF_FLAG_START:
+ migration_log_info.dom_uuid = log_buf_info->uuid;
+ migration_log_info.buffer_size =
+ log_buf_info->buffer_size;
+ migration_log_info.sge_num = log_buf_info->addrs_size;
+ migration_log_info.sge_len = log_buf_info->frag_size;
+ migration_log_info.sgevec = log_buf_info->sgevec;
+ ret = vfio_pci_device_log_start(vdev,
+ &migration_log_info);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_STOP:
+ ret = vfio_pci_device_log_stop(vdev,
+ log_buf_info->uuid);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_STATUS_QUERY:
+ ret = vfio_pci_device_log_status_query(vdev);
+ break;
+ default:
+ ret = -EINVAL;
+ break;
+ }
+ return ret;
+}
static long vfio_pci_ioctl(void *device_data,
unsigned int cmd, unsigned long arg)
{
@@ -1142,6 +1187,8 @@ static long vfio_pci_ioctl(void *device_data,
return vfio_pci_ioeventfd(vdev, ioeventfd.offset,
ioeventfd.data, count, ioeventfd.fd);
+ } else if (cmd == VFIO_DEVICE_LOG_BUF_CTL) {
+ return vfio_pci_handle_log_buf_ctl(vdev, arg);
}
return -ENOTTY;
@@ -1566,6 +1613,9 @@ static int vfio_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
pci_set_power_state(pdev, PCI_D3hot);
}
+ if (vfio_dev_migration_is_supported(pdev))
+ ret = vfio_pci_device_init(pdev);
+
return ret;
}
@@ -1591,6 +1641,10 @@ static void vfio_pci_remove(struct pci_dev *pdev)
if (!disable_idle_d3)
pci_set_power_state(pdev, PCI_D0);
+
+ if (vfio_dev_migration_is_supported(pdev)) {
+ vfio_pci_device_uninit(pdev);
+ }
}
static pci_ers_result_t vfio_pci_aer_err_detected(struct pci_dev *pdev,
diff --git a/drivers/vfio/pci/vfio_pci_migration.c b/drivers/vfio/pci/vfio_pci_migration.c
new file mode 100644
index 0000000..f69cd13
--- /dev/null
+++ b/drivers/vfio/pci/vfio_pci_migration.c
@@ -0,0 +1,755 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2022 Huawei Technologies Co., Ltd. All rights reserved.
+ */
+
+#include <linux/module.h>
+#include <linux/io.h>
+#include <linux/pci.h>
+#include <linux/uaccess.h>
+#include <linux/vfio.h>
+#include <linux/vfio_pci_migration.h>
+
+#include "vfio_pci_private.h"
+
+static LIST_HEAD(vfio_pci_mig_drivers_list);
+static DEFINE_MUTEX(vfio_pci_mig_drivers_mutex);
+
+static void vfio_pci_add_mig_drv(struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ mutex_lock(&vfio_pci_mig_drivers_mutex);
+ atomic_set(&mig_drv->count, 1);
+ list_add_tail(&mig_drv->list, &vfio_pci_mig_drivers_list);
+ mutex_unlock(&vfio_pci_mig_drivers_mutex);
+}
+
+static void vfio_pci_remove_mig_drv(struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ mutex_lock(&vfio_pci_mig_drivers_mutex);
+ list_del(&mig_drv->list);
+ mutex_unlock(&vfio_pci_mig_drivers_mutex);
+}
+
+static struct vfio_pci_vendor_mig_driver *
+ vfio_pci_find_mig_drv(struct pci_dev *pdev, struct module *module)
+{
+ struct vfio_pci_vendor_mig_driver *mig_drv = NULL;
+
+ mutex_lock(&vfio_pci_mig_drivers_mutex);
+ list_for_each_entry(mig_drv, &vfio_pci_mig_drivers_list, list) {
+ if (mig_drv->owner == module) {
+ if (mig_drv->bus_num == pdev->bus->number)
+ goto out;
+ }
+ }
+ mig_drv = NULL;
+out:
+ mutex_unlock(&vfio_pci_mig_drivers_mutex);
+ return mig_drv;
+}
+
+static struct vfio_pci_vendor_mig_driver *
+ vfio_pci_get_mig_driver(struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_drv = NULL;
+ struct pci_dev *pf_dev = pci_physfn(pdev);
+
+ mutex_lock(&vfio_pci_mig_drivers_mutex);
+ list_for_each_entry(mig_drv, &vfio_pci_mig_drivers_list, list) {
+ if (mig_drv->bus_num == pf_dev->bus->number)
+ goto out;
+ }
+ mig_drv = NULL;
+out:
+ mutex_unlock(&vfio_pci_mig_drivers_mutex);
+ return mig_drv;
+}
+
+bool vfio_dev_migration_is_supported(struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver = NULL;
+
+ mig_driver = vfio_pci_get_mig_driver(pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_warn(&pdev->dev, "unable to find a mig_drv module\n");
+ return false;
+ }
+
+ return true;
+}
+
+int vfio_pci_device_log_start(struct vfio_pci_device *vdev,
+ struct vf_migration_log_info *log_info)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver;
+
+ mig_driver = vfio_pci_get_mig_driver(vdev->pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_err(&vdev->pdev->dev, "unable to find a mig_drv module\n");
+ return -EFAULT;
+ }
+
+ if (!mig_driver->dev_mig_ops->log_start ||
+ (mig_driver->dev_mig_ops->log_start(vdev->pdev,
+ log_info) != 0)) {
+ dev_err(&vdev->pdev->dev, "failed to set log start\n");
+ return -EFAULT;
+ }
+
+ return 0;
+}
+
+int vfio_pci_device_log_stop(struct vfio_pci_device *vdev, uint32_t uuid)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver;
+
+ mig_driver = vfio_pci_get_mig_driver(vdev->pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_err(&vdev->pdev->dev, "unable to find a mig_drv module\n");
+ return -EFAULT;
+ }
+
+ if (!mig_driver->dev_mig_ops->log_stop ||
+ (mig_driver->dev_mig_ops->log_stop(vdev->pdev, uuid) != 0)) {
+ dev_err(&vdev->pdev->dev, "failed to set log stop\n");
+ return -EFAULT;
+ }
+
+ return 0;
+}
+
+int vfio_pci_device_log_status_query(struct vfio_pci_device *vdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver;
+
+ mig_driver = vfio_pci_get_mig_driver(vdev->pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_err(&vdev->pdev->dev, "unable to find a mig_drv module\n");
+ return -EFAULT;
+ }
+
+ if (!mig_driver->dev_mig_ops->get_log_status ||
+ (mig_driver->dev_mig_ops->get_log_status(vdev->pdev) != 0)) {
+ dev_err(&vdev->pdev->dev, "failed to get log status\n");
+ return -EFAULT;
+ }
+
+ return 0;
+}
+
+int vfio_pci_device_init(struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_drv;
+
+ mig_drv = vfio_pci_get_mig_driver(pdev);
+ if (!mig_drv || !mig_drv->dev_mig_ops) {
+ dev_err(&pdev->dev, "unable to find a mig_drv module\n");
+ return -EFAULT;
+ }
+
+ if (mig_drv->dev_mig_ops->init)
+ return mig_drv->dev_mig_ops->init(pdev);
+
+ return -EFAULT;
+}
+
+void vfio_pci_device_uninit(struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_drv;
+
+ mig_drv = vfio_pci_get_mig_driver(pdev);
+ if (!mig_drv || !mig_drv->dev_mig_ops) {
+ dev_err(&pdev->dev, "unable to find a mig_drv module\n");
+ return;
+ }
+
+ if (mig_drv->dev_mig_ops->uninit)
+ mig_drv->dev_mig_ops->uninit(pdev);
+}
+
+static void vfio_pci_device_release(struct pci_dev *pdev,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ if (mig_drv->dev_mig_ops->release)
+ mig_drv->dev_mig_ops->release(pdev);
+}
+
+static int vfio_pci_device_get_info(struct pci_dev *pdev,
+ struct vfio_device_migration_info *mig_info,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ if (mig_drv->dev_mig_ops->get_info)
+ return mig_drv->dev_mig_ops->get_info(pdev, mig_info);
+ return -EFAULT;
+}
+
+static int vfio_pci_device_enable(struct pci_dev *pdev,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ if (!mig_drv->dev_mig_ops->enable ||
+ (mig_drv->dev_mig_ops->enable(pdev) != 0)) {
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int vfio_pci_device_disable(struct pci_dev *pdev,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ if (!mig_drv->dev_mig_ops->disable ||
+ (mig_drv->dev_mig_ops->disable(pdev) != 0))
+ return -EINVAL;
+
+ return 0;
+}
+
+static int vfio_pci_device_pre_enable(struct pci_dev *pdev,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ if (!mig_drv->dev_mig_ops->pre_enable ||
+ (mig_drv->dev_mig_ops->pre_enable(pdev) != 0))
+ return -EINVAL;
+
+ return 0;
+}
+
+static int vfio_pci_device_state_save(struct pci_dev *pdev,
+ struct vfio_pci_migration_data *data)
+{
+ struct vfio_device_migration_info *mig_info = data->mig_ctl;
+ struct vfio_pci_vendor_mig_driver *mig_drv = data->mig_driver;
+ void *base = (void *)mig_info;
+ int ret = 0;
+
+ if ((mig_info->device_state & VFIO_DEVICE_STATE_RUNNING) != 0) {
+ ret = vfio_pci_device_disable(pdev, mig_drv);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to stop VF function!\n");
+ return ret;
+ }
+ mig_info->device_state &= ~VFIO_DEVICE_STATE_RUNNING;
+ }
+
+ if (mig_drv->dev_mig_ops && mig_drv->dev_mig_ops->save) {
+ ret = mig_drv->dev_mig_ops->save(pdev, base,
+ mig_info->data_offset, data->state_size);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to save device state!\n");
+ return -EINVAL;
+ }
+ } else {
+ return -EFAULT;
+ }
+
+ mig_info->data_size = data->state_size;
+ mig_info->pending_bytes = mig_info->data_size;
+ return ret;
+}
+
+static int vfio_pci_device_state_restore(struct vfio_pci_migration_data *data)
+{
+ struct vfio_device_migration_info *mig_info = data->mig_ctl;
+ struct vfio_pci_vendor_mig_driver *mig_drv = data->mig_driver;
+ struct pci_dev *pdev = data->vf_dev;
+ void *base = (void *)mig_info;
+ int ret;
+
+ if (mig_drv->dev_mig_ops && mig_drv->dev_mig_ops->restore) {
+ ret = mig_drv->dev_mig_ops->restore(pdev, base,
+ mig_info->data_offset, mig_info->data_size);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to restore device state!\n");
+ return -EINVAL;
+ }
+ return 0;
+ }
+
+ return -EFAULT;
+}
+
+static int vfio_pci_set_device_state(struct vfio_pci_migration_data *data,
+ u32 state)
+{
+ struct vfio_device_migration_info *mig_ctl = data->mig_ctl;
+ struct vfio_pci_vendor_mig_driver *mig_drv = data->mig_driver;
+ struct pci_dev *pdev = data->vf_dev;
+ int ret = 0;
+
+ if (state == mig_ctl->device_state)
+ return 0;
+
+ if (!mig_drv->dev_mig_ops)
+ return -EINVAL;
+
+ switch (state) {
+ case VFIO_DEVICE_STATE_RUNNING:
+ if (!(mig_ctl->device_state &
+ VFIO_DEVICE_STATE_RUNNING))
+ ret = vfio_pci_device_enable(pdev, mig_drv);
+ break;
+ case VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RUNNING:
+ /*
+ * (pre-copy) - device should start logging data.
+ */
+ ret = 0;
+ break;
+ case VFIO_DEVICE_STATE_SAVING:
+ /* stop the vf function, save state */
+ ret = vfio_pci_device_state_save(pdev, data);
+ break;
+ case VFIO_DEVICE_STATE_STOP:
+ if (mig_ctl->device_state & VFIO_DEVICE_STATE_RUNNING)
+ ret = vfio_pci_device_disable(pdev, mig_drv);
+ break;
+ case VFIO_DEVICE_STATE_RESUMING:
+ ret = vfio_pci_device_pre_enable(pdev, mig_drv);
+ break;
+ default:
+ ret = -EFAULT;
+ break;
+ }
+
+ if (ret)
+ return ret;
+
+ mig_ctl->device_state = state;
+ return 0;
+}
+
+static ssize_t vfio_pci_handle_mig_dev_state(
+ struct vfio_pci_migration_data *data,
+ char __user *buf, size_t count, bool iswrite)
+{
+ struct vfio_device_migration_info *mig_ctl = data->mig_ctl;
+ u32 device_state;
+ int ret;
+
+ if (count != sizeof(device_state))
+ return -EINVAL;
+
+ if (iswrite) {
+ if (copy_from_user(&device_state, buf, count))
+ return -EFAULT;
+
+ ret = vfio_pci_set_device_state(data, device_state);
+ if (ret)
+ return ret;
+ } else {
+ if (copy_to_user(buf, &mig_ctl->device_state, count))
+ return -EFAULT;
+ }
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_pending_bytes(
+ struct vfio_device_migration_info *mig_info,
+ char __user *buf, size_t count, bool iswrite)
+{
+ u64 pending_bytes;
+
+ if (count != sizeof(pending_bytes) || iswrite)
+ return -EINVAL;
+
+ if (mig_info->device_state ==
+ (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RUNNING)) {
+ /* In pre-copy state we have no data to return for now,
+ * return 0 pending bytes
+ */
+ pending_bytes = 0;
+ } else {
+ pending_bytes = mig_info->pending_bytes;
+ }
+
+ if (copy_to_user(buf, &pending_bytes, count))
+ return -EFAULT;
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_data_offset(
+ struct vfio_device_migration_info *mig_info,
+ char __user *buf, size_t count, bool iswrite)
+{
+ u64 data_offset = mig_info->data_offset;
+
+ if (count != sizeof(data_offset) || iswrite)
+ return -EINVAL;
+
+ if (copy_to_user(buf, &data_offset, count))
+ return -EFAULT;
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_data_size(
+ struct vfio_device_migration_info *mig_info,
+ char __user *buf, size_t count, bool iswrite)
+{
+ u64 data_size;
+
+ if (count != sizeof(data_size))
+ return -EINVAL;
+
+ if (iswrite) {
+ /* data_size is writable only during resuming state */
+ if (mig_info->device_state != VFIO_DEVICE_STATE_RESUMING)
+ return -EINVAL;
+
+ if (copy_from_user(&data_size, buf, sizeof(data_size)))
+ return -EFAULT;
+
+ mig_info->data_size = data_size;
+ } else {
+ if (mig_info->device_state != VFIO_DEVICE_STATE_SAVING)
+ return -EINVAL;
+
+ if (copy_to_user(buf, &mig_info->data_size,
+ sizeof(data_size)))
+ return -EFAULT;
+ }
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_dev_cmd(struct vfio_pci_migration_data *data,
+ char __user *buf, size_t count, bool iswrite)
+{
+ struct vfio_pci_vendor_mig_driver *mig_drv = data->mig_driver;
+ struct pci_dev *pdev = data->vf_dev;
+ u32 device_cmd;
+ int ret = -EFAULT;
+
+ if (count != sizeof(device_cmd) || !iswrite || !mig_drv->dev_mig_ops)
+ return -EINVAL;
+
+ if (copy_from_user(&device_cmd, buf, count))
+ return -EFAULT;
+
+ switch (device_cmd) {
+ case VFIO_DEVICE_MIGRATION_CANCEL:
+ if (mig_drv->dev_mig_ops->cancel)
+ ret = mig_drv->dev_mig_ops->cancel(pdev);
+ break;
+ default:
+ dev_err(&pdev->dev, "cmd is invaild\n");
+ return -EINVAL;
+ }
+
+ if (ret != 0)
+ return ret;
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_drv_version(
+ struct vfio_device_migration_info *mig_info,
+ char __user *buf, size_t count, bool iswrite)
+{
+ u32 version_id = mig_info->version_id;
+
+ if (count != sizeof(version_id) || iswrite)
+ return -EINVAL;
+
+ if (copy_to_user(buf, &version_id, count))
+ return -EFAULT;
+
+ return count;
+}
+
+static ssize_t vfio_pci_handle_mig_data_rw(
+ struct vfio_pci_migration_data *data,
+ char __user *buf, size_t count, u64 pos, bool iswrite)
+{
+ struct vfio_device_migration_info *mig_ctl = data->mig_ctl;
+ void *data_addr = data->vf_data;
+
+ if (count == 0) {
+ dev_err(&data->vf_dev->dev, "qemu operation data size error!\n");
+ return -EINVAL;
+ }
+
+ data_addr += pos - mig_ctl->data_offset;
+ if (iswrite) {
+ if (copy_from_user(data_addr, buf, count))
+ return -EFAULT;
+
+ mig_ctl->pending_bytes += count;
+ if (mig_ctl->pending_bytes > data->state_size)
+ return -EINVAL;
+ } else {
+ if (copy_to_user(buf, data_addr, count))
+ return -EFAULT;
+
+ if (mig_ctl->pending_bytes < count)
+ return -EINVAL;
+
+ mig_ctl->pending_bytes -= count;
+ }
+
+ return count;
+}
+
+static ssize_t vfio_pci_dev_migrn_rw(struct vfio_pci_device *vdev,
+ char __user *buf, size_t count, loff_t *ppos, bool iswrite)
+{
+ unsigned int index =
+ VFIO_PCI_OFFSET_TO_INDEX(*ppos) - VFIO_PCI_NUM_REGIONS;
+ struct vfio_pci_migration_data *data =
+ (struct vfio_pci_migration_data *)vdev->region[index].data;
+ loff_t pos = *ppos & VFIO_PCI_OFFSET_MASK;
+ struct vfio_device_migration_info *mig_ctl = data->mig_ctl;
+ int ret;
+
+ if (pos >= vdev->region[index].size)
+ return -EINVAL;
+
+ count = min(count, (size_t)(vdev->region[index].size - pos));
+ if (pos >= VFIO_MIGRATION_REGION_DATA_OFFSET)
+ return vfio_pci_handle_mig_data_rw(data,
+ buf, count, pos, iswrite);
+
+ switch (pos) {
+ case VFIO_DEVICE_MIGRATION_OFFSET(device_state):
+ ret = vfio_pci_handle_mig_dev_state(data,
+ buf, count, iswrite);
+ break;
+ case VFIO_DEVICE_MIGRATION_OFFSET(pending_bytes):
+ ret = vfio_pci_handle_mig_pending_bytes(mig_ctl,
+ buf, count, iswrite);
+ break;
+ case VFIO_DEVICE_MIGRATION_OFFSET(data_offset):
+ ret = vfio_pci_handle_mig_data_offset(mig_ctl,
+ buf, count, iswrite);
+ break;
+ case VFIO_DEVICE_MIGRATION_OFFSET(data_size):
+ ret = vfio_pci_handle_mig_data_size(mig_ctl,
+ buf, count, iswrite);
+ break;
+ case VFIO_DEVICE_MIGRATION_OFFSET(device_cmd):
+ ret = vfio_pci_handle_mig_dev_cmd(data,
+ buf, count, iswrite);
+ break;
+ case VFIO_DEVICE_MIGRATION_OFFSET(version_id):
+ ret = vfio_pci_handle_mig_drv_version(mig_ctl,
+ buf, count, iswrite);
+ break;
+ default:
+ dev_err(&vdev->pdev->dev, "invalid pos offset\n");
+ ret = -EFAULT;
+ break;
+ }
+
+ if (mig_ctl->device_state == VFIO_DEVICE_STATE_RESUMING &&
+ mig_ctl->pending_bytes == data->state_size &&
+ mig_ctl->data_size == data->state_size) {
+ if (vfio_pci_device_state_restore(data) != 0) {
+ dev_err(&vdev->pdev->dev, "Failed to restore device state!\n");
+ return -EFAULT;
+ }
+ mig_ctl->pending_bytes = 0;
+ mig_ctl->data_size = 0;
+ }
+
+ return ret;
+}
+
+static void vfio_pci_dev_migrn_release(struct vfio_pci_device *vdev,
+ struct vfio_pci_region *region)
+{
+ struct vfio_pci_migration_data *data = region->data;
+
+ if (data) {
+ kfree(data->mig_ctl);
+ kfree(data);
+ }
+}
+
+static const struct vfio_pci_regops vfio_pci_migration_regops = {
+ .rw = vfio_pci_dev_migrn_rw,
+ .release = vfio_pci_dev_migrn_release,
+};
+
+static int vfio_pci_migration_info_init(struct pci_dev *pdev,
+ struct vfio_device_migration_info *mig_info,
+ struct vfio_pci_vendor_mig_driver *mig_drv)
+{
+ int ret;
+
+ ret = vfio_pci_device_get_info(pdev, mig_info, mig_drv);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to get device info\n");
+ return ret;
+ }
+
+ if (mig_info->data_size > VFIO_MIGRATION_BUFFER_MAX_SIZE) {
+ dev_err(&pdev->dev, "mig_info->data_size %llu is invalid\n",
+ mig_info->data_size);
+ return -EINVAL;
+ }
+
+ mig_info->data_offset = VFIO_MIGRATION_REGION_DATA_OFFSET;
+ return ret;
+}
+
+static int vfio_device_mig_data_init(struct vfio_pci_device *vdev,
+ struct vfio_pci_migration_data *data)
+{
+ struct vfio_device_migration_info *mig_ctl;
+ u64 mig_offset;
+ int ret;
+
+ mig_ctl = kzalloc(sizeof(*mig_ctl), GFP_KERNEL);
+ if (!mig_ctl)
+ return -ENOMEM;
+
+ ret = vfio_pci_migration_info_init(vdev->pdev, mig_ctl,
+ data->mig_driver);
+ if (ret) {
+ dev_err(&vdev->pdev->dev, "get device info error!\n");
+ goto err;
+ }
+
+ mig_offset = sizeof(struct vfio_device_migration_info);
+ data->state_size = mig_ctl->data_size;
+ data->mig_ctl = krealloc(mig_ctl, mig_offset + data->state_size,
+ GFP_KERNEL);
+ if (!data->mig_ctl) {
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ data->vf_data = (void *)((char *)data->mig_ctl + mig_offset);
+ memset(data->vf_data, 0, data->state_size);
+ data->mig_ctl->data_size = 0;
+
+ ret = vfio_pci_register_dev_region(vdev, VFIO_REGION_TYPE_MIGRATION,
+ VFIO_REGION_SUBTYPE_MIGRATION,
+ &vfio_pci_migration_regops, mig_offset + data->state_size,
+ VFIO_REGION_INFO_FLAG_READ | VFIO_REGION_INFO_FLAG_WRITE, data);
+ if (ret) {
+ kfree(data->mig_ctl);
+ return ret;
+ }
+
+ return 0;
+err:
+ kfree(mig_ctl);
+ return ret;
+}
+
+int vfio_pci_migration_init(struct vfio_pci_device *vdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver = NULL;
+ struct vfio_pci_migration_data *data = NULL;
+ struct pci_dev *pdev = vdev->pdev;
+ int ret;
+
+ mig_driver = vfio_pci_get_mig_driver(pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_err(&pdev->dev, "unable to find a mig_driver module\n");
+ return -EINVAL;
+ }
+
+ if (!try_module_get(mig_driver->owner)) {
+ pr_err("module %s is not live\n", mig_driver->owner->name);
+ return -ENODEV;
+ }
+
+ data = kzalloc(sizeof(*data), GFP_KERNEL);
+ if (!data) {
+ module_put(mig_driver->owner);
+ return -ENOMEM;
+ }
+
+ data->mig_driver = mig_driver;
+ data->vf_dev = pdev;
+
+ ret = vfio_device_mig_data_init(vdev, data);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to init vfio device migration data!\n");
+ goto err;
+ }
+
+ return ret;
+err:
+ kfree(data);
+ module_put(mig_driver->owner);
+ return ret;
+}
+
+void vfio_pci_migration_exit(struct vfio_pci_device *vdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver = NULL;
+
+ mig_driver = vfio_pci_get_mig_driver(vdev->pdev);
+ if (!mig_driver || !mig_driver->dev_mig_ops) {
+ dev_warn(&vdev->pdev->dev, "mig_driver is not found\n");
+ return;
+ }
+
+ if (module_refcount(mig_driver->owner) > 0) {
+ vfio_pci_device_release(vdev->pdev, mig_driver);
+ module_put(mig_driver->owner);
+ }
+}
+
+int vfio_pci_register_migration_ops(struct vfio_device_migration_ops *ops,
+ struct module *mod, struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver = NULL;
+
+ if (!ops || !mod || !pdev)
+ return -EINVAL;
+
+ mig_driver = vfio_pci_find_mig_drv(pdev, mod);
+ if (mig_driver) {
+ pr_info("%s migration ops has already been registered\n",
+ mod->name);
+ atomic_add(1, &mig_driver->count);
+ return 0;
+ }
+
+ if (!try_module_get(THIS_MODULE))
+ return -ENODEV;
+
+ mig_driver = kzalloc(sizeof(*mig_driver), GFP_KERNEL);
+ if (!mig_driver) {
+ module_put(THIS_MODULE);
+ return -ENOMEM;
+ }
+
+ mig_driver->pdev = pdev;
+ mig_driver->bus_num = pdev->bus->number;
+ mig_driver->owner = mod;
+ mig_driver->dev_mig_ops = ops;
+
+ vfio_pci_add_mig_drv(mig_driver);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(vfio_pci_register_migration_ops);
+
+void vfio_pci_unregister_migration_ops(struct module *mod, struct pci_dev *pdev)
+{
+ struct vfio_pci_vendor_mig_driver *mig_driver = NULL;
+
+ if (!mod || !pdev)
+ return;
+
+ mig_driver = vfio_pci_find_mig_drv(pdev, mod);
+ if (!mig_driver) {
+ pr_err("mig_driver is not found\n");
+ return;
+ }
+
+ if (atomic_sub_and_test(1, &mig_driver->count)) {
+ vfio_pci_remove_mig_drv(mig_driver);
+ kfree(mig_driver);
+ module_put(THIS_MODULE);
+ pr_info("%s succeed to unregister migration ops\n",
+ THIS_MODULE->name);
+ }
+}
+EXPORT_SYMBOL_GPL(vfio_pci_unregister_migration_ops);
diff --git a/drivers/vfio/pci/vfio_pci_private.h b/drivers/vfio/pci/vfio_pci_private.h
index 17d2bae..03af269 100644
--- a/drivers/vfio/pci/vfio_pci_private.h
+++ b/drivers/vfio/pci/vfio_pci_private.h
@@ -15,6 +15,7 @@
#include <linux/pci.h>
#include <linux/irqbypass.h>
#include <linux/types.h>
+#include <linux/vfio_pci_migration.h>
#ifndef VFIO_PCI_PRIVATE_H
#define VFIO_PCI_PRIVATE_H
@@ -55,7 +56,7 @@ struct vfio_pci_irq_ctx {
struct vfio_pci_region;
struct vfio_pci_regops {
- size_t (*rw)(struct vfio_pci_device *vdev, char __user *buf,
+ ssize_t (*rw)(struct vfio_pci_device *vdev, char __user *buf,
size_t count, loff_t *ppos, bool iswrite);
void (*release)(struct vfio_pci_device *vdev,
struct vfio_pci_region *region);
@@ -173,4 +174,15 @@ static inline int vfio_pci_igd_init(struct vfio_pci_device *vdev)
return -ENODEV;
}
#endif
+
+extern bool vfio_dev_migration_is_supported(struct pci_dev *pdev);
+extern int vfio_pci_migration_init(struct vfio_pci_device *vdev);
+extern void vfio_pci_migration_exit(struct vfio_pci_device *vdev);
+extern int vfio_pci_device_log_start(struct vfio_pci_device *vdev,
+ struct vf_migration_log_info *log_info);
+extern int vfio_pci_device_log_stop(struct vfio_pci_device *vdev,
+ uint32_t uuid);
+extern int vfio_pci_device_log_status_query(struct vfio_pci_device *vdev);
+extern int vfio_pci_device_init(struct pci_dev *pdev);
+extern void vfio_pci_device_uninit(struct pci_dev *pdev);
#endif /* VFIO_PCI_PRIVATE_H */
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index 7a386fb..35f2a29 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -33,6 +33,7 @@
#include <linux/string.h>
#include <linux/uaccess.h>
#include <linux/vfio.h>
+#include <linux/vfio_pci_migration.h>
#include <linux/wait.h>
#include <linux/sched/signal.h>
@@ -40,6 +41,9 @@
#define DRIVER_AUTHOR "Alex Williamson <alex.williamson(a)redhat.com>"
#define DRIVER_DESC "VFIO - User Level meta-driver"
+#define LOG_BUF_FRAG_SIZE (2 * 1024 * 1024) // fix to 2M
+#define LOG_BUF_MAX_ADDRS_SIZE 128 // max vm ram size is 1T
+
static struct vfio {
struct class *class;
struct list_head iommu_drivers_list;
@@ -57,6 +61,14 @@ struct vfio_iommu_driver {
struct list_head vfio_next;
};
+struct vfio_log_buf {
+ struct vfio_log_buf_info info;
+ int fd;
+ int buffer_state;
+ int device_state;
+ unsigned long *cpu_addrs;
+};
+
struct vfio_container {
struct kref kref;
struct list_head group_list;
@@ -64,6 +76,7 @@ struct vfio_container {
struct vfio_iommu_driver *iommu_driver;
void *iommu_data;
bool noiommu;
+ struct vfio_log_buf log_buf;
};
struct vfio_unbound_dev {
@@ -1158,8 +1171,398 @@ static long vfio_ioctl_set_iommu(struct vfio_container *container,
return ret;
}
+static long vfio_dispatch_cmd_to_devices(const struct vfio_container *container,
+ unsigned int cmd, unsigned long arg)
+{
+ struct vfio_group *group = NULL;
+ struct vfio_device *device = NULL;
+ long ret = -ENXIO;
+
+ list_for_each_entry(group, &container->group_list, container_next) {
+ list_for_each_entry(device, &group->device_list, group_next) {
+ ret = device->ops->ioctl(device->device_data, cmd, arg);
+ if (ret) {
+ pr_err("dispatch cmd to devices failed\n");
+ return ret;
+ }
+ }
+ }
+ return ret;
+}
+
+static long vfio_log_buf_start(struct vfio_container *container)
+{
+ struct vfio_log_buf_ctl log_buf_ctl;
+ long ret;
+
+ log_buf_ctl.argsz = sizeof(struct vfio_log_buf_info);
+ log_buf_ctl.flags = VFIO_DEVICE_LOG_BUF_FLAG_START;
+ log_buf_ctl.data = (void *)&container->log_buf.info;
+ ret = vfio_dispatch_cmd_to_devices(container, VFIO_DEVICE_LOG_BUF_CTL,
+ (unsigned long)&log_buf_ctl);
+ if (ret)
+ return ret;
+
+ container->log_buf.device_state = 1;
+ return 0;
+}
+
+static long vfio_log_buf_stop(struct vfio_container *container)
+{
+ struct vfio_log_buf_ctl log_buf_ctl;
+ long ret;
+
+ if (container->log_buf.device_state == 0) {
+ pr_warn("device already stopped\n");
+ return 0;
+ }
+
+ log_buf_ctl.argsz = sizeof(struct vfio_log_buf_info);
+ log_buf_ctl.flags = VFIO_DEVICE_LOG_BUF_FLAG_STOP;
+ log_buf_ctl.data = (void *)&container->log_buf.info;
+ ret = vfio_dispatch_cmd_to_devices(container, VFIO_DEVICE_LOG_BUF_CTL,
+ (unsigned long)&log_buf_ctl);
+ if (ret)
+ return ret;
+
+ container->log_buf.device_state = 0;
+ return 0;
+}
+
+static long vfio_log_buf_query(struct vfio_container *container)
+{
+ struct vfio_log_buf_ctl log_buf_ctl;
+
+ log_buf_ctl.argsz = sizeof(struct vfio_log_buf_info);
+ log_buf_ctl.flags = VFIO_DEVICE_LOG_BUF_FLAG_STATUS_QUERY;
+ log_buf_ctl.data = (void *)&container->log_buf.info;
+
+ return vfio_dispatch_cmd_to_devices(container,
+ VFIO_DEVICE_LOG_BUF_CTL, (unsigned long)&log_buf_ctl);
+}
+
+static int vfio_log_buf_fops_mmap(struct file *filep,
+ struct vm_area_struct *vma)
+{
+ struct vfio_container *container = filep->private_data;
+ struct vfio_log_buf *log_buf = &container->log_buf;
+ unsigned long frag_pg_size;
+ unsigned long frag_offset;
+ phys_addr_t pa;
+ int ret = -EINVAL;
+
+ if (!log_buf->cpu_addrs) {
+ pr_err("mmap before setup, please setup log buf first\n");
+ return ret;
+ }
+
+ if (log_buf->info.frag_size < PAGE_SIZE) {
+ pr_err("mmap frag size should not less than page size!\n");
+ return ret;
+ }
+
+ frag_pg_size = log_buf->info.frag_size / PAGE_SIZE;
+ frag_offset = vma->vm_pgoff / frag_pg_size;
+
+ if (frag_offset >= log_buf->info.addrs_size) {
+ pr_err("mmap offset out of range!\n");
+ return ret;
+ }
+
+ if (vma->vm_end - vma->vm_start != log_buf->info.frag_size) {
+ pr_err("mmap size error, should be aligned with frag size!\n");
+ return ret;
+ }
+
+ pa = virt_to_phys((void *)log_buf->cpu_addrs[frag_offset]);
+ ret = remap_pfn_range(vma, vma->vm_start,
+ pa >> PAGE_SHIFT,
+ vma->vm_end - vma->vm_start,
+ vma->vm_page_prot);
+ if (ret)
+ pr_err("remap_pfn_range error!\n");
+ return ret;
+}
+
+static struct device *vfio_get_dev(struct vfio_container *container)
+{
+ struct vfio_group *group = NULL;
+ struct vfio_device *device = NULL;
+
+ list_for_each_entry(group, &container->group_list, container_next) {
+ list_for_each_entry(device, &group->device_list, group_next) {
+ return device->dev;
+ }
+ }
+ return NULL;
+}
+
+static void vfio_log_buf_release_dma(struct device *dev,
+ struct vfio_log_buf *log_buf)
+{
+ int i;
+
+ for (i = 0; i < log_buf->info.addrs_size; i++) {
+ if ((log_buf->cpu_addrs && log_buf->cpu_addrs[i] != 0) &&
+ (log_buf->info.sgevec &&
+ log_buf->info.sgevec[i].addr != 0)) {
+ dma_free_coherent(dev, log_buf->info.frag_size,
+ (void *)log_buf->cpu_addrs[i],
+ log_buf->info.sgevec[i].addr);
+ log_buf->cpu_addrs[i] = 0;
+ log_buf->info.sgevec[i].addr = 0;
+ }
+ }
+}
+
+static long vfio_log_buf_alloc_dma(struct vfio_log_buf_info *info,
+ struct vfio_log_buf *log_buf, struct device *dev)
+{
+ int i;
+
+ for (i = 0; i < info->addrs_size; i++) {
+ log_buf->cpu_addrs[i] = (unsigned long)dma_alloc_coherent(dev,
+ info->frag_size, &log_buf->info.sgevec[i].addr,
+ GFP_KERNEL);
+ log_buf->info.sgevec[i].len = info->frag_size;
+ if (log_buf->cpu_addrs[i] == 0 ||
+ log_buf->info.sgevec[i].addr == 0) {
+ return -ENOMEM;
+ }
+ }
+ return 0;
+}
+
+static long vfio_log_buf_alloc_addrs(struct vfio_log_buf_info *info,
+ struct vfio_log_buf *log_buf)
+{
+ log_buf->info.sgevec = kcalloc(info->addrs_size,
+ sizeof(struct vfio_log_buf_sge), GFP_KERNEL);
+ if (!log_buf->info.sgevec)
+ return -ENOMEM;
+
+ log_buf->cpu_addrs = kcalloc(info->addrs_size,
+ sizeof(unsigned long), GFP_KERNEL);
+ if (!log_buf->cpu_addrs) {
+ kfree(log_buf->info.sgevec);
+ log_buf->info.sgevec = NULL;
+ return -ENOMEM;
+ }
+
+ return 0;
+}
+
+static long vfio_log_buf_info_valid(struct vfio_log_buf_info *info)
+{
+ if (info->addrs_size > LOG_BUF_MAX_ADDRS_SIZE ||
+ info->addrs_size == 0) {
+ pr_err("can`t support vm ram size larger than 1T or equal to 0\n");
+ return -EINVAL;
+ }
+ if (info->frag_size != LOG_BUF_FRAG_SIZE) {
+ pr_err("only support %d frag size\n", LOG_BUF_FRAG_SIZE);
+ return -EINVAL;
+ }
+ return 0;
+}
+
+static long vfio_log_buf_setup(struct vfio_container *container,
+ unsigned long data)
+{
+ struct vfio_log_buf_info info;
+ struct vfio_log_buf *log_buf = &container->log_buf;
+ struct device *dev = NULL;
+ long ret;
+
+ if (log_buf->info.sgevec) {
+ pr_warn("log buf already setup\n");
+ return 0;
+ }
+
+ if (copy_from_user(&info, (void __user *)data,
+ sizeof(struct vfio_log_buf_info)))
+ return -EFAULT;
+
+ ret = vfio_log_buf_info_valid(&info);
+ if (ret)
+ return ret;
+
+ ret = vfio_log_buf_alloc_addrs(&info, log_buf);
+ if (ret)
+ goto err_out;
+
+ dev = vfio_get_dev(container);
+ if (!dev) {
+ pr_err("can`t get dev\n");
+ goto err_free_addrs;
+ }
+
+ ret = vfio_log_buf_alloc_dma(&info, log_buf, dev);
+ if (ret)
+ goto err_free_dma_array;
+
+ log_buf->info.uuid = info.uuid;
+ log_buf->info.buffer_size = info.buffer_size;
+ log_buf->info.frag_size = info.frag_size;
+ log_buf->info.addrs_size = info.addrs_size;
+ log_buf->buffer_state = 1;
+ return 0;
+
+err_free_dma_array:
+ vfio_log_buf_release_dma(dev, log_buf);
+err_free_addrs:
+ kfree(log_buf->cpu_addrs);
+ log_buf->cpu_addrs = NULL;
+ kfree(log_buf->info.sgevec);
+ log_buf->info.sgevec = NULL;
+err_out:
+ return -ENOMEM;
+}
+
+static long vfio_log_buf_release_buffer(struct vfio_container *container)
+{
+ struct vfio_log_buf *log_buf = &container->log_buf;
+ struct device *dev = NULL;
+
+ if (log_buf->buffer_state == 0) {
+ pr_warn("buffer already released\n");
+ return 0;
+ }
+
+ dev = vfio_get_dev(container);
+ if (!dev) {
+ pr_err("can`t get dev\n");
+ return -EFAULT;
+ }
+
+ vfio_log_buf_release_dma(dev, log_buf);
+
+ kfree(log_buf->cpu_addrs);
+ log_buf->cpu_addrs = NULL;
+
+ kfree(log_buf->info.sgevec);
+ log_buf->info.sgevec = NULL;
+
+ log_buf->buffer_state = 0;
+ return 0;
+}
+
+static int vfio_log_buf_release(struct inode *inode, struct file *filep)
+{
+ struct vfio_container *container = filep->private_data;
+
+ vfio_log_buf_stop(container);
+ vfio_log_buf_release_buffer(container);
+ memset(&container->log_buf, 0, sizeof(struct vfio_log_buf));
+ return 0;
+}
+
+static long vfio_ioctl_handle_log_buf_ctl(struct vfio_container *container,
+ unsigned long arg)
+{
+ struct vfio_log_buf_ctl log_buf_ctl;
+ long ret = 0;
+
+ if (copy_from_user(&log_buf_ctl, (void __user *)arg,
+ sizeof(struct vfio_log_buf_ctl)))
+ return -EFAULT;
+
+ switch (log_buf_ctl.flags) {
+ case VFIO_DEVICE_LOG_BUF_FLAG_SETUP:
+ ret = vfio_log_buf_setup(container,
+ (unsigned long)log_buf_ctl.data);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_RELEASE:
+ ret = vfio_log_buf_release_buffer(container);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_START:
+ ret = vfio_log_buf_start(container);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_STOP:
+ ret = vfio_log_buf_stop(container);
+ break;
+ case VFIO_DEVICE_LOG_BUF_FLAG_STATUS_QUERY:
+ ret = vfio_log_buf_query(container);
+ break;
+ default:
+ pr_err("log buf control flag incorrect\n");
+ ret = -EINVAL;
+ break;
+ }
+ return ret;
+}
+
+static long vfio_log_buf_fops_unl_ioctl(struct file *filep,
+ unsigned int cmd, unsigned long arg)
+{
+ struct vfio_container *container = filep->private_data;
+ long ret = -EINVAL;
+
+ switch (cmd) {
+ case VFIO_LOG_BUF_CTL:
+ ret = vfio_ioctl_handle_log_buf_ctl(container, arg);
+ break;
+ default:
+ pr_err("log buf control cmd incorrect\n");
+ break;
+ }
+
+ return ret;
+}
+
+#ifdef CONFIG_COMPAT
+static long vfio_log_buf_fops_compat_ioctl(struct file *filep,
+ unsigned int cmd, unsigned long arg)
+{
+ arg = (unsigned long)compat_ptr(arg);
+ return vfio_log_buf_fops_unl_ioctl(filep, cmd, arg);
+}
+#endif /* CONFIG_COMPAT */
+
+static const struct file_operations vfio_log_buf_fops = {
+ .owner = THIS_MODULE,
+ .mmap = vfio_log_buf_fops_mmap,
+ .unlocked_ioctl = vfio_log_buf_fops_unl_ioctl,
+ .release = vfio_log_buf_release,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = vfio_log_buf_fops_compat_ioctl,
+#endif
+};
+
+static int vfio_get_log_buf_fd(struct vfio_container *container,
+ unsigned long arg)
+{
+ struct file *filep = NULL;
+ int ret;
+
+ if (container->log_buf.fd > 0)
+ return container->log_buf.fd;
+
+ ret = get_unused_fd_flags(O_CLOEXEC);
+ if (ret < 0) {
+ pr_err("get_unused_fd_flags get fd failed\n");
+ return ret;
+ }
+
+ filep = anon_inode_getfile("[vfio-log-buf]", &vfio_log_buf_fops,
+ container, O_RDWR);
+ if (IS_ERR(filep)) {
+ pr_err("anon_inode_getfile failed\n");
+ put_unused_fd(ret);
+ ret = PTR_ERR(filep);
+ return ret;
+ }
+
+ filep->f_mode |= (FMODE_READ | FMODE_WRITE | FMODE_LSEEK);
+
+ fd_install(ret, filep);
+
+ container->log_buf.fd = ret;
+ return ret;
+}
+
static long vfio_fops_unl_ioctl(struct file *filep,
- unsigned int cmd, unsigned long arg)
+ unsigned int cmd, unsigned long arg)
{
struct vfio_container *container = filep->private_data;
struct vfio_iommu_driver *driver;
@@ -1179,6 +1582,9 @@ static long vfio_fops_unl_ioctl(struct file *filep,
case VFIO_SET_IOMMU:
ret = vfio_ioctl_set_iommu(container, arg);
break;
+ case VFIO_GET_LOG_BUF_FD:
+ ret = vfio_get_log_buf_fd(container, arg);
+ break;
default:
driver = container->iommu_driver;
data = container->iommu_data;
@@ -1210,6 +1616,7 @@ static int vfio_fops_open(struct inode *inode, struct file *filep)
INIT_LIST_HEAD(&container->group_list);
init_rwsem(&container->group_lock);
kref_init(&container->kref);
+ memset(&container->log_buf, 0, sizeof(struct vfio_log_buf));
filep->private_data = container;
@@ -1219,9 +1626,7 @@ static int vfio_fops_open(struct inode *inode, struct file *filep)
static int vfio_fops_release(struct inode *inode, struct file *filep)
{
struct vfio_container *container = filep->private_data;
-
filep->private_data = NULL;
-
vfio_container_put(container);
return 0;
diff --git a/include/linux/vfio_pci_migration.h b/include/linux/vfio_pci_migration.h
new file mode 100644
index 0000000..464ffb4
--- /dev/null
+++ b/include/linux/vfio_pci_migration.h
@@ -0,0 +1,136 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2022 Huawei Technologies Co., Ltd. All rights reserved.
+ */
+
+#ifndef VFIO_PCI_MIGRATION_H
+#define VFIO_PCI_MIGRATION_H
+
+#include <linux/types.h>
+#include <linux/pci.h>
+
+#define VFIO_REGION_TYPE_MIGRATION (3)
+/* sub-types for VFIO_REGION_TYPE_MIGRATION */
+#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+
+#define VFIO_MIGRATION_BUFFER_MAX_SIZE SZ_256K
+#define VFIO_MIGRATION_REGION_DATA_OFFSET \
+ (sizeof(struct vfio_device_migration_info))
+#define VFIO_DEVICE_MIGRATION_OFFSET(x) \
+ offsetof(struct vfio_device_migration_info, x)
+
+struct vfio_device_migration_info {
+ __u32 device_state; /* VFIO device state */
+#define VFIO_DEVICE_STATE_STOP (0)
+#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | \
+ VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+ __u32 reserved;
+
+ __u32 device_cmd;
+ __u32 version_id;
+
+ __u64 pending_bytes;
+ __u64 data_offset;
+ __u64 data_size;
+};
+
+enum {
+ VFIO_DEVICE_STOP = 0xffff0001,
+ VFIO_DEVICE_CONTINUE,
+ VFIO_DEVICE_MIGRATION_CANCEL,
+};
+
+struct vfio_log_buf_sge {
+ __u64 len;
+ __u64 addr;
+};
+
+struct vfio_log_buf_info {
+ __u32 uuid;
+ __u64 buffer_size;
+ __u64 addrs_size;
+ __u64 frag_size;
+ struct vfio_log_buf_sge *sgevec;
+};
+
+struct vfio_log_buf_ctl {
+ __u32 argsz;
+ __u32 flags;
+ #define VFIO_DEVICE_LOG_BUF_FLAG_SETUP (1 << 0)
+ #define VFIO_DEVICE_LOG_BUF_FLAG_RELEASE (1 << 1)
+ #define VFIO_DEVICE_LOG_BUF_FLAG_START (1 << 2)
+ #define VFIO_DEVICE_LOG_BUF_FLAG_STOP (1 << 3)
+ #define VFIO_DEVICE_LOG_BUF_FLAG_STATUS_QUERY (1 << 4)
+ void *data;
+};
+#define VFIO_LOG_BUF_CTL _IO(VFIO_TYPE, VFIO_BASE + 21)
+#define VFIO_GET_LOG_BUF_FD _IO(VFIO_TYPE, VFIO_BASE + 22)
+#define VFIO_DEVICE_LOG_BUF_CTL _IO(VFIO_TYPE, VFIO_BASE + 23)
+
+struct vf_migration_log_info {
+ __u32 dom_uuid;
+ __u64 buffer_size;
+ __u64 sge_len;
+ __u64 sge_num;
+ struct vfio_log_buf_sge *sgevec;
+};
+
+struct vfio_device_migration_ops {
+ /* Get device information */
+ int (*get_info)(struct pci_dev *pdev,
+ struct vfio_device_migration_info *info);
+ /* Enable a vf device */
+ int (*enable)(struct pci_dev *pdev);
+ /* Disable a vf device */
+ int (*disable)(struct pci_dev *pdev);
+ /* Save a vf device */
+ int (*save)(struct pci_dev *pdev, void *base,
+ uint64_t off, uint64_t count);
+ /* Resuming a vf device */
+ int (*restore)(struct pci_dev *pdev, void *base,
+ uint64_t off, uint64_t count);
+ /* Log start a vf device */
+ int (*log_start)(struct pci_dev *pdev,
+ struct vf_migration_log_info *log_info);
+ /* Log stop a vf device */
+ int (*log_stop)(struct pci_dev *pdev, uint32_t uuid);
+ /* Get vf device log status */
+ int (*get_log_status)(struct pci_dev *pdev);
+ /* Pre enable a vf device(load_setup, before restore a vf) */
+ int (*pre_enable)(struct pci_dev *pdev);
+ /* Cancel a vf device when live migration failed (rollback) */
+ int (*cancel)(struct pci_dev *pdev);
+ /* Init a vf device */
+ int (*init)(struct pci_dev *pdev);
+ /* Uninit a vf device */
+ void (*uninit)(struct pci_dev *pdev);
+ /* Release a vf device */
+ void (*release)(struct pci_dev *pdev);
+};
+
+struct vfio_pci_vendor_mig_driver {
+ struct pci_dev *pdev;
+ unsigned char bus_num;
+ struct vfio_device_migration_ops *dev_mig_ops;
+ struct module *owner;
+ atomic_t count;
+ struct list_head list;
+};
+
+struct vfio_pci_migration_data {
+ u64 state_size;
+ struct pci_dev *vf_dev;
+ struct vfio_pci_vendor_mig_driver *mig_driver;
+ struct vfio_device_migration_info *mig_ctl;
+ void *vf_data;
+};
+
+int vfio_pci_register_migration_ops(struct vfio_device_migration_ops *ops,
+ struct module *mod, struct pci_dev *pdev);
+void vfio_pci_unregister_migration_ops(struct module *mod,
+ struct pci_dev *pdev);
+
+#endif /* VFIO_PCI_MIGRATION_H */
--
1.8.3.1
3
2

05 Jul '22
From: Gou Hao <gouhao(a)uniontech.com>
Patch series "Add extended attributes support for EulerFS".
I refer to the extended attribute implementation code of ext2 file
system. At first, I implemented it completely according to the extended
attribute of ext file system. But later, I changed the disk layout of
entries.
About layout of entry:
The layout of ext2's extended attribute is that name and value
are stored separately,with name growing from top to bottom and value
growing from bottom to top. I think the layout of ext2 wastes
space, because, Name and value are aligned with 4 bytes, In the worst
case, the name and value of entry need 3 bytes of padding respectively,
and a total of 6 bytes are wasted.
I store the name and value together. In the worst case, only need
3 bytes of padding.Use xattr-test.c selftests, with the same block
size, my method can store 112 entries, while using ext2 layout can
only store 102 entries.
In ext4 file system, value can be stored in different blocks, which
increases the scalability. In my method, it can add a pointer to the
next block in the header to achieve the same function, and it is simpler.
The performance of my method is the same as that of ext2, or even better.
About block share:
In ext2, if the extended attributes of two files are exactly
the same, they can share the same disk block. Its implementation
process is:
1. When accessing the extended attribute of a file, add this
extended attribute block to a specific cache.
2. When setting the extended attribute of a file, if there is
a block with exactly the same content as this extended attribute
in the cache, share that block directly.
There is a problem here. If the block of a file is not added to the
cache, the extended attribute block will not be shared.So in this
patch set, I didn't realize the shared disk block. I'll implement it
later when there is a good method or when there is a need.
At present, only user. prefix xattr is implemented. Trusted, ACL and
security will be implemented later.
Gou Hao (7):
eulerfs: add EULER_FS_XATTR config
eulerfs: add related fields of extended attributes
eulerfs: add alloc xattr block interface
eulerfs: implement extended attribute core functions
eulerfs: add callback interface of extended attribute
eulerfs: add implementation of user. prefix extended attribute
eulerfs: add selftests for eulerfs extended attribute
fs/eulerfs/Kconfig | 9 +
fs/eulerfs/Makefile | 1 +
fs/eulerfs/alloc_interface.h | 4 +
fs/eulerfs/const.h | 1 +
fs/eulerfs/euler.h | 1 +
fs/eulerfs/euler_def.h | 3 +
fs/eulerfs/file.c | 1 +
fs/eulerfs/inode.c | 3 +
fs/eulerfs/namei.c | 2 +
fs/eulerfs/nvalloc.c | 1 +
fs/eulerfs/nvalloc.h | 1 +
fs/eulerfs/nvm_struct.h | 12 +
fs/eulerfs/super.c | 36 +-
fs/eulerfs/symlink.c | 1 +
fs/eulerfs/xattr.c | 422 ++++++++++++++
fs/eulerfs/xattr.h | 99 ++++
fs/eulerfs/xattr_user.c | 43 ++
tools/testing/selftests/eulerfs/Makefile | 6 +
tools/testing/selftests/eulerfs/xattr-test.c | 565 +++++++++++++++++++
19 files changed, 1209 insertions(+), 2 deletions(-)
create mode 100644 fs/eulerfs/xattr.c
create mode 100644 fs/eulerfs/xattr.h
create mode 100644 fs/eulerfs/xattr_user.c
create mode 100644 tools/testing/selftests/eulerfs/Makefile
create mode 100644 tools/testing/selftests/eulerfs/xattr-test.c
--
2.20.1
1
7
您好!
Kernel SIG 邀请您参加 2022-07-08 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler kernel SIG例会
会议内容:
美团贡献富容器隔离及内部自研混部特性到openEuler kernel的讨论
会议链接:https://us06web.zoom.us/j/89123664797?pwd=S1BKR3BHTTBOZUd0TTg2VE9FRUVMQT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-07-08 14:00,
The subject of the conference is openEuler kernel SIG例会,
Summary:
美团贡献富容器隔离及内部自研混部特性到openEuler kernel的讨论
You can join the meeting at https://us06web.zoom.us/j/89123664797?pwd=S1BKR3BHTTBOZUd0TTg2VE9FRUVMQT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0
我运行咱们的系统在一台分腾d2000的机器上,发现网卡是驱动不起来的。
网卡型号是PHYT0004,走的MDIO的总线,使用stmmac的驱动。
以上是我了解的相关技术,目前网卡驱动不起来,所以没有相关dmesg日志。
正在着手解决该问题,所以提请咨询。
王铭
sireg
firerun(a)qq.com
2
1
我运行咱们的系统在一台飞腾d2000的机器上,发现网卡驱动不起来。
以上是我了解的相关技术,目前网卡驱动不起来,所以没有相关dmesg日志。
网卡型号是PHYT0004,如果驱动起来,应该是走的MDIO的总线,使用stmmac的驱动。
正在着手解决该问题,所以提请咨询。
王铭
sireg
firerun(a)qq.com
1
0

[PATCH openEuler-1.0-LTS 1/4] ext4: add EXT4_INODE_HAS_XATTR_SPACE macro in xattr.h
by Yongqiang Liu 02 Jul '22
by Yongqiang Liu 02 Jul '22
02 Jul '22
From: Baokun Li <libaokun1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 186866, https://gitee.com/openeuler/kernel/issues/I5DTBL
CVE: NA
--------------------------------
When adding an xattr to an inode, we must ensure that the inode_size is
not less than EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad. Otherwise,
the end position may be greater than the start position, resulting in UAF.
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/ext4/xattr.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
index f39cad2abe2a..990084e00374 100644
--- a/fs/ext4/xattr.h
+++ b/fs/ext4/xattr.h
@@ -95,6 +95,19 @@ struct ext4_xattr_entry {
#define EXT4_ZERO_XATTR_VALUE ((void *)-1)
+/*
+ * If we want to add an xattr to the inode, we should make sure that
+ * i_extra_isize is not 0 and that the inode size is not less than
+ * EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad.
+ * EXT4_GOOD_OLD_INODE_SIZE extra_isize header entry pad data
+ * |--------------------------|------------|------|---------|---|-------|
+ */
+#define EXT4_INODE_HAS_XATTR_SPACE(inode) \
+ ((EXT4_I(inode)->i_extra_isize != 0) && \
+ (EXT4_GOOD_OLD_INODE_SIZE + EXT4_I(inode)->i_extra_isize + \
+ sizeof(struct ext4_xattr_ibody_header) + EXT4_XATTR_PAD <= \
+ EXT4_INODE_SIZE((inode)->i_sb)))
+
struct ext4_xattr_info {
const char *name;
const void *value;
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS 1/4] mm/sharepool: Fix using uninitialized sp_flag
by Yongqiang Liu 01 Jul '22
by Yongqiang Liu 01 Jul '22
01 Jul '22
From: Wang Wensheng <wangwensheng4(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I578LV
CVE: NA
-------------------------------------------------
Add the missing initialization for kc.sp_flag in
sp_make_share_kva_to_spg(). Or a random value would be used in
sp_remap_kva_to_vma().
Fixes: da51b55eeff9 ("mm/share_pool: Support read-only memory allocation")
Signed-off-by: Wang Wensheng <wangwensheng4(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/share_pool.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/share_pool.c b/mm/share_pool.c
index ec889155b0ff..893e5352bf01 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -3023,7 +3023,7 @@ static void *sp_make_share_kva_to_spg(unsigned long kva, unsigned long size,
}
spa->kva = kva;
-
+ kc.sp_flags = sp_flags;
list_for_each_entry(spg_node, &spg->procs, proc_node) {
mm = spg_node->master->mm;
kc.state = K2U_NORMAL;
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS 1/4] alinux: sched: Defend cfs and rt bandwidth against overflow
by liuzhengyuan@kylinos.cn 30 Jun '22
by liuzhengyuan@kylinos.cn 30 Jun '22
30 Jun '22
From: Huaixin Chang <changhuaixin(a)linux.alibaba.com>
anolis inclusion
from anolis_master
commit 9d168f216486333f24aa1b33706eddf3b13d7228
category: performance
bugzilla: NA
CVE: NA
---------------------------
Kernel limitation on cpu.cfs_quota_us is insufficient. Some large
numbers might cause overflow in to_ratio() calculation and produce
unexpected results.
For example, if we make two cpu cgroups and then write a reasonable
value and a large value into child's and parent's cpu.cfs_quota_us. This
will cause a write error.
cd /sys/fs/cgroup/cpu
mkdir parent; mkdir parent/child
echo 8000 > parent/child/cpu.cfs_quota_us
# 17592186044416 is (1UL << 44)
echo 17592186044416 > parent/cpu.cfs_quota_us
In this case, quota will overflow and thus fail the __cfs_schedulable
check. Similar overflow also affects rt bandwidth.
Burstable CFS bandwidth controller will also benefit from limiting
quota.
Change-Id: I0f89d1f26b168c5cfa041e886395c7f3068114ae
Reviewed-by: Shanpei Chen <shanpeic(a)linux.alibaba.com>
Signed-off-by: Huaixin Chang <changhuaixin(a)linux.alibaba.com>
Signed-off-by: Zhengyuan Liu <liuzhengyuan(a)kylinos.cn>
---
kernel/sched/core.c | 8 ++++++++
kernel/sched/rt.c | 9 +++++++++
kernel/sched/sched.h | 2 ++
3 files changed, 19 insertions(+)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 36d7422da0ac..51fdd30f188a 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6679,6 +6679,8 @@ static DEFINE_MUTEX(cfs_constraints_mutex);
const u64 max_cfs_quota_period = 1 * NSEC_PER_SEC; /* 1s */
const u64 min_cfs_quota_period = 1 * NSEC_PER_MSEC; /* 1ms */
+/* More than 203 days if BW_SHIFT equals 20. */
+const u64 max_cfs_runtime = MAX_BW_USEC * NSEC_PER_USEC;
static int __cfs_schedulable(struct task_group *tg, u64 period, u64 runtime);
@@ -6706,6 +6708,12 @@ static int tg_set_cfs_bandwidth(struct task_group *tg, u64 period, u64 quota)
if (period > max_cfs_quota_period)
return -EINVAL;
+ /*
+ * Bound quota to defend quota against overflow during bandwidth shift.
+ */
+ if (quota != RUNTIME_INF && quota > max_cfs_runtime)
+ return -EINVAL;
+
/*
* Prevent race between setting of cfs_rq->runtime_enabled and
* unthrottle_offline_cfs_rqs().
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 301ba04d9130..f31e0aaf1f43 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -2518,6 +2518,9 @@ static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
return ret;
}
+/* More than 203 days if BW_SHIFT equals 20. */
+static const u64 max_rt_runtime = MAX_BW_USEC * NSEC_PER_USEC;
+
static int tg_set_rt_bandwidth(struct task_group *tg,
u64 rt_period, u64 rt_runtime)
{
@@ -2534,6 +2537,12 @@ static int tg_set_rt_bandwidth(struct task_group *tg,
if (rt_period == 0)
return -EINVAL;
+ /*
+ * Bound quota to defend quota against overflow during bandwidth shift.
+ */
+ if (rt_runtime != RUNTIME_INF && rt_runtime > max_rt_runtime)
+ return -EINVAL;
+
mutex_lock(&rt_constraints_mutex);
read_lock(&tasklist_lock);
err = __rt_schedulable(tg, rt_period, rt_runtime);
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index ae3068153093..f3808a49ce48 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1732,6 +1732,8 @@ extern void init_dl_rq_bw_ratio(struct dl_rq *dl_rq);
#define BW_SHIFT 20
#define BW_UNIT (1 << BW_SHIFT)
#define RATIO_SHIFT 8
+#define MAX_BW_BITS (64 - BW_SHIFT)
+#define MAX_BW_USEC ((1UL << MAX_BW_BITS) - 1)
unsigned long to_ratio(u64 period, u64 runtime);
extern void init_entity_runnable_average(struct sched_entity *se);
--
2.25.1
3
6

29 Jun '22
From: Zhou Guanghui <zhouguanghui1(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EORS
CVE: NA
--------------------------------
The single-group mode has no application scenario. Therefore, the
related branch is deleted.
The boot option "enable_sp_multi_group_mode" does not take effect.
Signed-off-by: Zhou Guanghui <zhouguanghui1(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/share_pool.c | 137 +++++++++---------------------------------------
1 file changed, 25 insertions(+), 112 deletions(-)
diff --git a/mm/share_pool.c b/mm/share_pool.c
index 5ba353ddfabd..48e309e3ddd3 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -65,9 +65,6 @@
#define byte2mb(size) ((size) >> 20)
#define page2kb(page_num) ((page_num) << (PAGE_SHIFT - 10))
-#define SINGLE_GROUP_MODE 1
-#define MULTI_GROUP_MODE 2
-
#define MAX_GROUP_FOR_SYSTEM 50000
#define MAX_GROUP_FOR_TASK 3000
#define MAX_PROC_PER_GROUP 1024
@@ -98,8 +95,6 @@ int sysctl_sp_perf_alloc;
int sysctl_sp_perf_k2u;
-static int share_pool_group_mode = SINGLE_GROUP_MODE;
-
static int system_group_count;
static unsigned int sp_device_number;
@@ -1088,12 +1083,6 @@ static int mm_add_group_init(struct mm_struct *mm, struct sp_group *spg)
struct sp_group_master *master = mm->sp_group_master;
bool exist = false;
- if (share_pool_group_mode == SINGLE_GROUP_MODE && master &&
- master->count == 1) {
- pr_err_ratelimited("at most one sp group for a task is allowed in single mode\n");
- return -EEXIST;
- }
-
master = sp_init_group_master_locked(mm, &exist);
if (IS_ERR(master))
return PTR_ERR(master);
@@ -2235,72 +2224,30 @@ static int sp_alloc_prepare(unsigned long size, unsigned long sp_flags,
if (sp_flags & SP_HUGEPAGE_ONLY)
sp_flags |= SP_HUGEPAGE;
- if (share_pool_group_mode == SINGLE_GROUP_MODE) {
- spg = __sp_find_spg(current->pid, SPG_ID_DEFAULT);
- if (spg) {
- if (spg_id != SPG_ID_DEFAULT && spg->id != spg_id) {
- sp_group_drop(spg);
- return -ENODEV;
- }
-
- /* up_read will be at the end of sp_alloc */
- down_read(&spg->rw_lock);
- if (!spg_valid(spg)) {
- up_read(&spg->rw_lock);
- sp_group_drop(spg);
- pr_err_ratelimited("allocation failed, spg is dead\n");
- return -ENODEV;
- }
- } else { /* alocation pass through scene */
- if (enable_mdc_default_group) {
- int ret = 0;
-
- ret = sp_group_add_task(current->tgid, spg_id);
- if (ret < 0) {
- pr_err_ratelimited("add group failed in pass through\n");
- return ret;
- }
-
- spg = __sp_find_spg(current->pid, SPG_ID_DEFAULT);
-
- /* up_read will be at the end of sp_alloc */
- down_read(&spg->rw_lock);
- if (!spg_valid(spg)) {
- up_read(&spg->rw_lock);
- sp_group_drop(spg);
- pr_err_ratelimited("pass through allocation failed, spg is dead\n");
- return -ENODEV;
- }
- } else {
- spg = spg_none;
- }
+ if (spg_id != SPG_ID_DEFAULT) {
+ spg = __sp_find_spg(current->pid, spg_id);
+ if (!spg) {
+ pr_err_ratelimited("allocation failed, can't find group\n");
+ return -ENODEV;
}
- } else {
- if (spg_id != SPG_ID_DEFAULT) {
- spg = __sp_find_spg(current->pid, spg_id);
- if (!spg) {
- pr_err_ratelimited("allocation failed, can't find group\n");
- return -ENODEV;
- }
- /* up_read will be at the end of sp_alloc */
- down_read(&spg->rw_lock);
- if (!spg_valid(spg)) {
- up_read(&spg->rw_lock);
- sp_group_drop(spg);
- pr_err_ratelimited("allocation failed, spg is dead\n");
- return -ENODEV;
- }
+ /* up_read will be at the end of sp_alloc */
+ down_read(&spg->rw_lock);
+ if (!spg_valid(spg)) {
+ up_read(&spg->rw_lock);
+ sp_group_drop(spg);
+ pr_err_ratelimited("allocation failed, spg is dead\n");
+ return -ENODEV;
+ }
- if (!is_process_in_group(spg, current->mm)) {
- up_read(&spg->rw_lock);
- sp_group_drop(spg);
- pr_err_ratelimited("allocation failed, task not in group\n");
- return -ENODEV;
- }
- } else { /* alocation pass through scene */
- spg = spg_none;
+ if (!is_process_in_group(spg, current->mm)) {
+ up_read(&spg->rw_lock);
+ sp_group_drop(spg);
+ pr_err_ratelimited("allocation failed, task not in group\n");
+ return -ENODEV;
}
+ } else { /* alocation pass through scene */
+ spg = spg_none;
}
if (sp_flags & SP_HUGEPAGE) {
@@ -2914,33 +2861,12 @@ static int sp_k2u_prepare(unsigned long kva, unsigned long size,
kc->size_aligned = size_aligned;
kc->sp_flags = sp_flags;
kc->spg_id = spg_id;
- kc->to_task = false;
- return 0;
-}
-
-static int sp_check_k2task(struct sp_k2u_context *kc)
-{
- int ret = 0;
- int spg_id = kc->spg_id;
-
- if (share_pool_group_mode == SINGLE_GROUP_MODE) {
- struct sp_group *spg = get_first_group(current->mm);
+ if (spg_id == SPG_ID_DEFAULT || spg_id == SPG_ID_NONE)
+ kc->to_task = true;
+ else
+ kc->to_task = false;
- if (!spg) {
- if (spg_id != SPG_ID_NONE && spg_id != SPG_ID_DEFAULT)
- ret = -EINVAL;
- else
- kc->to_task = true;
- } else {
- if (spg_id != SPG_ID_DEFAULT && spg_id != spg->id)
- ret = -EINVAL;
- sp_group_drop(spg);
- }
- } else {
- if (spg_id == SPG_ID_DEFAULT || spg_id == SPG_ID_NONE)
- kc->to_task = true;
- }
- return ret;
+ return 0;
}
static void *sp_k2u_finish(void *uva, struct sp_k2u_context *kc)
@@ -2985,12 +2911,6 @@ void *sp_make_share_k2u(unsigned long kva, unsigned long size,
if (ret)
return ERR_PTR(ret);
- ret = sp_check_k2task(&kc);
- if (ret) {
- uva = ERR_PTR(ret);
- goto out;
- }
-
if (kc.to_task)
uva = sp_make_share_kva_to_task(kc.kva_aligned, kc.size_aligned, kc.sp_flags);
else {
@@ -3738,13 +3658,6 @@ static int __init enable_share_k2u_to_group(char *s)
}
__setup("enable_sp_share_k2u_spg", enable_share_k2u_to_group);
-static int __init enable_sp_multi_group_mode(char *s)
-{
- share_pool_group_mode = MULTI_GROUP_MODE;
- return 1;
-}
-__setup("enable_sp_multi_group_mode", enable_sp_multi_group_mode);
-
/*** Statistical and maintenance functions ***/
static void free_process_spg_proc_stat(struct sp_proc_stat *proc_stat)
--
2.25.1
1
13

[PATCH openEuler-22.03-LTS 1/2] ipmi/watchdog: replace atomic_add() and atomic_sub()
by Miaohe Lin 29 Jun '22
by Miaohe Lin 29 Jun '22
29 Jun '22
From: Yejune Deng <yejune.deng(a)gmail.com>
mainline inclusion
from v5.11-rc1
commit a01a89b1db1066a6af23ae08b9a0c345b7966f0b
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DVR9
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
atomic_inc() and atomic_dec() looks better
Signed-off-by: Yejune Deng <yejune.deng(a)gmail.com>
Message-Id: <1605511807-7135-1-git-send-email-yejune.deng(a)gmail.com>
Signed-off-by: Corey Minyard <cminyard(a)mvista.com>
Signed-off-by: Miaohe Lin <linmiaohe(a)huawei.com>
---
drivers/char/ipmi/ipmi_watchdog.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c
index f78156d93c3f..32c334e34d55 100644
--- a/drivers/char/ipmi/ipmi_watchdog.c
+++ b/drivers/char/ipmi/ipmi_watchdog.c
@@ -495,7 +495,7 @@ static void panic_halt_ipmi_heartbeat(void)
msg.cmd = IPMI_WDOG_RESET_TIMER;
msg.data = NULL;
msg.data_len = 0;
- atomic_add(1, &panic_done_count);
+ atomic_inc(&panic_done_count);
rv = ipmi_request_supply_msgs(watchdog_user,
(struct ipmi_addr *) &addr,
0,
@@ -505,7 +505,7 @@ static void panic_halt_ipmi_heartbeat(void)
&panic_halt_heartbeat_recv_msg,
1);
if (rv)
- atomic_sub(1, &panic_done_count);
+ atomic_dec(&panic_done_count);
}
static struct ipmi_smi_msg panic_halt_smi_msg = {
@@ -529,12 +529,12 @@ static void panic_halt_ipmi_set_timeout(void)
/* Wait for the messages to be free. */
while (atomic_read(&panic_done_count) != 0)
ipmi_poll_interface(watchdog_user);
- atomic_add(1, &panic_done_count);
+ atomic_inc(&panic_done_count);
rv = __ipmi_set_timeout(&panic_halt_smi_msg,
&panic_halt_recv_msg,
&send_heartbeat_now);
if (rv) {
- atomic_sub(1, &panic_done_count);
+ atomic_dec(&panic_done_count);
pr_warn("Unable to extend the watchdog timeout\n");
} else {
if (send_heartbeat_now)
--
2.23.0
1
1

[PATCH openEuler-5.10-LTS 1/8] net: hns3: set port base vlan tbl_sta to false before removing old vlan
by Zheng Zengkai 28 Jun '22
by Zheng Zengkai 28 Jun '22
28 Jun '22
From: Guangbin Huang <huangguangbin2(a)huawei.com>
mainline inclusion
from mainline-v5.19-rc1
commit 9eda7d8bcbdb
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DGNU
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------------------------------------
When modify port base vlan, the port base vlan tbl_sta needs to set to
false before removing old vlan, to indicate this operation is not finish.
Fixes: c0f46de30c96 ("net: hns3: fix port base vlan add fail when concurrent with reset")
Signed-off-by: Guangbin Huang <huangguangbin2(a)huawei.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Jiantao Xiao <xiaojiantao1(a)h-partners.com>
Reviewed-by: Jian Shen <shenjian15(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 3e0d8388ad3f..57aaa2f1536f 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -10117,6 +10117,7 @@ static int hclge_modify_port_base_vlan_tag(struct hclge_vport *vport,
if (ret)
return ret;
+ vport->port_base_vlan_cfg.tbl_sta = false;
/* remove old VLAN tag */
if (old_info->vlan_tag == 0)
ret = hclge_set_vf_vlan_common(hdev, vport->vport_id,
--
2.20.1
1
7

[PATCH OLK-5.10 v3 1/2] ipmi/watchdog: replace atomic_add() and atomic_sub()
by Miaohe Lin 28 Jun '22
by Miaohe Lin 28 Jun '22
28 Jun '22
From: Yejune Deng <yejune.deng(a)gmail.com>
mainline inclusion
from v5.11-rc1
commit a01a89b1db1066a6af23ae08b9a0c345b7966f0b
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DVR9
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
atomic_inc() and atomic_dec() looks better
Signed-off-by: Yejune Deng <yejune.deng(a)gmail.com>
Message-Id: <1605511807-7135-1-git-send-email-yejune.deng(a)gmail.com>
Signed-off-by: Corey Minyard <cminyard(a)mvista.com>
Signed-off-by: Miaohe Lin <linmiaohe(a)huawei.com>
---
drivers/char/ipmi/ipmi_watchdog.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c
index f78156d93c3f..32c334e34d55 100644
--- a/drivers/char/ipmi/ipmi_watchdog.c
+++ b/drivers/char/ipmi/ipmi_watchdog.c
@@ -495,7 +495,7 @@ static void panic_halt_ipmi_heartbeat(void)
msg.cmd = IPMI_WDOG_RESET_TIMER;
msg.data = NULL;
msg.data_len = 0;
- atomic_add(1, &panic_done_count);
+ atomic_inc(&panic_done_count);
rv = ipmi_request_supply_msgs(watchdog_user,
(struct ipmi_addr *) &addr,
0,
@@ -505,7 +505,7 @@ static void panic_halt_ipmi_heartbeat(void)
&panic_halt_heartbeat_recv_msg,
1);
if (rv)
- atomic_sub(1, &panic_done_count);
+ atomic_dec(&panic_done_count);
}
static struct ipmi_smi_msg panic_halt_smi_msg = {
@@ -529,12 +529,12 @@ static void panic_halt_ipmi_set_timeout(void)
/* Wait for the messages to be free. */
while (atomic_read(&panic_done_count) != 0)
ipmi_poll_interface(watchdog_user);
- atomic_add(1, &panic_done_count);
+ atomic_inc(&panic_done_count);
rv = __ipmi_set_timeout(&panic_halt_smi_msg,
&panic_halt_recv_msg,
&send_heartbeat_now);
if (rv) {
- atomic_sub(1, &panic_done_count);
+ atomic_dec(&panic_done_count);
pr_warn("Unable to extend the watchdog timeout\n");
} else {
if (send_heartbeat_now)
--
2.23.0
1
1

28 Jun '22
From: Daniel Thompson <daniel.thompson(a)linaro.org>
from stable-v5.10.119
commit a8f4d63142f947cd22fa615b8b3b8921cdaf4991
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5YP
CVE: CVE-2022-21499
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
commit eadb2f47a3ced5c64b23b90fd2a3463f63726066 upstream.
KGDB and KDB allow read and write access to kernel memory, and thus
should be restricted during lockdown. An attacker with access to a
serial port (for example, via a hypervisor console, which some cloud
vendors provide over the network) could trigger the debugger so it is
important that the debugger respect the lockdown mode when/if it is
triggered.
Fix this by integrating lockdown into kdb's existing permissions
mechanism. Unfortunately kgdb does not have any permissions mechanism
(although it certainly could be added later) so, for now, kgdb is simply
and brutally disabled by immediately exiting the gdb stub without taking
any action.
For lockdowns established early in the boot (e.g. the normal case) then
this should be fine but on systems where kgdb has set breakpoints before
the lockdown is enacted than "bad things" will happen.
CVE: CVE-2022-21499
Co-developed-by: Stephen Brennan <stephen.s.brennan(a)oracle.com>
Signed-off-by: Stephen Brennan <stephen.s.brennan(a)oracle.com>
Reviewed-by: Douglas Anderson <dianders(a)chromium.org>
Signed-off-by: Daniel Thompson <daniel.thompson(a)linaro.org>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zheng Yejian <zhengyejian1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/security.h | 2 ++
kernel/debug/debug_core.c | 24 ++++++++++++++
kernel/debug/kdb/kdb_main.c | 62 +++++++++++++++++++++++++++++++++++--
security/security.c | 2 ++
4 files changed, 87 insertions(+), 3 deletions(-)
diff --git a/include/linux/security.h b/include/linux/security.h
index 35355429648e..330029ef7e89 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -121,10 +121,12 @@ enum lockdown_reason {
LOCKDOWN_DEBUGFS,
LOCKDOWN_XMON_WR,
LOCKDOWN_BPF_WRITE_USER,
+ LOCKDOWN_DBG_WRITE_KERNEL,
LOCKDOWN_INTEGRITY_MAX,
LOCKDOWN_KCORE,
LOCKDOWN_KPROBES,
LOCKDOWN_BPF_READ,
+ LOCKDOWN_DBG_READ_KERNEL,
LOCKDOWN_PERF,
LOCKDOWN_TRACEFS,
LOCKDOWN_XMON_RW,
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
index be5b6b97adbf..363f781b56ca 100644
--- a/kernel/debug/debug_core.c
+++ b/kernel/debug/debug_core.c
@@ -56,6 +56,7 @@
#include <linux/vmacache.h>
#include <linux/rcupdate.h>
#include <linux/irq.h>
+#include <linux/security.h>
#include <asm/cacheflush.h>
#include <asm/byteorder.h>
@@ -762,6 +763,29 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs,
continue;
kgdb_connected = 0;
} else {
+ /*
+ * This is a brutal way to interfere with the debugger
+ * and prevent gdb being used to poke at kernel memory.
+ * This could cause trouble if lockdown is applied when
+ * there is already an active gdb session. For now the
+ * answer is simply "don't do that". Typically lockdown
+ * *will* be applied before the debug core gets started
+ * so only developers using kgdb for fairly advanced
+ * early kernel debug can be biten by this. Hopefully
+ * they are sophisticated enough to take care of
+ * themselves, especially with help from the lockdown
+ * message printed on the console!
+ */
+ if (security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL)) {
+ if (IS_ENABLED(CONFIG_KGDB_KDB)) {
+ /* Switch back to kdb if possible... */
+ dbg_kdb_mode = 1;
+ continue;
+ } else {
+ /* ... otherwise just bail */
+ break;
+ }
+ }
error = gdb_serial_stub(ks);
}
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 930ac1b25ec7..4e09fab52faf 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -45,6 +45,7 @@
#include <linux/proc_fs.h>
#include <linux/uaccess.h>
#include <linux/slab.h>
+#include <linux/security.h>
#include "kdb_private.h"
#undef MODULE_PARAM_PREFIX
@@ -197,10 +198,62 @@ struct task_struct *kdb_curr_task(int cpu)
}
/*
- * Check whether the flags of the current command and the permissions
- * of the kdb console has allow a command to be run.
+ * Update the permissions flags (kdb_cmd_enabled) to match the
+ * current lockdown state.
+ *
+ * Within this function the calls to security_locked_down() are "lazy". We
+ * avoid calling them if the current value of kdb_cmd_enabled already excludes
+ * flags that might be subject to lockdown. Additionally we deliberately check
+ * the lockdown flags independently (even though read lockdown implies write
+ * lockdown) since that results in both simpler code and clearer messages to
+ * the user on first-time debugger entry.
+ *
+ * The permission masks during a read+write lockdown permits the following
+ * flags: INSPECT, SIGNAL, REBOOT (and ALWAYS_SAFE).
+ *
+ * The INSPECT commands are not blocked during lockdown because they are
+ * not arbitrary memory reads. INSPECT covers the backtrace family (sometimes
+ * forcing them to have no arguments) and lsmod. These commands do expose
+ * some kernel state but do not allow the developer seated at the console to
+ * choose what state is reported. SIGNAL and REBOOT should not be controversial,
+ * given these are allowed for root during lockdown already.
+ */
+static void kdb_check_for_lockdown(void)
+{
+ const int write_flags = KDB_ENABLE_MEM_WRITE |
+ KDB_ENABLE_REG_WRITE |
+ KDB_ENABLE_FLOW_CTRL;
+ const int read_flags = KDB_ENABLE_MEM_READ |
+ KDB_ENABLE_REG_READ;
+
+ bool need_to_lockdown_write = false;
+ bool need_to_lockdown_read = false;
+
+ if (kdb_cmd_enabled & (KDB_ENABLE_ALL | write_flags))
+ need_to_lockdown_write =
+ security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL);
+
+ if (kdb_cmd_enabled & (KDB_ENABLE_ALL | read_flags))
+ need_to_lockdown_read =
+ security_locked_down(LOCKDOWN_DBG_READ_KERNEL);
+
+ /* De-compose KDB_ENABLE_ALL if required */
+ if (need_to_lockdown_write || need_to_lockdown_read)
+ if (kdb_cmd_enabled & KDB_ENABLE_ALL)
+ kdb_cmd_enabled = KDB_ENABLE_MASK & ~KDB_ENABLE_ALL;
+
+ if (need_to_lockdown_write)
+ kdb_cmd_enabled &= ~write_flags;
+
+ if (need_to_lockdown_read)
+ kdb_cmd_enabled &= ~read_flags;
+}
+
+/*
+ * Check whether the flags of the current command, the permissions of the kdb
+ * console and the lockdown state allow a command to be run.
*/
-static inline bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
+static bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
bool no_args)
{
/* permissions comes from userspace so needs massaging slightly */
@@ -1194,6 +1247,9 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
kdb_curr_task(raw_smp_processor_id());
KDB_DEBUG_STATE("kdb_local 1", reason);
+
+ kdb_check_for_lockdown();
+
kdb_go_count = 0;
if (reason == KDB_REASON_DEBUG) {
/* special case below */
diff --git a/security/security.c b/security/security.c
index 4fb58543eeb9..2fc40217d49d 100644
--- a/security/security.c
+++ b/security/security.c
@@ -59,10 +59,12 @@ const char *const lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1] = {
[LOCKDOWN_DEBUGFS] = "debugfs access",
[LOCKDOWN_XMON_WR] = "xmon write access",
[LOCKDOWN_BPF_WRITE_USER] = "use of bpf to write user RAM",
+ [LOCKDOWN_DBG_WRITE_KERNEL] = "use of kgdb/kdb to write kernel RAM",
[LOCKDOWN_INTEGRITY_MAX] = "integrity",
[LOCKDOWN_KCORE] = "/proc/kcore access",
[LOCKDOWN_KPROBES] = "use of kprobes",
[LOCKDOWN_BPF_READ] = "use of bpf to read kernel RAM",
+ [LOCKDOWN_DBG_READ_KERNEL] = "use of kgdb/kdb to read kernel RAM",
[LOCKDOWN_PERF] = "unsafe use of perf",
[LOCKDOWN_TRACEFS] = "use of tracefs",
[LOCKDOWN_XMON_RW] = "xmon read and write access",
--
2.20.1
1
4
Backport 5.10.109 LTS patches from upstream
nds32: fix access_ok() checks in get/put_user
wcn36xx: Differentiate wcn3660 from wcn3620
tpm: use try_get_ops() in tpm-space.c
mac80211: fix potential double free on mesh join
rcu: Don't deboost before reporting expedited quiescent state
Revert "ath: add support for special 0x0 regulatory domain"
crypto: qat - disable registration of algorithms
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
drivers: net: xgene: Fix regression in CRC stripping
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
ALSA: cmipci: Restore aux vol on suspend/resume
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
ALSA: pcm: Add stream lock during PCM reset ioctl operations
ALSA: pcm: Fix races among concurrent prealloc proc writes
ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls
ALSA: pcm: Fix races among concurrent read/write and buffer changes
ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
ALSA: hda/realtek: Add quirk for ASUS GA402
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671
ALSA: hda/realtek: Add quirk for Clevo NP50PNJ
ALSA: hda/realtek: Add quirk for Clevo NP70PNJ
ALSA: usb-audio: add mapping for new Corsair Virtuoso SE
ALSA: oss: Fix PCM OSS buffer allocation overflow
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
staging: fbtft: fb_st7789v: reset display before initialization
tpm: Fix error handling in async work
cgroup-v1: Correct privileges check in release_agent writes
exfat: avoid incorrectly releasing for root inode
net: ipv6: fix skb_over_panic in __ip6_append_data
Already merged:
llc: only change llc->dev when bind() succeeds
netfilter: nf_tables: initialize registers in nft_do_chain()
llc: fix netdevice reference leaks in llc_ui_bind()
cgroup: Use open-time cgroup namespace for process migration perm checks
cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv
nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION
Total patches: 37 - 6 = 31
Arnd Bergmann (1):
nds32: fix access_ok() checks in get/put_user
Brian Norris (1):
Revert "ath: add support for special 0x0 regulatory domain"
Bryan O'Donoghue (1):
wcn36xx: Differentiate wcn3660 from wcn3620
Chen Li (1):
exfat: avoid incorrectly releasing for root inode
Giacomo Guiduzzi (1):
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
Giovanni Cabiddu (1):
crypto: qat - disable registration of algorithms
James Bottomley (1):
tpm: use try_get_ops() in tpm-space.c
Jason Zheng (1):
ALSA: hda/realtek: Add quirk for ASUS GA402
Jonathan Teh (1):
ALSA: cmipci: Restore aux vol on suspend/resume
Lars-Peter Clausen (1):
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
Linus Lüssing (1):
mac80211: fix potential double free on mesh join
Mark Cilissen (1):
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
Maximilian Luz (1):
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
Michal Koutný (1):
cgroup-v1: Correct privileges check in release_agent writes
Oliver Graute (1):
staging: fbtft: fb_st7789v: reset display before initialization
Paul E. McKenney (1):
rcu: Don't deboost before reporting expedited quiescent state
Reza Jahanbakhshi (1):
ALSA: usb-audio: add mapping for new Corsair Virtuoso SE
Stephane Graber (1):
drivers: net: xgene: Fix regression in CRC stripping
Tadeusz Struk (2):
net: ipv6: fix skb_over_panic in __ip6_append_data
tpm: Fix error handling in async work
Takashi Iwai (7):
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
ALSA: oss: Fix PCM OSS buffer allocation overflow
ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
ALSA: pcm: Fix races among concurrent read/write and buffer changes
ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free
calls
ALSA: pcm: Fix races among concurrent prealloc proc writes
ALSA: pcm: Add stream lock during PCM reset ioctl operations
Tim Crawford (2):
ALSA: hda/realtek: Add quirk for Clevo NP70PNJ
ALSA: hda/realtek: Add quirk for Clevo NP50PNJ
Werner Sembach (1):
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
huangwenhui (1):
ALSA: hda/realtek - Fix headset mic problem for a HP machine with
alc671
arch/nds32/include/asm/uaccess.h | 22 ++++-
arch/x86/kernel/acpi/boot.c | 24 +++++
drivers/acpi/battery.c | 12 +++
drivers/acpi/video_detect.c | 75 ++++++++++++++
drivers/char/tpm/tpm-dev-common.c | 8 +-
drivers/char/tpm/tpm2-space.c | 8 +-
drivers/crypto/qat/qat_common/qat_crypto.c | 8 ++
.../net/ethernet/apm/xgene/xgene_enet_main.c | 12 ++-
drivers/net/wireless/ath/regd.c | 10 +-
drivers/net/wireless/ath/wcn36xx/main.c | 3 +
drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 +
drivers/staging/fbtft/fb_st7789v.c | 2 +
fs/exfat/super.c | 2 +-
include/sound/pcm.h | 1 +
kernel/cgroup/cgroup-v1.c | 6 +-
kernel/rcu/tree_plugin.h | 9 +-
net/ipv6/ip6_output.c | 4 +-
net/mac80211/cfg.c | 3 -
sound/core/oss/pcm_oss.c | 12 ++-
sound/core/oss/pcm_plugin.c | 5 +-
sound/core/pcm.c | 2 +
sound/core/pcm_lib.c | 4 +
sound/core/pcm_memory.c | 11 ++-
sound/core/pcm_native.c | 97 ++++++++++++-------
sound/pci/ac97/ac97_codec.c | 4 +-
sound/pci/cmipci.c | 3 +-
sound/pci/hda/patch_realtek.c | 4 +
sound/soc/sti/uniperif_player.c | 6 +-
sound/soc/sti/uniperif_reader.c | 2 +-
sound/usb/mixer_maps.c | 10 ++
sound/usb/mixer_quirks.c | 7 +-
31 files changed, 289 insertions(+), 88 deletions(-)
--
2.20.1
1
31

[PATCH openEuler-1.0-LTS] io_uring: io_close: Set owner as current->files if req->work.files uninitialized
by Yongqiang Liu 28 Jun '22
by Yongqiang Liu 28 Jun '22
28 Jun '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 186543, https://gitee.com/openeuler/kernel/issues/I5BGFA
CVE: NA
--------------------------------
Following process will trigger an use-after-free problem:
1. open /proc/sysvipc/msg and lock it by file lock
fcntl_setlk
do_lock_file_wait
vfs_lock_file
posix_lock_file
locks_insert_lock_ctx
locks_insert_global_locks // Added to lock list
2. Close /proc/sysvipc/msg by io_uring
filp_close(close->put_file, req->work.files) // req->work.files equals
NULL,io_grab_files() initialize it, non-async operations
won't invokes the function.
locks_remove_posix(filp, NULL)
lock.fl_owner = NULL
vfs_lock_file
posix_lock_file
posix_same_owner // Return false according to fl_owner.
locks_delete_lock_ctx(fl, &dispose) and locks_dispose_list
won't be executed, flock is not removed from lock list
fput(filp) // release filp
3. Read /proc/locks
seq_read
locks_start // Get flock from lock list
locks_show
lock_get_status
file_inode(f->file) // Access released file, UAF occurs!
Fix it by passing current->files when req->work.files is uninitialized,
because io-sq thread shares same files with uring_fd task, so it still
works in SQPOLL mode.
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io_uring.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index c104425b2557..7ae8ba98e73b 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -3903,7 +3903,7 @@ static int io_close(struct io_kiocb *req, bool force_nonblock,
}
/* No ->flush() or already async, safely close from here */
- ret = filp_close(close->put_file, req->work.files);
+ ret = filp_close(close->put_file, req->work.files ? : current->files);
if (ret < 0)
req_set_fail_links(req);
fput(close->put_file);
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS 1/5] lockdown: also lock down previous kgdb use
by Zheng Zengkai 27 Jun '22
by Zheng Zengkai 27 Jun '22
27 Jun '22
From: Daniel Thompson <daniel.thompson(a)linaro.org>
from stable-v5.10.119
commit a8f4d63142f947cd22fa615b8b3b8921cdaf4991
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5YP
CVE: CVE-2022-21499
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
commit eadb2f47a3ced5c64b23b90fd2a3463f63726066 upstream.
KGDB and KDB allow read and write access to kernel memory, and thus
should be restricted during lockdown. An attacker with access to a
serial port (for example, via a hypervisor console, which some cloud
vendors provide over the network) could trigger the debugger so it is
important that the debugger respect the lockdown mode when/if it is
triggered.
Fix this by integrating lockdown into kdb's existing permissions
mechanism. Unfortunately kgdb does not have any permissions mechanism
(although it certainly could be added later) so, for now, kgdb is simply
and brutally disabled by immediately exiting the gdb stub without taking
any action.
For lockdowns established early in the boot (e.g. the normal case) then
this should be fine but on systems where kgdb has set breakpoints before
the lockdown is enacted than "bad things" will happen.
CVE: CVE-2022-21499
Co-developed-by: Stephen Brennan <stephen.s.brennan(a)oracle.com>
Signed-off-by: Stephen Brennan <stephen.s.brennan(a)oracle.com>
Reviewed-by: Douglas Anderson <dianders(a)chromium.org>
Signed-off-by: Daniel Thompson <daniel.thompson(a)linaro.org>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zheng Yejian <zhengyejian1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/security.h | 2 ++
kernel/debug/debug_core.c | 24 ++++++++++++++
kernel/debug/kdb/kdb_main.c | 62 +++++++++++++++++++++++++++++++++++--
security/security.c | 2 ++
4 files changed, 87 insertions(+), 3 deletions(-)
diff --git a/include/linux/security.h b/include/linux/security.h
index 35355429648e..330029ef7e89 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -121,10 +121,12 @@ enum lockdown_reason {
LOCKDOWN_DEBUGFS,
LOCKDOWN_XMON_WR,
LOCKDOWN_BPF_WRITE_USER,
+ LOCKDOWN_DBG_WRITE_KERNEL,
LOCKDOWN_INTEGRITY_MAX,
LOCKDOWN_KCORE,
LOCKDOWN_KPROBES,
LOCKDOWN_BPF_READ,
+ LOCKDOWN_DBG_READ_KERNEL,
LOCKDOWN_PERF,
LOCKDOWN_TRACEFS,
LOCKDOWN_XMON_RW,
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
index be5b6b97adbf..363f781b56ca 100644
--- a/kernel/debug/debug_core.c
+++ b/kernel/debug/debug_core.c
@@ -56,6 +56,7 @@
#include <linux/vmacache.h>
#include <linux/rcupdate.h>
#include <linux/irq.h>
+#include <linux/security.h>
#include <asm/cacheflush.h>
#include <asm/byteorder.h>
@@ -762,6 +763,29 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs,
continue;
kgdb_connected = 0;
} else {
+ /*
+ * This is a brutal way to interfere with the debugger
+ * and prevent gdb being used to poke at kernel memory.
+ * This could cause trouble if lockdown is applied when
+ * there is already an active gdb session. For now the
+ * answer is simply "don't do that". Typically lockdown
+ * *will* be applied before the debug core gets started
+ * so only developers using kgdb for fairly advanced
+ * early kernel debug can be biten by this. Hopefully
+ * they are sophisticated enough to take care of
+ * themselves, especially with help from the lockdown
+ * message printed on the console!
+ */
+ if (security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL)) {
+ if (IS_ENABLED(CONFIG_KGDB_KDB)) {
+ /* Switch back to kdb if possible... */
+ dbg_kdb_mode = 1;
+ continue;
+ } else {
+ /* ... otherwise just bail */
+ break;
+ }
+ }
error = gdb_serial_stub(ks);
}
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 930ac1b25ec7..4e09fab52faf 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -45,6 +45,7 @@
#include <linux/proc_fs.h>
#include <linux/uaccess.h>
#include <linux/slab.h>
+#include <linux/security.h>
#include "kdb_private.h"
#undef MODULE_PARAM_PREFIX
@@ -197,10 +198,62 @@ struct task_struct *kdb_curr_task(int cpu)
}
/*
- * Check whether the flags of the current command and the permissions
- * of the kdb console has allow a command to be run.
+ * Update the permissions flags (kdb_cmd_enabled) to match the
+ * current lockdown state.
+ *
+ * Within this function the calls to security_locked_down() are "lazy". We
+ * avoid calling them if the current value of kdb_cmd_enabled already excludes
+ * flags that might be subject to lockdown. Additionally we deliberately check
+ * the lockdown flags independently (even though read lockdown implies write
+ * lockdown) since that results in both simpler code and clearer messages to
+ * the user on first-time debugger entry.
+ *
+ * The permission masks during a read+write lockdown permits the following
+ * flags: INSPECT, SIGNAL, REBOOT (and ALWAYS_SAFE).
+ *
+ * The INSPECT commands are not blocked during lockdown because they are
+ * not arbitrary memory reads. INSPECT covers the backtrace family (sometimes
+ * forcing them to have no arguments) and lsmod. These commands do expose
+ * some kernel state but do not allow the developer seated at the console to
+ * choose what state is reported. SIGNAL and REBOOT should not be controversial,
+ * given these are allowed for root during lockdown already.
+ */
+static void kdb_check_for_lockdown(void)
+{
+ const int write_flags = KDB_ENABLE_MEM_WRITE |
+ KDB_ENABLE_REG_WRITE |
+ KDB_ENABLE_FLOW_CTRL;
+ const int read_flags = KDB_ENABLE_MEM_READ |
+ KDB_ENABLE_REG_READ;
+
+ bool need_to_lockdown_write = false;
+ bool need_to_lockdown_read = false;
+
+ if (kdb_cmd_enabled & (KDB_ENABLE_ALL | write_flags))
+ need_to_lockdown_write =
+ security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL);
+
+ if (kdb_cmd_enabled & (KDB_ENABLE_ALL | read_flags))
+ need_to_lockdown_read =
+ security_locked_down(LOCKDOWN_DBG_READ_KERNEL);
+
+ /* De-compose KDB_ENABLE_ALL if required */
+ if (need_to_lockdown_write || need_to_lockdown_read)
+ if (kdb_cmd_enabled & KDB_ENABLE_ALL)
+ kdb_cmd_enabled = KDB_ENABLE_MASK & ~KDB_ENABLE_ALL;
+
+ if (need_to_lockdown_write)
+ kdb_cmd_enabled &= ~write_flags;
+
+ if (need_to_lockdown_read)
+ kdb_cmd_enabled &= ~read_flags;
+}
+
+/*
+ * Check whether the flags of the current command, the permissions of the kdb
+ * console and the lockdown state allow a command to be run.
*/
-static inline bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
+static bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
bool no_args)
{
/* permissions comes from userspace so needs massaging slightly */
@@ -1194,6 +1247,9 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
kdb_curr_task(raw_smp_processor_id());
KDB_DEBUG_STATE("kdb_local 1", reason);
+
+ kdb_check_for_lockdown();
+
kdb_go_count = 0;
if (reason == KDB_REASON_DEBUG) {
/* special case below */
diff --git a/security/security.c b/security/security.c
index 4fb58543eeb9..2fc40217d49d 100644
--- a/security/security.c
+++ b/security/security.c
@@ -59,10 +59,12 @@ const char *const lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1] = {
[LOCKDOWN_DEBUGFS] = "debugfs access",
[LOCKDOWN_XMON_WR] = "xmon write access",
[LOCKDOWN_BPF_WRITE_USER] = "use of bpf to write user RAM",
+ [LOCKDOWN_DBG_WRITE_KERNEL] = "use of kgdb/kdb to write kernel RAM",
[LOCKDOWN_INTEGRITY_MAX] = "integrity",
[LOCKDOWN_KCORE] = "/proc/kcore access",
[LOCKDOWN_KPROBES] = "use of kprobes",
[LOCKDOWN_BPF_READ] = "use of bpf to read kernel RAM",
+ [LOCKDOWN_DBG_READ_KERNEL] = "use of kgdb/kdb to read kernel RAM",
[LOCKDOWN_PERF] = "unsafe use of perf",
[LOCKDOWN_TRACEFS] = "use of tracefs",
[LOCKDOWN_XMON_RW] = "xmon read and write access",
--
2.20.1
1
4
Backport 5.10.109 LTS patches from upstream
nds32: fix access_ok() checks in get/put_user
wcn36xx: Differentiate wcn3660 from wcn3620
tpm: use try_get_ops() in tpm-space.c
mac80211: fix potential double free on mesh join
rcu: Don't deboost before reporting expedited quiescent state
Revert "ath: add support for special 0x0 regulatory domain"
crypto: qat - disable registration of algorithms
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
drivers: net: xgene: Fix regression in CRC stripping
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
ALSA: cmipci: Restore aux vol on suspend/resume
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
ALSA: pcm: Add stream lock during PCM reset ioctl operations
ALSA: pcm: Fix races among concurrent prealloc proc writes
ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls
ALSA: pcm: Fix races among concurrent read/write and buffer changes
ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
ALSA: hda/realtek: Add quirk for ASUS GA402
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671
ALSA: hda/realtek: Add quirk for Clevo NP50PNJ
ALSA: hda/realtek: Add quirk for Clevo NP70PNJ
ALSA: usb-audio: add mapping for new Corsair Virtuoso SE
ALSA: oss: Fix PCM OSS buffer allocation overflow
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
staging: fbtft: fb_st7789v: reset display before initialization
tpm: Fix error handling in async work
cgroup-v1: Correct privileges check in release_agent writes
exfat: avoid incorrectly releasing for root inode
net: ipv6: fix skb_over_panic in __ip6_append_data
Already merged:
llc: only change llc->dev when bind() succeeds
netfilter: nf_tables: initialize registers in nft_do_chain()
llc: fix netdevice reference leaks in llc_ui_bind()
cgroup: Use open-time cgroup namespace for process migration perm checks
cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv
nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION
Total patches: 37 - 6 = 31
Arnd Bergmann (1):
nds32: fix access_ok() checks in get/put_user
Brian Norris (1):
Revert "ath: add support for special 0x0 regulatory domain"
Bryan O'Donoghue (1):
wcn36xx: Differentiate wcn3660 from wcn3620
Chen Li (1):
exfat: avoid incorrectly releasing for root inode
Giacomo Guiduzzi (1):
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
Giovanni Cabiddu (1):
crypto: qat - disable registration of algorithms
James Bottomley (1):
tpm: use try_get_ops() in tpm-space.c
Jason Zheng (1):
ALSA: hda/realtek: Add quirk for ASUS GA402
Jonathan Teh (1):
ALSA: cmipci: Restore aux vol on suspend/resume
Lars-Peter Clausen (1):
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
Linus Lüssing (1):
mac80211: fix potential double free on mesh join
Mark Cilissen (1):
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
Maximilian Luz (1):
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
Michal Koutný (1):
cgroup-v1: Correct privileges check in release_agent writes
Oliver Graute (1):
staging: fbtft: fb_st7789v: reset display before initialization
Paul E. McKenney (1):
rcu: Don't deboost before reporting expedited quiescent state
Reza Jahanbakhshi (1):
ALSA: usb-audio: add mapping for new Corsair Virtuoso SE
Stephane Graber (1):
drivers: net: xgene: Fix regression in CRC stripping
Tadeusz Struk (2):
net: ipv6: fix skb_over_panic in __ip6_append_data
tpm: Fix error handling in async work
Takashi Iwai (7):
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
ALSA: oss: Fix PCM OSS buffer allocation overflow
ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
ALSA: pcm: Fix races among concurrent read/write and buffer changes
ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free
calls
ALSA: pcm: Fix races among concurrent prealloc proc writes
ALSA: pcm: Add stream lock during PCM reset ioctl operations
Tim Crawford (2):
ALSA: hda/realtek: Add quirk for Clevo NP70PNJ
ALSA: hda/realtek: Add quirk for Clevo NP50PNJ
Werner Sembach (1):
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
huangwenhui (1):
ALSA: hda/realtek - Fix headset mic problem for a HP machine with
alc671
arch/nds32/include/asm/uaccess.h | 22 ++++-
arch/x86/kernel/acpi/boot.c | 24 +++++
drivers/acpi/battery.c | 12 +++
drivers/acpi/video_detect.c | 75 ++++++++++++++
drivers/char/tpm/tpm-dev-common.c | 8 +-
drivers/char/tpm/tpm2-space.c | 8 +-
drivers/crypto/qat/qat_common/qat_crypto.c | 8 ++
.../net/ethernet/apm/xgene/xgene_enet_main.c | 12 ++-
drivers/net/wireless/ath/regd.c | 10 +-
drivers/net/wireless/ath/wcn36xx/main.c | 3 +
drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 +
drivers/staging/fbtft/fb_st7789v.c | 2 +
fs/exfat/super.c | 2 +-
include/sound/pcm.h | 1 +
kernel/cgroup/cgroup-v1.c | 6 +-
kernel/rcu/tree_plugin.h | 9 +-
net/ipv6/ip6_output.c | 4 +-
net/mac80211/cfg.c | 3 -
sound/core/oss/pcm_oss.c | 12 ++-
sound/core/oss/pcm_plugin.c | 5 +-
sound/core/pcm.c | 2 +
sound/core/pcm_lib.c | 4 +
sound/core/pcm_memory.c | 11 ++-
sound/core/pcm_native.c | 97 ++++++++++++-------
sound/pci/ac97/ac97_codec.c | 4 +-
sound/pci/cmipci.c | 3 +-
sound/pci/hda/patch_realtek.c | 4 +
sound/soc/sti/uniperif_player.c | 6 +-
sound/soc/sti/uniperif_reader.c | 2 +-
sound/usb/mixer_maps.c | 10 ++
sound/usb/mixer_quirks.c | 7 +-
31 files changed, 289 insertions(+), 88 deletions(-)
--
2.20.1
1
31

[PATCH openEuler-1.0-LTS] mm/memcontrol: fix wrong vmstats for dying memcg
by Yongqiang Liu 27 Jun '22
by Yongqiang Liu 27 Jun '22
27 Jun '22
From: Lu Jialin <lujialin4(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5E8LA
CVE: NA
--------------------------------
At present, only when the absolute value of stat_cpu->count exceeds
MEMCG_CHARGE_BATCH will it be updated to stat, so there will always
be a certain lag difference between stat and the correct value.
In addition, since the partially deleted memcg is still referenced, it
will not be freed immediately after it is offline. Although the
remaining memcg has released the page, it and the parent's stat will
still be not 0 or too large due to the update lag, which leads to the
abnormality of the total_<count> parameter in the memory.stat file.
This patch mainly solves the problem of synchronization between
memcg's stat and the correct value during the destruction process
from two aspects:
1) Perform a flush synchronization operation when memcg is offline
2) For memcg in the process of being destroyed, bypass the threshold
judgment when updating vmstats
Signed-off-by: Lu Jialin <lujialin4(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/memcontrol.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 2983baf910f4..345a9d159ad8 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -697,7 +697,8 @@ void __mod_memcg_state(struct mem_cgroup *memcg, int idx, int val)
return;
x = val + __this_cpu_read(memcg->stat_cpu->count[idx]);
- if (unlikely(abs(x) > MEMCG_CHARGE_BATCH)) {
+ if (unlikely(abs(x) > MEMCG_CHARGE_BATCH ||
+ memcg->css.flags & CSS_DYING)) {
struct mem_cgroup *mi;
struct mem_cgroup_extension *memcg_ext;
@@ -3244,8 +3245,10 @@ static void memcg_flush_percpu_vmstats(struct mem_cgroup *memcg)
stat[i] = 0;
for_each_online_cpu(cpu)
- for (i = 0; i < MEMCG_NR_STAT; i++)
+ for (i = 0; i < MEMCG_NR_STAT; i++) {
stat[i] += per_cpu(memcg->stat_cpu->count[i], cpu);
+ per_cpu(memcg->stat_cpu->count[i], cpu) = 0;
+ }
for (mi = memcg; mi; mi = parent_mem_cgroup(mi))
for (i = 0; i < MEMCG_NR_STAT; i++)
@@ -3259,9 +3262,11 @@ static void memcg_flush_percpu_vmstats(struct mem_cgroup *memcg)
stat[i] = 0;
for_each_online_cpu(cpu)
- for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++)
+ for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) {
stat[i] += per_cpu(
pn->lruvec_stat_cpu->count[i], cpu);
+ per_cpu(pn->lruvec_stat_cpu->count[i], cpu) = 0;
+ }
for (pi = pn; pi; pi = parent_nodeinfo(pi, node))
for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++)
@@ -3279,9 +3284,11 @@ static void memcg_flush_percpu_vmevents(struct mem_cgroup *memcg)
events[i] = 0;
for_each_online_cpu(cpu)
- for (i = 0; i < NR_VM_EVENT_ITEMS; i++)
+ for (i = 0; i < NR_VM_EVENT_ITEMS; i++) {
events[i] += per_cpu(memcg->stat_cpu->events[i],
cpu);
+ per_cpu(memcg->stat_cpu->events[i], cpu) = 0;
+ }
for (mi = memcg; mi; mi = parent_mem_cgroup(mi))
for (i = 0; i < NR_VM_EVENT_ITEMS; i++)
@@ -5106,6 +5113,9 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
memcg_offline_kmem(memcg);
wb_memcg_offline(memcg);
+ memcg_flush_percpu_vmstats(memcg);
+ memcg_flush_percpu_vmevents(memcg);
+
mem_cgroup_id_put(memcg);
}
--
2.25.1
1
0
大家好,
本次Intel Arch例会定于本周二6/28 10:00-11:00AM进行, 欢迎大家提出更多需求或议题和参与讨论。
本次初步议题:
Agenda:
*Status update
*SPR feature PRs merge into intel-kernel & OLK-5.10 kernel *Compiler support for new instructions *Support 22.09 release for SPR fundamental features
-----Original Appointment-----
From: openEuler conference <public(a)openeuler.org>
Sent: Monday, June 20, 2022 3:10 PM
To: openEuler conference; jun.j.tian@intel.com,kai.liu@suse.com
Subject: sig-Intel-Arch
When: Tuesday, June 28, 2022 10:00 AM-11:00 AM (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi.
Where:
您好!
sig-Intel-Arch SIG 邀请您参加 2022-06-28 10:00 召开的Zoom会议
会议主题:sig-Intel-Arch
会议链接:https://us06web.zoom.us/j/81976528831?pwd=cVIxUkRhUXFGcldFV0ZtNkpvUFpxZz09
会议纪要:https://etherpad.openeuler.org/p/sig-Intel-Arch-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler sig-Intel-Arch SIG invites you to attend the Zoom conference will be held at 2022-06-28 10:00,
The subject of the conference is sig-Intel-Arch,
You can join the meeting at https://us06web.zoom.us/j/81976528831?pwd=cVIxUkRhUXFGcldFV0ZtNkpvUFpxZz09.
Add topics at https://etherpad.openeuler.org/p/sig-Intel-Arch-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0