From: Chia-Yu Chang <chia-yu.chang(a)nokia-bell-labs.com>
Hello,
Plesae find the v5 AccECN case handling patch series, which covers
several excpetional case handling of Accurate ECN spec (RFC9768),
adds new identifiers to be used by CC modules, adds ecn_delta into
rate_sample, and keeps the ACE counter for computation, etc.
This patch series is part of the full AccECN patch series, which is available at
https://github.com/L4STeam/linux-net-next/commits/upstream_l4steam/
Best regards,
Chia-Yu
---
v5:
- Move previous #11 in v4 in latter patch after discussion with RFC author.
- Add #3 to update the comments for SKB_GSO_TCP_ECN and SKB_GSO_TCP_ACCECN. (Parav Pandit <parav(a)nvidia.com>)
- Add gro self-test for TCP CWR flag in #4. (Eric Dumazet <edumazet(a)google.com>)
- Add fixes: tag into #7 (Paolo Abeni <pabeni(a)redhat.com>)
- Update commit message of #8 and if condition check (Paolo Abeni <pabeni(a)redhat.com>)
- Add empty line between variable declarations and code in #13 (Paolo Abeni <pabeni(a)redhat.com>)
v4:
- Add previous #13 in v2 back after dicussion with the RFC author.
- Add TCP_ACCECN_OPTION_PERSIST to tcp_ecn_option sysctl to ignore AccECN fallback policy on sending AccECN option.
v3:
- Add additional min() check if pkts_acked_ewma is not initialized in #1. (Paolo Abeni <pabeni(a)redhat.com>)
- Change TCP_CONG_WANTS_ECT_1 into individual flag add helper function INET_ECN_xmit_wants_ect_1() in #3. (Paolo Abeni <pabeni(a)redhat.com>)
- Add empty line between variable declarations and code in #4. (Paolo Abeni <pabeni(a)redhat.com>)
- Update commit message to fix old AccECN commits in #5. (Paolo Abeni <pabeni(a)redhat.com>)
- Remove unnecessary brackets in #10. (Paolo Abeni <pabeni(a)redhat.com>)
- Move patch #3 in v2 to a later Prague patch serise and remove patch #13 in v2. (Paolo Abeni <pabeni(a)redhat.com>)
---
Chia-Yu Chang (12):
net: update commnets for SKB_GSO_TCP_ECN and SKB_GSO_TCP_ACCECN
selftests/net: gro: add self-test for TCP CWR flag
tcp: L4S ECT(1) identifier and NEEDS_ACCECN for CC modules
tcp: disable RFC3168 fallback identifier for CC modules
tcp: accecn: handle unexpected AccECN negotiation feedback
tcp: accecn: retransmit downgraded SYN in AccECN negotiation
tcp: move increment of num_retrans
tcp: accecn: retransmit SYN/ACK without AccECN option or non-AccECN
SYN/ACK
tcp: accecn: unset ECT if receive or send ACE=0 in AccECN negotiaion
tcp: accecn: fallback outgoing half link to non-AccECN
tcp: accecn: detect loss ACK w/ AccECN option and add
TCP_ACCECN_OPTION_PERSIST
tcp: accecn: enable AccECN
Ilpo Järvinen (2):
tcp: try to avoid safer when ACKs are thinned
gro: flushing when CWR is set negatively affects AccECN
Documentation/networking/ip-sysctl.rst | 4 +-
.../networking/net_cachelines/tcp_sock.rst | 1 +
include/linux/skbuff.h | 13 ++-
include/linux/tcp.h | 4 +-
include/net/inet_ecn.h | 20 +++-
include/net/tcp.h | 32 ++++++-
include/net/tcp_ecn.h | 92 ++++++++++++++-----
net/ipv4/sysctl_net_ipv4.c | 4 +-
net/ipv4/tcp.c | 2 +
net/ipv4/tcp_cong.c | 10 +-
net/ipv4/tcp_input.c | 37 +++++++-
net/ipv4/tcp_minisocks.c | 40 +++++---
net/ipv4/tcp_offload.c | 3 +-
net/ipv4/tcp_output.c | 42 ++++++---
tools/testing/selftests/net/gro.c | 80 +++++++++++-----
15 files changed, 294 insertions(+), 90 deletions(-)
--
2.34.1
This small patchset is about avoid verifier bug warning when tnum_overlap()
is called with zero mask intersection.
v2:
- fix runtime error
v1:
https://lore.kernel.org/all/20251026163806.3300636-1-kafai.wan@linux.dev/
---
KaFai Wan (2):
bpf: Fix tnum_overlap to check for zero mask intersection
selftests/bpf: Range analysis test case for JEQ
kernel/bpf/tnum.c | 2 ++
.../selftests/bpf/progs/verifier_bounds.c | 23 +++++++++++++++++++
2 files changed, 25 insertions(+)
--
2.43.0
Socket APIs like recvfrom(), accept(), and getsockname() expect socklen_t*
arg, but tests were using int variables. This causes -Wpointer-sign
warnings on platforms where socklen_t is unsigned.
Change the variable type from int to socklen_t to resolve the warning and
ensure type safety across platforms.
warning fixed:
sctp_collision.c:62:70: warning: passing 'int *' to parameter of
type 'socklen_t *' (aka 'unsigned int *') converts between pointers to
integer types with different sign [-Wpointer-sign]
62 | ret = recvfrom(sd, buf, sizeof(buf),
0, (struct sockaddr *)&daddr, &len);
| ^~~~
/usr/include/sys/socket.h:165:27: note: passing argument to
parameter '__addr_len' here
165 | socklen_t *__restrict __addr_len);
| ^
Signed-off-by: Ankit Khushwaha <ankitkhushwaha.linux(a)gmail.com>
---
tools/testing/selftests/net/netfilter/sctp_collision.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/netfilter/sctp_collision.c b/tools/testing/selftests/net/netfilter/sctp_collision.c
index 21bb1cfd8a85..91df996367e9 100644
--- a/tools/testing/selftests/net/netfilter/sctp_collision.c
+++ b/tools/testing/selftests/net/netfilter/sctp_collision.c
@@ -9,7 +9,8 @@
int main(int argc, char *argv[])
{
struct sockaddr_in saddr = {}, daddr = {};
- int sd, ret, len = sizeof(daddr);
+ int sd, ret;
+ socklen_t len = sizeof(daddr);
struct timeval tv = {25, 0};
char buf[] = "hello";
--
2.51.0
This is a follow up patch for commit 495d2d8133fd("selftests/bpf: Attempt
to build BPF programs with -Wsign-compare") from Alexei Starovoitov[1]
to be able to enable -Wsign-compare C compilation flag for clang since
-Wall doesn't add it and BPF programs are built with clang.This has the
benefit to catch problematic comparisons in future tests as quoted from
the commit message:"
int i = -1;
unsigned int j = 1;
if (i < j) // this is false.
long i = -1;
unsigned int j = 1;
if (i < j) // this is true.
C standard for reference:
- If either operand is unsigned long the other shall be converted to
unsigned long.
- Otherwise, if one operand is a long int and the other unsigned int,
then if a long int can represent all the values of an unsigned int,
the unsigned int shall be converted to a long int;
otherwise both operands shall be converted to unsigned long int.
- Otherwise, if either operand is long, the other shall be
converted to long.
- Otherwise, if either operand is unsigned, the other shall be
converted to unsigned.
Unfortunately clang's -Wsign-compare is very noisy.
It complains about (s32)a == (u32)b which is safe and doen't
have surprising behavior."
This specific patch supresses the following warnings when
-Wsign-compare is enabled:
1 warning generated.
progs/bpf_iter_bpf_percpu_array_map.c:35:16: warning: comparison of
integers of different signs: 'int' and 'const volatile __u32'
(aka 'const volatile unsigned int') [-Wsign-compare]
35 | for (i = 0; i < num_cpus; i++) {
| ~ ^ ~~~~~~~~
1 warning generated.
progs/bpf_qdisc_fifo.c:93:2: warning: comparison of integers of
different signs: 'int' and '__u32'
(aka 'unsigned int') [-Wsign-compare]
93 | bpf_for(i, 0, sch->q.qlen) {
| ^ ~ ~~~~~~~~~~~
Should be noted that many more similar changes are still needed in order
to be able to enable the -Wsign-compare flag since -Werror is enabled and
would cause compilation of bpf selftests to fail.
[1].
Link:https://github.com/torvalds/linux/commit/495d2d8133fd1407519170a5238f4…
Signed-off-by: Mehdi Ben Hadj Khelifa <mehdi.benhadjkhelifa(a)gmail.com>
---
Changelog:
Changes from v3:
-Downsized the patch as suggested by vivek yadav[2].
-Changed the commit message as suggested by Daniel Borkmann[3].
Link:https://lore.kernel.org/all/20250925103559.14876-1-mehdi.benhadjkhelif…
Changes from v2:
-Split up the patch into a patch series as suggested by vivek
-Include only changes to variable types with no casting by my mentor
david
-Removed the -Wsign-compare in Makefile to avoid compilation errors
until adding casting for rest of comparisons.
Link:https://lore.kernel.org/bpf/20250924195731.6374-1-mehdi.benhadjkhelifa…
Changes from v1:
- Fix CI failed builds where it failed due to do missing .c and
.h files in my patch for working in mainline.
Link:https://lore.kernel.org/bpf/20250924162408.815137-1-mehdi.benhadjkheli…
[2]:https://lore.kernel.org/all/CABPSWR7_w3mxr74wCDEF=MYYuG2F_vMJeD-dqotc8MD…
[3]:https://lore.kernel.org/all/5ad26663-a3cc-4bf4-9d6f-8213ac8e8ce6@iogearb…
.../testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c | 2 +-
tools/testing/selftests/bpf/progs/bpf_qdisc_fifo.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c b/tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c
index 9fdea8cd4c6f..0baf00463f35 100644
--- a/tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c
+++ b/tools/testing/selftests/bpf/progs/bpf_iter_bpf_percpu_array_map.c
@@ -24,7 +24,7 @@ int dump_bpf_percpu_array_map(struct bpf_iter__bpf_map_elem *ctx)
__u32 *key = ctx->key;
void *pptr = ctx->value;
__u32 step;
- int i;
+ __u32 i;
if (key == (void *)0 || pptr == (void *)0)
return 0;
diff --git a/tools/testing/selftests/bpf/progs/bpf_qdisc_fifo.c b/tools/testing/selftests/bpf/progs/bpf_qdisc_fifo.c
index 1de2be3e370b..7a639dcb23a9 100644
--- a/tools/testing/selftests/bpf/progs/bpf_qdisc_fifo.c
+++ b/tools/testing/selftests/bpf/progs/bpf_qdisc_fifo.c
@@ -88,7 +88,7 @@ void BPF_PROG(bpf_fifo_reset, struct Qdisc *sch)
{
struct bpf_list_node *node;
struct skb_node *skbn;
- int i;
+ __u32 i;
bpf_for(i, 0, sch->q.qlen) {
struct sk_buff *skb = NULL;
--
2.51.1.dirty
This small patchset is about avoid verifier bug warning when conditional
jumps on same register when the register holds a scalar with range.
v2:
- Enhance is_branch_taken() and is_scalar_branch_taken() to handle
branch direction computation for same register. (Eduard and Alexei)
- Update the selftest.
v1:
https://lore.kernel.org/bpf/20251022164457.1203756-1-kafai.wan@linux.dev/
---
KaFai Wan (2):
bpf: Skip bounds adjustment for conditional jumps on same register
selftests/bpf: Add test for BPF_JGT on same register
kernel/bpf/verifier.c | 32 +++++++++++++++++++
.../selftests/bpf/progs/verifier_bounds.c | 18 +++++++++++
2 files changed, 50 insertions(+)
--
2.43.0
From: Wilfred Mallawa <wilfred.mallawa(a)wdc.com>
During a handshake, an endpoint may specify a maximum record size limit.
Currently, the kernel defaults to TLS_MAX_PAYLOAD_SIZE (16KB) for the
maximum record size. Meaning that, the outgoing records from the kernel
can exceed a lower size negotiated during the handshake. In such a case,
the TLS endpoint must send a fatal "record_overflow" alert [1], and
thus the record is discarded.
Upcoming Western Digital NVMe-TCP hardware controllers implement TLS
support. For these devices, supporting TLS record size negotiation is
necessary because the maximum TLS record size supported by the controller
is less than the default 16KB currently used by the kernel.
Currently, there is no way to inform the kernel of such a limit. This patch
adds support to a new setsockopt() option `TLS_TX_MAX_PAYLOAD_LEN` that
allows for setting the maximum plaintext fragment size. Once set, outgoing
records are no larger than the size specified. This option can be used to
specify the record size limit.
[1] https://www.rfc-editor.org/rfc/rfc8449
Signed-off-by: Wilfred Mallawa <wilfred.mallawa(a)wdc.com>
---
V7 -> V8:
- Fixup HTML doc indentation
- Drop the getsockopt() change in V7 where ContentType was included in the
max payload length
---
Documentation/networking/tls.rst | 20 ++++++++++
include/net/tls.h | 3 ++
include/uapi/linux/tls.h | 2 +
net/tls/tls_device.c | 2 +-
net/tls/tls_main.c | 64 ++++++++++++++++++++++++++++++++
net/tls/tls_sw.c | 2 +-
6 files changed, 91 insertions(+), 2 deletions(-)
diff --git a/Documentation/networking/tls.rst b/Documentation/networking/tls.rst
index 36cc7afc2527..980c442d7161 100644
--- a/Documentation/networking/tls.rst
+++ b/Documentation/networking/tls.rst
@@ -280,6 +280,26 @@ If the record decrypted turns out to had been padded or is not a data
record it will be decrypted again into a kernel buffer without zero copy.
Such events are counted in the ``TlsDecryptRetry`` statistic.
+TLS_TX_MAX_PAYLOAD_LEN
+~~~~~~~~~~~~~~~~~~~~~~
+
+Specifies the maximum size of the plaintext payload for transmitted TLS records.
+
+When this option is set, the kernel enforces the specified limit on all outgoing
+TLS records. No plaintext fragment will exceed this size. This option can be used
+to implement the TLS Record Size Limit extension [1].
+
+* For TLS 1.2, the value corresponds directly to the record size limit.
+* For TLS 1.3, the value should be set to record_size_limit - 1, since
+ the record size limit includes one additional byte for the ContentType
+ field.
+
+The valid range for this option is 64 to 16384 bytes for TLS 1.2, and 63 to
+16384 bytes for TLS 1.3. The lower minimum for TLS 1.3 accounts for the
+extra byte used by the ContentType field.
+
+[1] https://datatracker.ietf.org/doc/html/rfc8449
+
Statistics
==========
diff --git a/include/net/tls.h b/include/net/tls.h
index 857340338b69..f2af113728aa 100644
--- a/include/net/tls.h
+++ b/include/net/tls.h
@@ -53,6 +53,8 @@ struct tls_rec;
/* Maximum data size carried in a TLS record */
#define TLS_MAX_PAYLOAD_SIZE ((size_t)1 << 14)
+/* Minimum record size limit as per RFC8449 */
+#define TLS_MIN_RECORD_SIZE_LIM ((size_t)1 << 6)
#define TLS_HEADER_SIZE 5
#define TLS_NONCE_OFFSET TLS_HEADER_SIZE
@@ -226,6 +228,7 @@ struct tls_context {
u8 rx_conf:3;
u8 zerocopy_sendfile:1;
u8 rx_no_pad:1;
+ u16 tx_max_payload_len;
int (*push_pending_record)(struct sock *sk, int flags);
void (*sk_write_space)(struct sock *sk);
diff --git a/include/uapi/linux/tls.h b/include/uapi/linux/tls.h
index b66a800389cc..b8b9c42f848c 100644
--- a/include/uapi/linux/tls.h
+++ b/include/uapi/linux/tls.h
@@ -41,6 +41,7 @@
#define TLS_RX 2 /* Set receive parameters */
#define TLS_TX_ZEROCOPY_RO 3 /* TX zerocopy (only sendfile now) */
#define TLS_RX_EXPECT_NO_PAD 4 /* Attempt opportunistic zero-copy */
+#define TLS_TX_MAX_PAYLOAD_LEN 5 /* Maximum plaintext size */
/* Supported versions */
#define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
@@ -194,6 +195,7 @@ enum {
TLS_INFO_RXCONF,
TLS_INFO_ZC_RO_TX,
TLS_INFO_RX_NO_PAD,
+ TLS_INFO_TX_MAX_PAYLOAD_LEN,
__TLS_INFO_MAX,
};
#define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
index caa2b5d24622..4d29b390aed9 100644
--- a/net/tls/tls_device.c
+++ b/net/tls/tls_device.c
@@ -462,7 +462,7 @@ static int tls_push_data(struct sock *sk,
/* TLS_HEADER_SIZE is not counted as part of the TLS record, and
* we need to leave room for an authentication tag.
*/
- max_open_record_len = TLS_MAX_PAYLOAD_SIZE +
+ max_open_record_len = tls_ctx->tx_max_payload_len +
prot->prepend_size;
do {
rc = tls_do_allocation(sk, ctx, pfrag, prot->prepend_size);
diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
index 39a2ab47fe72..56ce0bc8317b 100644
--- a/net/tls/tls_main.c
+++ b/net/tls/tls_main.c
@@ -541,6 +541,28 @@ static int do_tls_getsockopt_no_pad(struct sock *sk, char __user *optval,
return 0;
}
+static int do_tls_getsockopt_tx_payload_len(struct sock *sk, char __user *optval,
+ int __user *optlen)
+{
+ struct tls_context *ctx = tls_get_ctx(sk);
+ u16 payload_len = ctx->tx_max_payload_len;
+ int len;
+
+ if (get_user(len, optlen))
+ return -EFAULT;
+
+ if (len < sizeof(payload_len))
+ return -EINVAL;
+
+ if (put_user(sizeof(payload_len), optlen))
+ return -EFAULT;
+
+ if (copy_to_user(optval, &payload_len, sizeof(payload_len)))
+ return -EFAULT;
+
+ return 0;
+}
+
static int do_tls_getsockopt(struct sock *sk, int optname,
char __user *optval, int __user *optlen)
{
@@ -560,6 +582,9 @@ static int do_tls_getsockopt(struct sock *sk, int optname,
case TLS_RX_EXPECT_NO_PAD:
rc = do_tls_getsockopt_no_pad(sk, optval, optlen);
break;
+ case TLS_TX_MAX_PAYLOAD_LEN:
+ rc = do_tls_getsockopt_tx_payload_len(sk, optval, optlen);
+ break;
default:
rc = -ENOPROTOOPT;
break;
@@ -809,6 +834,32 @@ static int do_tls_setsockopt_no_pad(struct sock *sk, sockptr_t optval,
return rc;
}
+static int do_tls_setsockopt_tx_payload_len(struct sock *sk, sockptr_t optval,
+ unsigned int optlen)
+{
+ struct tls_context *ctx = tls_get_ctx(sk);
+ struct tls_sw_context_tx *sw_ctx = tls_sw_ctx_tx(ctx);
+ u16 value;
+ bool tls_13 = ctx->prot_info.version == TLS_1_3_VERSION;
+
+ if (sw_ctx && sw_ctx->open_rec)
+ return -EBUSY;
+
+ if (sockptr_is_null(optval) || optlen != sizeof(value))
+ return -EINVAL;
+
+ if (copy_from_sockptr(&value, optval, sizeof(value)))
+ return -EFAULT;
+
+ if (value < TLS_MIN_RECORD_SIZE_LIM - (tls_13 ? 1 : 0) ||
+ value > TLS_MAX_PAYLOAD_SIZE)
+ return -EINVAL;
+
+ ctx->tx_max_payload_len = value;
+
+ return 0;
+}
+
static int do_tls_setsockopt(struct sock *sk, int optname, sockptr_t optval,
unsigned int optlen)
{
@@ -830,6 +881,11 @@ static int do_tls_setsockopt(struct sock *sk, int optname, sockptr_t optval,
case TLS_RX_EXPECT_NO_PAD:
rc = do_tls_setsockopt_no_pad(sk, optval, optlen);
break;
+ case TLS_TX_MAX_PAYLOAD_LEN:
+ lock_sock(sk);
+ rc = do_tls_setsockopt_tx_payload_len(sk, optval, optlen);
+ release_sock(sk);
+ break;
default:
rc = -ENOPROTOOPT;
break;
@@ -1019,6 +1075,7 @@ static int tls_init(struct sock *sk)
ctx->tx_conf = TLS_BASE;
ctx->rx_conf = TLS_BASE;
+ ctx->tx_max_payload_len = TLS_MAX_PAYLOAD_SIZE;
update_sk_prot(sk, ctx);
out:
write_unlock_bh(&sk->sk_callback_lock);
@@ -1108,6 +1165,12 @@ static int tls_get_info(struct sock *sk, struct sk_buff *skb, bool net_admin)
goto nla_failure;
}
+ err = nla_put_u16(skb, TLS_INFO_TX_MAX_PAYLOAD_LEN,
+ ctx->tx_max_payload_len);
+
+ if (err)
+ goto nla_failure;
+
rcu_read_unlock();
nla_nest_end(skb, start);
return 0;
@@ -1129,6 +1192,7 @@ static size_t tls_get_info_size(const struct sock *sk, bool net_admin)
nla_total_size(sizeof(u16)) + /* TLS_INFO_TXCONF */
nla_total_size(0) + /* TLS_INFO_ZC_RO_TX */
nla_total_size(0) + /* TLS_INFO_RX_NO_PAD */
+ nla_total_size(sizeof(u16)) + /* TLS_INFO_TX_MAX_PAYLOAD_LEN */
0;
return size;
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index d17135369980..9937d4c810f2 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -1079,7 +1079,7 @@ static int tls_sw_sendmsg_locked(struct sock *sk, struct msghdr *msg,
orig_size = msg_pl->sg.size;
full_record = false;
try_to_copy = msg_data_left(msg);
- record_room = TLS_MAX_PAYLOAD_SIZE - msg_pl->sg.size;
+ record_room = tls_ctx->tx_max_payload_len - msg_pl->sg.size;
if (try_to_copy >= record_room) {
try_to_copy = record_room;
full_record = true;
--
2.51.0
When compiling the BPF selftests with Clang versions that do not support
the addr_space_cast builtin, the build fails with assembly errors in
"verifier_ldsx.c" [1].
The root cause is that the inline assembly using addr_space_cast is
being processed by a compiler that lacks this feature. To resolve this,
wrap the affected code sections (specifically the arena_ldsx_* test
functions) with #if defined(__BPF_FEATURE_ADDR_SPACE_CAST). This
ensures the code is only compiled when the Clang supports the necessary
feature, preventing build failures on older or incompatible compiler
versions.
This change maintains test coverage for systems with support while
allowing the tests to build successfully in all environments.
[1]:
root:tools/testing/selftests/bpf$ make
CLNG-BPF [test_progs] verifier_ldsx.bpf.o
progs/verifier_ldsx.c:322:2: error: invalid operand for instruction
322 | "r1 = %[arena] ll;"
| ^
<inline asm>:1:52: note: instantiated into assembly here
1 | r1 = arena ll;r0 = 0xdeadbeef;r0 = addr_space_cast(r0,...
| ^
Fixes: f61654912404 ("selftests: bpf: Add tests for signed loads from arena")
Signed-off-by: Jiayuan Chen <jiayuan.chen(a)linux.dev>
---
tools/testing/selftests/bpf/progs/verifier_ldsx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/bpf/progs/verifier_ldsx.c b/tools/testing/selftests/bpf/progs/verifier_ldsx.c
index c8494b682c31..cefa02e417d3 100644
--- a/tools/testing/selftests/bpf/progs/verifier_ldsx.c
+++ b/tools/testing/selftests/bpf/progs/verifier_ldsx.c
@@ -263,6 +263,7 @@ __naked void ldsx_ctx_8(void)
: __clobber_all);
}
+#if defined(__BPF_FEATURE_ADDR_SPACE_CAST)
SEC("syscall")
__description("Arena LDSX Disasm")
__success
@@ -425,6 +426,7 @@ __naked void arena_ldsx_s32(void *ctx)
: __clobber_all
);
}
+#endif
/* to retain debug info for BTF generation */
void kfunc_root(void)
--
2.43.0
This series fixes a race condition in netconsole's userdata handling
where concurrent message transmission could read partially updated
userdata fields, resulting in corrupted netconsole output.
The first patch adds a selftest that reproduces the race condition by
continuously sending messages while rapidly changing userdata values,
detecting any torn reads in the output.
The second patch fixes the issue by ensuring update_userdata() holds
the target_list_lock while updating both extradata_complete and
userdata_length, preventing readers from seeing inconsistent state.
This targets net tree as it fixes a bug introduced in commit df03f830d099
("net: netconsole: cache userdata formatted string in netconsole_target").
Signed-off-by: Gustavo Luiz Duarte <gustavold(a)gmail.com>
Changes in v2:
- Added testcase to Makefile.
- Reordered fix and testcase to avoid failure in CI.
- testcase: delay cleanup until child process are killed, plus shellcheck fixes.
- Link to v1: https://lore.kernel.org/all/20251020-netconsole-fix-race-v1-0-b775be30ee8a@…
---
Gustavo Luiz Duarte (2):
netconsole: Fix race condition in between reader and writer of userdata
selftests: netconsole: Add race condition test for userdata corruption
drivers/net/netconsole.c | 5 ++
tools/testing/selftests/drivers/net/Makefile | 1 +
.../selftests/drivers/net/netcons_race_userdata.sh | 87 ++++++++++++++++++++++
3 files changed, 93 insertions(+)
---
base-commit: d63f0391d6c7b75e1a847e1a26349fa8cad0004d
change-id: 20251020-netconsole-fix-race-f465f37b57ea
Best regards,
--
Gustavo Duarte <gustavold(a)meta.com>
This small patchset is about avoid verifier bug warning when tnum_overlap()
is called with zero mask.
---
KaFai Wan (2):
bpf: Fix tnum_overlap to check for zero mask first
selftests/bpf: Range analysis test case for JEQ
kernel/bpf/tnum.c | 2 ++
.../selftests/bpf/progs/verifier_bounds.c | 23 +++++++++++++++++++
2 files changed, 25 insertions(+)
--
2.43.0
Some network selftests defined variable-sized types variable at the middle
of struct causing -Wgnu-variable-sized-type-not-at-end warning.
warning:
timestamping.c:285:18: warning: field 'cm' with variable sized type
'struct cmsghdr' not at the end of a struct or class is a GNU
extension [-Wgnu-variable-sized-type-not-at-end]
285 | struct cmsghdr cm;
| ^
ipsec.c:835:5: warning: field 'u' with variable sized type 'union
(unnamed union at ipsec.c:831:3)' not at the end of a struct or class
is a GNU extension [-Wgnu-variable-sized-type-not-at-end]
835 | } u;
| ^
This patch move these field at the end of struct to fix these warnings.
Signed-off-by: Ankit Khushwaha <ankitkhushwaha.linux(a)gmail.com>
---
Changelog:
v2: https://lore.kernel.org/linux-kselftest/20251027050856.30270-1-ankitkhushwa…
- fixed typos in the commit msg.
---
tools/testing/selftests/net/ipsec.c | 2 +-
tools/testing/selftests/net/timestamping.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/ipsec.c b/tools/testing/selftests/net/ipsec.c
index 0ccf484b1d9d..36083c8f884f 100644
--- a/tools/testing/selftests/net/ipsec.c
+++ b/tools/testing/selftests/net/ipsec.c
@@ -828,12 +828,12 @@ static int xfrm_state_pack_algo(struct nlmsghdr *nh, size_t req_sz,
struct xfrm_desc *desc)
{
struct {
+ char buf[XFRM_ALGO_KEY_BUF_SIZE];
union {
struct xfrm_algo alg;
struct xfrm_algo_aead aead;
struct xfrm_algo_auth auth;
} u;
- char buf[XFRM_ALGO_KEY_BUF_SIZE];
} alg = {};
size_t alen, elen, clen, aelen;
unsigned short type;
diff --git a/tools/testing/selftests/net/timestamping.c b/tools/testing/selftests/net/timestamping.c
index 044bc0e9ed81..ad2be2143698 100644
--- a/tools/testing/selftests/net/timestamping.c
+++ b/tools/testing/selftests/net/timestamping.c
@@ -282,8 +282,8 @@ static void recvpacket(int sock, int recvmsg_flags,
struct iovec entry;
struct sockaddr_in from_addr;
struct {
- struct cmsghdr cm;
char control[512];
+ struct cmsghdr cm;
} control;
int res;
--
2.51.0
The following powerpc ppc6xx_defconfig build regressions noticed on the
Linux next-20251027 tag with gcc-14 and gcc-8.
* powerpc, build
- gcc-14-ppc6xx_defconfig
- gcc-8-ppc6xx_defconfig
First seen on next-20251027
Good: next-20251024
Bad: next-20251027
Regression Analysis:
- New regression? yes
- Reproducibility? yes
Build regression: next-20251027: backlight.c:59:39: error: implicit
declaration of function 'of_find_node_by_name'; did you mean
'bus_find_device_by_name'?
Build regression: next-20251027: include/linux/math.h:167:43: error:
first argument to '__builtin_choose_expr' not a constant
Build regression: next-20251027: via-pmu-backlight.c:22:20: error:
'FB_BACKLIGHT_LEVELS' undeclared here (not in a function)
Build regression: next-20251027: minmax.h:71:17: error: first argument
to '__builtin_choose_expr' not a constant
Build regression: next-20251027: compiler.h:168:17: error:
'__UNIQUE_ID_x__286' undeclared (first use in this function); did you
mean '__UNIQUE_ID_y__287'?
Reported-by: Linux Kernel Functional Testing <lkft(a)linaro.org>
## Build error
arch/powerpc/platforms/powermac/backlight.c: In function
'pmac_has_backlight_type':
arch/powerpc/platforms/powermac/backlight.c:59:39: error: implicit
declaration of function 'of_find_node_by_name'; did you mean
'bus_find_device_by_name'? [-Wimplicit-function-declaration]
59 | struct device_node* bk_node =
of_find_node_by_name(NULL, "backlight");
| ^~~~~~~~~~~~~~~~~~~~
| bus_find_device_by_name
arch/powerpc/platforms/powermac/backlight.c:59:39: error:
initialization of 'struct device_node *' from 'int' makes pointer from
integer without a cast [-Wint-conversion]
arch/powerpc/platforms/powermac/backlight.c:60:17: error: implicit
declaration of function 'of_property_match_string'
[-Wimplicit-function-declaration]
60 | int i = of_property_match_string(bk_node,
"backlight-control", type);
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/platforms/powermac/backlight.c:62:9: error: implicit
declaration of function 'of_node_put'
[-Wimplicit-function-declaration]
62 | of_node_put(bk_node);
| ^~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:22:20: error:
'FB_BACKLIGHT_LEVELS' undeclared here (not in a function)
22 | static u8 bl_curve[FB_BACKLIGHT_LEVELS];
| ^~~~~~~~~~~~~~~~~~~
In file included from <command-line>:
drivers/macintosh/via-pmu-backlight.c: In function 'pmu_backlight_curve_lookup':
include/linux/compiler.h:168:17: error: '__UNIQUE_ID_x__286'
undeclared (first use in this function); did you mean
'__UNIQUE_ID_y__287'?
168 | __PASTE(__UNIQUE_ID_, \
| ^~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:45:23: note: in expansion of macro 'max'
45 | max = max((int)bl_curve[i], max);
| ^~~
include/linux/minmax.h:71:17: error: first argument to
'__builtin_choose_expr' not a constant
71 | (typeof(__builtin_choose_expr(sizeof(ux) > 4, 1LL,
1L)))(ux) >= 0)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:577:23: note: in definition of macro
'__compiletime_assert'
577 | if (!(condition))
\
| ^~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:45:23: note: in expansion of macro 'max'
45 | max = max((int)bl_curve[i], max);
| ^~~
include/linux/minmax.h:71:17: error: first argument to
'__builtin_choose_expr' not a constant
71 | (typeof(__builtin_choose_expr(sizeof(ux) > 4, 1LL,
1L)))(ux) >= 0)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:577:23: note: in definition of macro
'__compiletime_assert'
577 | if (!(condition))
\
| ^~~~~~~~~
include/linux/minmax.h:112:25: note: in expansion of macro '__careful_cmp'
112 | #define max(x, y) __careful_cmp(max, x, y)
| ^~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:45:23: note: in expansion of macro 'max'
45 | max = max((int)bl_curve[i], max);
| ^~~
In file included from include/linux/kernel.h:27,
from arch/powerpc/include/asm/page.h:11,
from arch/powerpc/include/asm/thread_info.h:13,
from include/linux/thread_info.h:60,
from arch/powerpc/include/asm/ptrace.h:342,
from drivers/macintosh/via-pmu-backlight.c:11:
include/linux/math.h:162:17: error: first argument to
'__builtin_choose_expr' not a constant
162 | __builtin_choose_expr(
\
| ^~~~~~~~~~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c: In function
'pmu_backlight_get_level_brightness':
drivers/macintosh/via-pmu-backlight.c:63:38: error: 'FB_BACKLIGHT_MAX'
undeclared (first use in this function); did you mean 'BACKLIGHT_RAW'?
63 | pmulevel = bl_curve[level] * FB_BACKLIGHT_MAX / MAX_PMU_LEVEL;
| ^~~~~~~~~~~~~~~~
| BACKLIGHT_RAW
drivers/macintosh/via-pmu-backlight.c:58:51: warning: parameter
'level' set but not used [-Wunused-but-set-parameter]
58 | static int pmu_backlight_get_level_brightness(int level)
| ~~~~^~~~~
drivers/macintosh/via-pmu-backlight.c: In function 'pmu_backlight_init':
drivers/macintosh/via-pmu-backlight.c:144:17: error: implicit
declaration of function 'of_machine_is_compatible'
[-Wimplicit-function-declaration]
144 | of_machine_is_compatible("AAPL,3400/2400") ||
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c: At top level:
drivers/macintosh/via-pmu-backlight.c:22:11: warning: 'bl_curve'
defined but not used [-Wunused-variable]
22 | static u8 bl_curve[FB_BACKLIGHT_LEVELS];
| ^~~~~~~~
make[5]: *** [scripts/Makefile.build:287:
drivers/macintosh/via-pmu-backlight.o] Error 1
make[5]: Target 'drivers/macintosh/' not remade because of errors.
## Source
* Kernel version: 6.18.0-rc2-next-20251027
* Git tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git
* Git describe: next-20251027
* Git commit: 8fec172c82c2b5f6f8e47ab837c1dc91ee3d1b87
* Architectures: powerpc
* Toolchains: gcc-14
* Kconfigs: defconfig
## Build
* Test log: https://storage.tuxsuite.com/public/linaro/lkft/builds/34dKrlb77LGOQQSoC8FH…
* Test details:
https://regressions.linaro.org/lkft/linux-next-master/next-20251027/build/g…
* Build plan: https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/builds/34dKrlb77…
* Build link: https://storage.tuxsuite.com/public/linaro/lkft/builds/34dKrlb77LGOQQSoC8FH…
* Kernel config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/34dKrlb77LGOQQSoC8FH…
--
Linaro LKFT
Changelog:
v8:
Added review-bys and addressed comments from Mike Rapoport and
Pratyush Yadav.
Added "memblock: Unpreserve memory in case of error" to handle
rollback if preserve fails half way through.
This series refactors the KHO framework to better support in-kernel
users like the upcoming LUO. The current design, which relies on a
notifier chain and debugfs for control, is too restrictive for direct
programmatic use.
The core of this rework is the removal of the notifier chain in favor of
a direct registration API. This decouples clients from the shutdown-time
finalization sequence, allowing them to manage their preserved state
more flexibly and at any time.
In support of this new model, this series also:
- Exports kho_finalize() and kho_abort() for programmatic control.
- Makes the debugfs interface optional.
- Introduces APIs to unpreserve memory and fixes a bug in the abort
path where client state was being incorrectly discarded. Note that
this is an interim step, as a more comprehensive fix is planned as
part of the stateless KHO work [1].
- Moves all KHO code into a new kernel/liveupdate/ directory to
consolidate live update components.
[1] https://lore.kernel.org/all/20251020100306.2709352-1-jasonmiu@google.com
Mike Rapoport (Microsoft) (1):
kho: drop notifiers
Pasha Tatashin (7):
kho: allow to drive kho from within kernel
kho: make debugfs interface optional
kho: add interfaces to unpreserve folios and page ranges
kho: don't unpreserve memory during abort
liveupdate: kho: move to kernel/liveupdate
liveupdate: kho: move kho debugfs directory to liveupdate
memblock: Unpreserve memory in case of error
Documentation/core-api/kho/concepts.rst | 2 +-
MAINTAINERS | 3 +-
include/linux/kexec_handover.h | 53 +-
init/Kconfig | 2 +
kernel/Kconfig.kexec | 24 -
kernel/Makefile | 3 +-
kernel/kexec_handover_internal.h | 16 -
kernel/liveupdate/Kconfig | 39 ++
kernel/liveupdate/Makefile | 5 +
kernel/{ => liveupdate}/kexec_handover.c | 508 +++++++-----------
.../{ => liveupdate}/kexec_handover_debug.c | 0
kernel/liveupdate/kexec_handover_debugfs.c | 219 ++++++++
kernel/liveupdate/kexec_handover_internal.h | 56 ++
lib/test_kho.c | 33 +-
mm/memblock.c | 82 ++-
tools/testing/selftests/kho/init.c | 2 +-
tools/testing/selftests/kho/vmtest.sh | 1 +
17 files changed, 590 insertions(+), 458 deletions(-)
delete mode 100644 kernel/kexec_handover_internal.h
create mode 100644 kernel/liveupdate/Kconfig
create mode 100644 kernel/liveupdate/Makefile
rename kernel/{ => liveupdate}/kexec_handover.c (80%)
rename kernel/{ => liveupdate}/kexec_handover_debug.c (100%)
create mode 100644 kernel/liveupdate/kexec_handover_debugfs.c
create mode 100644 kernel/liveupdate/kexec_handover_internal.h
base-commit: 72fb0170ef1f45addf726319c52a0562b6913707
--
2.51.1.821.gb6fe4d2222-goog
This patch series suggests fixes for several corner cases in the RISC-V
vector ptrace implementation:
- init vector context with proper vlenb, to avoid reading zero vlenb
by an early attached debugger
- follow gdbserver expectations and return ENODATA instead of EINVAL
if vector extension is supported but not yet activated for the
traced process
- validate input vector csr registers in ptrace, to maintain an accurate
view of the tracee's vector context across multiple halt/resume
debug cycles
For detailed description see the appropriate commit messages. A new test
suite v_ptrace is added into the tools/testing/selftests/riscv/vector
to verify some of the vector ptrace functionality and corner cases.
Previous versions:
- v2: https://lore.kernel.org/linux-riscv/20250821173957.563472-1-geomatsi@gmail.…
- v1: https://lore.kernel.org/linux-riscv/20251007115840.2320557-1-geomatsi@gmail…
Changes in v3:
Address the review comments by Andy Chiu and rework the approach:
- drop forced vector context save entirely
- perform strict validation of vector csr regs in ptrace
Changes in v2:
- add thread_info flag to allow to force vector context save
- force vector context save after vector ptrace to ensure valid vector
context in the next ptrace operations
- force vector context save on the first context switch after vector
context init to get proper vlenb
---
Ilya Mamay (1):
riscv: ptrace: return ENODATA for inactive vector extension
Sergey Matyukevich (8):
selftests: riscv: test ptrace vector interface
selftests: riscv: verify initial vector state with ptrace
riscv: vector: init vector context with proper vlenb
riscv: csr: define vector registers elements
riscv: ptrace: validate input vector csr registers
selftests: riscv: verify ptrace rejects invalid vector csr inputs
selftests: riscv: verify ptrace accepts valid vector csr values
selftests: riscv: verify syscalls discard vector context
arch/riscv/include/asm/csr.h | 11 +
arch/riscv/kernel/ptrace.c | 72 +-
arch/riscv/kernel/vector.c | 12 +-
.../testing/selftests/riscv/vector/.gitignore | 1 +
tools/testing/selftests/riscv/vector/Makefile | 5 +-
.../testing/selftests/riscv/vector/v_ptrace.c | 737 ++++++++++++++++++
6 files changed, 830 insertions(+), 8 deletions(-)
create mode 100644 tools/testing/selftests/riscv/vector/v_ptrace.c
base-commit: 72761a7e31225971d0b29d9195e0ffa986b77867
--
2.51.0
From: Nai-Chen Cheng <bleach1827(a)gmail.com>
[ Upstream commit d3f7457da7b9527a06dbcbfaf666aa51ac2eeb53 ]
The selftests 'make clean' does not clean the net/lib because it only
processes $(TARGETS) and ignores $(INSTALL_DEP_TARGETS). This leaves
compiled objects in net/lib after cleaning, requiring manual cleanup.
Include $(INSTALL_DEP_TARGETS) in clean target to ensure net/lib
dependency is properly cleaned.
Signed-off-by: Nai-Chen Cheng <bleach1827(a)gmail.com>
Reviewed-by: Simon Horman <horms(a)kernel.org>
Tested-by: Simon Horman <horms(a)kernel.org> # build-tested
Acked-by: Shuah Khan <skhan(a)linuxfoundation.org>
Link: https://patch.msgid.link/20250910-selftests-makefile-clean-v1-1-29e7f496cd8…
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
---
LLM Generated explanations, may be completely bogus:
YES – updating `tools/testing/selftests/Makefile:319` to iterate over
`$(TARGETS) $(INSTALL_DEP_TARGETS)` brings the `clean` recipe in line
with the existing `all` and `install` loops
(`tools/testing/selftests/Makefile:211` and `:276`), so the implicit
net/lib helper that gets built for networking selftests is now removed
during `make clean`. This fixes a real annoyance where stale objects
remain under `net/lib/` after cleaning, forcing manual removal and
risking rebuild flakiness if headers or tooling change. The change is
tiny, selftests-only, and mirrors logic already exercised in other
targets, so regression risk is negligible. Just make sure the stable
branch you target already carries the dependency hook that introduced
`INSTALL_DEP_TARGETS` (commit b86761ff6374813cdf64ffd6b95ddd1813c435d8
or equivalent); older branches without that infrastructure don’t need
this patch. Natural follow-up: once backported, run `make -C
tools/testing/selftests clean` after building the net tests to confirm
the stale net/lib objects are cleared.
tools/testing/selftests/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 030da61dbff3a..a2d8e1093b005 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -314,7 +314,7 @@ gen_tar: install
@echo "Created ${TAR_PATH}"
clean:
- @for TARGET in $(TARGETS); do \
+ @for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
BUILD_TARGET=$$BUILD/$$TARGET; \
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
done;
--
2.51.0
When running parameterized tests, each test case is initialized with
kunit_init_test(). This function takes the test_case->log as a parameter
but it clears it via string_stream_clear() on each iteration.
This results in only the log from the last parameter being preserved in
the test_case->log and the results from the previous parameters are lost
from the debugfs entry.
Fix this by manually setting the param_test.log to the test_case->log
after it has been initialized. This prevents kunit_init_test() from
clearing the log on each iteration.
Fixes: 4b59300ba4d2 ("kunit: Add parent kunit for parameterized test context")
Signed-off-by: Carlos Llamas <cmllamas(a)google.com>
---
lib/kunit/test.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/kunit/test.c b/lib/kunit/test.c
index bb66ea1a3eac..62eb529824c6 100644
--- a/lib/kunit/test.c
+++ b/lib/kunit/test.c
@@ -745,7 +745,8 @@ int kunit_run_tests(struct kunit_suite *suite)
.param_index = ++test.param_index,
.parent = &test,
};
- kunit_init_test(¶m_test, test_case->name, test_case->log);
+ kunit_init_test(¶m_test, test_case->name, NULL);
+ param_test.log = test_case->log;
kunit_run_case_catch_errors(suite, test_case, ¶m_test);
if (param_desc[0] == '\0') {
--
2.51.1.821.gb6fe4d2222-goog
Fix to avoid the usage of the `ret` variable uninitialized in the
following macro expansions.
It solves the following warning:
In file included from netlink-dumps.c:21:
netlink-dumps.c: In function ‘dump_extack’:
../kselftest_harness.h:788:35: warning: ‘ret’ may be used uninitialized [-Wmaybe-uninitialized]
788 | intmax_t __exp_print = (intmax_t)__exp; \
| ^~~~~~~~~~~
../kselftest_harness.h:631:9: note: in expansion of macro ‘__EXPECT’
631 | __EXPECT(expected, #expected, seen, #seen, ==, 0)
| ^~~~~~~~
netlink-dumps.c:169:9: note: in expansion of macro ‘EXPECT_EQ’
169 | EXPECT_EQ(ret, FOUND_EXTACK);
| ^~~~~~~~~
The issue can be reproduced, building the tests, with the command:
make -C tools/testing/selftests TARGETS=net
Signed-off-by: Alessandro Zanni <alessandro.zanni87(a)gmail.com>
---
Notes:
v2: applied the reverse christmas tree order
tools/testing/selftests/net/netlink-dumps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/netlink-dumps.c b/tools/testing/selftests/net/netlink-dumps.c
index 7618ebe528a4..7de360c029c6 100644
--- a/tools/testing/selftests/net/netlink-dumps.c
+++ b/tools/testing/selftests/net/netlink-dumps.c
@@ -111,8 +111,8 @@ static const struct {
TEST(dump_extack)
{
+ int i, cnt, ret = 0;
int netlink_sock;
- int i, cnt, ret;
char buf[8192];
int one = 1;
ssize_t n;
--
2.43.0
This small patchset is about avoid verifier bug warning when conditional
jumps on same register when the register holds a scalar with range.
---
KaFai Wan (2):
bpf: Skip bounds adjustment for conditional jumps on same register
selftests/bpf: Add test for conditional jumps on same register
kernel/bpf/verifier.c | 4 ++++
.../selftests/bpf/progs/verifier_bounds.c | 17 +++++++++++++++++
2 files changed, 21 insertions(+)
--
2.43.0
These patches are taken from the LUOv4 series [1] and address recent
comments from Pratyush.
They apply onto mm/mm-nonmm-unstable.
This series refactors the KHO framework to better support in-kernel
users like the upcoming LUO. The current design, which relies on a
notifier chain and debugfs for control, is too restrictive for direct
programmatic use.
The core of this rework is the removal of the notifier chain in favor of
a direct registration API. This decouples clients from the shutdown-time
finalization sequence, allowing them to manage their preserved state
more flexibly and at any time.
In support of this new model, this series also:
- Exports kho_finalize() and kho_abort() for programmatic control.
- Makes the debugfs interface optional.
- Introduces APIs to unpreserve memory and fixes a bug in the abort
path where client state was being incorrectly discarded. Note that
this is an interim step, as a more comprehensive fix is planned as
part of the stateless KHO work [2].
- Moves all KHO code into a new kernel/liveupdate/ directory to
consolidate live update components.
[1] https://lore.kernel.org/all/20250929010321.3462457-1-pasha.tatashin@soleen.…
[2] https://lore.kernel.org/all/20251001011941.1513050-1-jasonmiu@google.com
Mike Rapoport (Microsoft) (1):
kho: drop notifiers
Pasha Tatashin (6):
kho: allow to drive kho from within kernel
kho: make debugfs interface optional
kho: add interfaces to unpreserve folios and page ranges
kho: don't unpreserve memory during abort
liveupdate: kho: move to kernel/liveupdate
liveupdate: kho: move kho debugfs directory to liveupdate
Documentation/core-api/kho/concepts.rst | 2 +-
MAINTAINERS | 3 +-
include/linux/kexec_handover.h | 53 +-
init/Kconfig | 2 +
kernel/Kconfig.kexec | 24 -
kernel/Makefile | 3 +-
kernel/kexec_handover_internal.h | 16 -
kernel/liveupdate/Kconfig | 39 ++
kernel/liveupdate/Makefile | 5 +
kernel/{ => liveupdate}/kexec_handover.c | 513 +++++++-----------
.../{ => liveupdate}/kexec_handover_debug.c | 0
kernel/liveupdate/kexec_handover_debugfs.c | 219 ++++++++
kernel/liveupdate/kexec_handover_internal.h | 56 ++
lib/test_kho.c | 30 +-
mm/memblock.c | 62 +--
tools/testing/selftests/kho/init.c | 2 +-
tools/testing/selftests/kho/vmtest.sh | 1 +
17 files changed, 576 insertions(+), 454 deletions(-)
delete mode 100644 kernel/kexec_handover_internal.h
create mode 100644 kernel/liveupdate/Kconfig
create mode 100644 kernel/liveupdate/Makefile
rename kernel/{ => liveupdate}/kexec_handover.c (80%)
rename kernel/{ => liveupdate}/kexec_handover_debug.c (100%)
create mode 100644 kernel/liveupdate/kexec_handover_debugfs.c
create mode 100644 kernel/liveupdate/kexec_handover_internal.h
base-commit: 4d90027271cfa0d89473d1e288af52fda9a74935
--
2.51.0.915.g61a8936c21-goog
Hello,
this is the v2 of test_tc_tunnel conversion into test_progs framework.
test_tc_tunnel.sh tests a variety of tunnels based on BPF: packets are
encapsulated by a BPF program on the client egress. We then check that
those packets can be decapsulated on server ingress side, either thanks
to kernel-based or BPF-based decapsulation. Those tests are run thanks
to two veths in two dedicated namespaces.
- patches 1 and 2 are preparatory patches
- patch 3 introduce tc_tunnel test into test_progs
- patch 4 gets rid of the test_tc_tunnel.sh script
The new test has been executed both in some x86 local qemu machine, as
well as in CI:
# ./test_progs -a tc_tunnel
#454/1 tc_tunnel/ipip_none:OK
#454/2 tc_tunnel/ipip6_none:OK
#454/3 tc_tunnel/ip6tnl_none:OK
#454/4 tc_tunnel/sit_none:OK
#454/5 tc_tunnel/vxlan_eth:OK
#454/6 tc_tunnel/ip6vxlan_eth:OK
#454/7 tc_tunnel/gre_none:OK
#454/8 tc_tunnel/gre_eth:OK
#454/9 tc_tunnel/gre_mpls:OK
#454/10 tc_tunnel/ip6gre_none:OK
#454/11 tc_tunnel/ip6gre_eth:OK
#454/12 tc_tunnel/ip6gre_mpls:OK
#454/13 tc_tunnel/udp_none:OK
#454/14 tc_tunnel/udp_eth:OK
#454/15 tc_tunnel/udp_mpls:OK
#454/16 tc_tunnel/ip6udp_none:OK
#454/17 tc_tunnel/ip6udp_eth:OK
#454/18 tc_tunnel/ip6udp_mpls:OK
#454 tc_tunnel:OK
Summary: 1/18 PASSED, 0 SKIPPED, 0 FAILED
Signed-off-by: Alexis Lothoré (eBPF Foundation) <alexis.lothore(a)bootlin.com>
---
Changes in v2:
- declare a single tc_prog_attach helper rather than multiple,
intermediate helpers
- move the new helper to network_helpers.c rather than a dedicated
file
- do not rename existing tc_helpers.c/h pair (drop patch)
- keep only the minimal set of needed NS switches
- Link to v1: https://lore.kernel.org/r/20251017-tc_tunnel-v1-0-2d86808d86b2@bootlin.com
---
Alexis Lothoré (eBPF Foundation) (4):
selftests/bpf: add tc helpers
selftests/bpf: make test_tc_tunnel.bpf.c compatible with big endian platforms
selftests/bpf: integrate test_tc_tunnel.sh tests into test_progs
selftests/bpf: remove test_tc_tunnel.sh
tools/testing/selftests/bpf/Makefile | 1 -
tools/testing/selftests/bpf/network_helpers.c | 45 ++
tools/testing/selftests/bpf/network_helpers.h | 16 +
.../selftests/bpf/prog_tests/test_tc_tunnel.c | 660 +++++++++++++++++++++
.../testing/selftests/bpf/prog_tests/test_tunnel.c | 107 +---
tools/testing/selftests/bpf/progs/test_tc_tunnel.c | 95 ++-
tools/testing/selftests/bpf/test_tc_tunnel.sh | 320 ----------
7 files changed, 776 insertions(+), 468 deletions(-)
---
base-commit: b92bbe400a50e4eb033b378252292d1cc19cabae
change-id: 20250811-tc_tunnel-c61342683f18
Best regards,
--
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
This path introduces several kfuncs to help BPF programs determine their
current execution context. When hooking functions for statistics, we often
need to use current->comm to get the process name.
However, these hooked functions can be called from either process context
or interrupt context. When called from interrupt context, the current we
obtain may refer to the process that was interrupted, which may not be
what we need.
These new kfuncs expose APIs that allow users to determine the actual
execution context.
Jiayuan Chen (2):
bpf: Add kfuncs for detecting execution context
selftests/bpf: Add selftests for context detection kfuncs
kernel/bpf/helpers.c | 45 +++++++++++++++++++
.../selftests/bpf/prog_tests/context.c | 32 +++++++++++++
.../selftests/bpf/progs/context_prog.c | 33 ++++++++++++++
3 files changed, 110 insertions(+)
create mode 100644 tools/testing/selftests/bpf/prog_tests/context.c
create mode 100644 tools/testing/selftests/bpf/progs/context_prog.c
--
2.43.0
This series fixes a memory corruption bug in KHO that occurs when KFENCE
is enabled.
The root cause is that KHO metadata, allocated via kzalloc(), can be
randomly serviced by kfence_alloc(). When a kernel boots via KHO, the
early memblock allocator is restricted to a "scratch area". This forces
the KFENCE pool to be allocated within this scratch area, creating a
conflict. If KHO metadata is subsequently placed in this pool, it gets
corrupted during the next kexec operation.
The series is structured in two parts:
Patch 1/2 introduces a debug-only feature (CONFIG_KEXEC_HANDOVER_DEBUG)
that adds checks to detect and fail any operation that attempts to place
KHO metadata or preserved memory within the scratch area. This serves as
a validation and diagnostic tool to confirm the problem without
affecting production builds.
Patch 2/2 provides the fix by modifying KHO to allocate its metadata
directly from the buddy allocator instead of SLUB. This bypasses the
KFENCE interception entirely.
Pasha Tatashin (2):
liveupdate: kho: warn and fail on metadata or preserved memory in
scratch area
liveupdate: kho: allocate metadata directly from the buddy allocator
kernel/liveupdate/Kconfig | 15 ++++++
kernel/liveupdate/kexec_handover.c | 51 ++++++++++++++++-----
kernel/liveupdate/kexec_handover_debug.c | 18 ++++++++
kernel/liveupdate/kexec_handover_internal.h | 9 ++++
4 files changed, 81 insertions(+), 12 deletions(-)
base-commit: 0b2f041c47acb45db82b4e847af6e17eb66cd32d
--
2.51.0.788.g6d19910ace-goog
Need to talk to a real person Spirit Airlines? Calling Spirit Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Spirit Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Spirit Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Spirit Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Spirit Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Spirit Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Southwest Airlines? Calling Southwest Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Southwest Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Southwest Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Southwest Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Southwest Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Southwest Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person SkyWest Airlines? Calling SkyWest Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real SkyWest Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach SkyWest Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM SkyWest Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the SkyWest Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to SkyWest Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Scandinavian Airlines (SAS)? Calling Scandinavian Airlines (SAS) directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Scandinavian Airlines (SAS) representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Scandinavian Airlines (SAS) (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Scandinavian Airlines (SAS) on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Scandinavian Airlines (SAS) App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Scandinavian Airlines (SAS), knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Royal Jordanian Airlines? Calling Royal Jordanian Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Royal Jordanian Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Royal Jordanian Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Royal Jordanian Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Royal Jordanian Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Royal Jordanian Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Royal Brunei Airlines? Calling Royal Brunei Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Royal Brunei Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Royal Brunei Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Royal Brunei Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Royal Brunei Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Royal Brunei Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Porter Airlines? Calling Porter Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Porter Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Porter Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Porter Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Porter Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Porter Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Play Airlines? Calling Play Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Play Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Play Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Play Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Play Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Play Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Philippine Airlines? Calling Philippine Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Philippine Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Philippine Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Philippine Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Philippine Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Philippine Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Pegasus Airlines? Calling Pegasus Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Pegasus Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Pegasus Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Pegasus Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Pegasus Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Pegasus Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Mokulele Airlines? Calling Mokulele Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Mokulele Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Mokulele Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Mokulele Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Mokulele Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Mokulele Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
Need to talk to a real person Mesa Airlines? Calling Mesa Airlines directly at 📞 1-866-284-3022. Whether you are trying to make a flight change, cancel your booking, ask about baggage, or resolve a booking issue, reaching a live agent can save you time, stress, and confusion. While automated systems are useful for simple tasks, some situations just need a human touch.
In this guide, we will walk you through exactly how to reach a live person, what to prepare before calling, and alternate methods if the phone lines are busy.
☎️ First Things First: Call 1-866-284-3022
The most direct and reliable way to speak with a real Mesa Airlines representative is by calling 📞 1-866-284-3022. This is Frontier’s official customer service number and should be your go-to for:
✈️ Flight changes or cancellations
🧾 Refund or credit questions
🛄 Baggage issues
🔁 Name corrections
🛑 Check-in or boarding problems
💺 Seat selection and upgrades
Pro Tip: When calling, try to do so during non-peak hours — early mornings or late evenings — to reduce your hold time.
🎧 How to Navigate the Automated Menu
When you call 1-866-284-3022, you will first hear an automated system. To get through to a live person faster, follow these steps:
Dial 1-866-284-3022
Wait for the automated greeting to begin
Press “1” for English (or “2” for Spanish)
Press “2” for existing reservations
Press “0” to speak with an agent (you may need to press "0" more than once)
👉 If “0” does not work immediately, stay on the line. Sometimes the system transfers you to an agent after a brief wait without needing more input.
If the lines are busy and you are placed on hold, do not hang up — wait times vary, but you will eventually reach someone.
🧾 What to Have Ready Before You Call
To help the agent assist you faster, make sure you have the following details on hand:
📌 Your confirmation code or booking number
📌 The full name on the reservation
📌 Your flight date and destination
📌 Any relevant documents (ID, credit card, etc.)
📌 A notepad for writing down instructions or confirmation numbers
If you are calling to fix a mistake or request a refund, be prepared to briefly explain the issue and possibly provide documentation via email upon request.
⏰ Best Times to Call 1-866-284-3022
Customer service lines can be busy, especially during:
⚠️ Holidays
⚠️ Severe weather or flight delays
⚠️ Early morning flight hours
🎯 For the best chance at a short wait, try calling during these times:
🕔 5:00 AM – 7:00 AM (EST)
🕘 9:00 PM – 11:00 PM (EST)
📅 Midweek (Tuesdays and Wednesdays)
Avoid Mondays if possible — it is the busiest day for airlines.
🧑💻 Alternative Ways to Reach Mesa Airlines (If Phone Fails)
If calling 📞 1-866-284-3022 does not work or you are stuck in a long queue, here are a few alternate ways to get help:
💬 1. Online Chat (Limited Availability)
Visit www.flyfrontier.com
Scroll down and look for the “Let’s Chat” option.
This can connect you to a live agent or AI assistant, depending on availability.
📧 2. Email Support
You can also submit a help request through their Customer Support Form online.
Use this for non-urgent matters like refund requests or documentation review.
📱 3. Social Media
Tweet or DM Mesa Airlines on platforms like Twitter/X (@FlyFrontier) or send a message via Facebook.
Sometimes social media agents respond faster than the phone team during high-volume periods.
📲 4. Mobile App
Download the Mesa Airlines App, log in, and navigate to “My Trips” or “Support” for quick options.
While this will not guarantee a live agent, you might find answers to basic questions faster.
❗ Common Issues That Require a Live Agent
While many tasks can be done online, certain problems are best resolved with a real person at 1-866-284-3022:
🛑 Double charges or billing issues
🔄 Complex flight changes involving multiple passengers
🛄 Lost or delayed baggage
✍️ Legal name changes (marriage, divorce, etc.)
🧑⚕️ Medical or accessibility needs during travel
In these cases, avoid wasting time — call directly and ask for a live agent.
🚨 Beware of Fake Numbers and Scams
Only use the official number: 📞 1-866-284-3022.
Scammers often post fake “Frontier support” numbers online, asking for credit card info or login credentials.
🛡️ Never share your full credit card number or personal information with an unverified source.
✅ Final Thoughts
Talking to a live person at an airline should not be this hard — but when it comes to Mesa Airlines, knowing the right steps and phone number makes all the difference.
🧠 Remember:
Dial 📞 1-866-284-3022
Press 0 to reach a live agent
Call during off-peak hours
Have your booking info ready
Use alternative methods if the line is too busy
💡 The sooner you reach out, the more options you'll have to resolve your issue.
✈️ Whether you are rebooking, fixing an error, or checking a flight, calling 1-866-284-3022 connects you with someone who can truly help.
v22: fixing build error due to -march=zicfiss being picked in gcc-13 and above
but not actually doing any codegen or recognizing instruction for zicfiss.
Change in v22 makes dependence on `-fcf-protection=full` compiler flag to
ensure that toolchain has support and then only CONFIG_RISCV_USER_CFI will be
visible in menuconfig.
v21: fixed build errors.
Basics and overview
===================
Software with larger attack surfaces (e.g. network facing apps like databases,
browsers or apps relying on browser runtimes) suffer from memory corruption
issues which can be utilized by attackers to bend control flow of the program
to eventually gain control (by making their payload executable). Attackers are
able to perform such attacks by leveraging call-sites which rely on indirect
calls or return sites which rely on obtaining return address from stack memory.
To mitigate such attacks, risc-v extension zicfilp enforces that all indirect
calls must land on a landing pad instruction `lpad` else cpu will raise software
check exception (a new cpu exception cause code on riscv).
Similarly for return flow, risc-v extension zicfiss extends architecture with
- `sspush` instruction to push return address on a shadow stack
- `sspopchk` instruction to pop return address from shadow stack
and compare with input operand (i.e. return address on stack)
- `sspopchk` to raise software check exception if comparision above
was a mismatch
- Protection mechanism using which shadow stack is not writeable via
regular store instructions
More information an details can be found at extensions github repo [1].
Equivalent to landing pad (zicfilp) on x86 is `ENDBRANCH` instruction in Intel
CET [3] and branch target identification (BTI) [4] on arm.
Similarly x86's Intel CET has shadow stack [5] and arm64 has guarded control
stack (GCS) [6] which are very similar to risc-v's zicfiss shadow stack.
x86 and arm64 support for user mode shadow stack is already in mainline.
Kernel awareness for user control flow integrity
================================================
This series picks up Samuel Holland's envcfg changes [2] as well. So if those are
being applied independently, they should be removed from this series.
Enabling:
In order to maintain compatibility and not break anything in user mode, kernel
doesn't enable control flow integrity cpu extensions on binary by default.
Instead exposes a prctl interface to enable, disable and lock the shadow stack
or landing pad feature for a task. This allows userspace (loader) to enumerate
if all objects in its address space are compiled with shadow stack and landing
pad support and accordingly enable the feature. Additionally if a subsequent
`dlopen` happens on a library, user mode can take a decision again to disable
the feature (if incoming library is not compiled with support) OR terminate the
task (if user mode policy is strict to have all objects in address space to be
compiled with control flow integirty cpu feature). prctl to enable shadow stack
results in allocating shadow stack from virtual memory and activating for user
address space. x86 and arm64 are also following same direction due to similar
reason(s).
clone/fork:
On clone and fork, cfi state for task is inherited by child. Shadow stack is
part of virtual memory and is a writeable memory from kernel perspective
(writeable via a restricted set of instructions aka shadow stack instructions)
Thus kernel changes ensure that this memory is converted into read-only when
fork/clone happens and COWed when fault is taken due to sspush, sspopchk or
ssamoswap. In case `CLONE_VM` is specified and shadow stack is to be enabled,
kernel will automatically allocate a shadow stack for that clone call.
map_shadow_stack:
x86 introduced `map_shadow_stack` system call to allow user space to explicitly
map shadow stack memory in its address space. It is useful to allocate shadow
for different contexts managed by a single thread (green threads or contexts)
risc-v implements this system call as well.
signal management:
If shadow stack is enabled for a task, kernel performs an asynchronous control
flow diversion to deliver the signal and eventually expects userspace to issue
sigreturn so that original execution can be resumed. Even though resume context
is prepared by kernel, it is in user space memory and is subject to memory
corruption and corruption bugs can be utilized by attacker in this race window
to perform arbitrary sigreturn and eventually bypass cfi mechanism.
Another issue is how to ensure that cfi related state on sigcontext area is not
trampled by legacy apps or apps compiled with old kernel headers.
In order to mitigate control-flow hijacting, kernel prepares a token and place
it on shadow stack before signal delivery and places address of token in
sigcontext structure. During sigreturn, kernel obtains address of token from
sigcontext struture, reads token from shadow stack and validates it and only
then allow sigreturn to succeed. Compatiblity issue is solved by adopting
dynamic sigcontext management introduced for vector extension. This series
re-factor the code little bit to allow future sigcontext management easy (as
proposed by Andy Chiu from SiFive)
config and compilation:
Introduce a new risc-v config option `CONFIG_RISCV_USER_CFI`. Selecting this
config option picks the kernel support for user control flow integrity. This
optin is presented only if toolchain has shadow stack and landing pad support.
And is on purpose guarded by toolchain support. Reason being that eventually
vDSO also needs to be compiled in with shadow stack and landing pad support.
vDSO compile patches are not included as of now because landing pad labeling
scheme is yet to settle for usermode runtime.
To get more information on kernel interactions with respect to
zicfilp and zicfiss, patch series adds documentation for
`zicfilp` and `zicfiss` in following:
Documentation/arch/riscv/zicfiss.rst
Documentation/arch/riscv/zicfilp.rst
How to test this series
=======================
Toolchain
---------
$ git clone git@github.com:sifive/riscv-gnu-toolchain.git -b cfi-dev
$ riscv-gnu-toolchain/configure --prefix=<path-to-where-to-build> --with-arch=rv64gc_zicfilp_zicfiss --enable-linux --disable-gdb --with-extra-multilib-test="rv64gc_zicfilp_zicfiss-lp64d:-static"
$ make -j$(nproc)
Qemu
----
Get the lastest qemu
$ cd qemu
$ mkdir build
$ cd build
$ ../configure --target-list=riscv64-softmmu
$ make -j$(nproc)
Opensbi
-------
$ git clone git@github.com:deepak0414/opensbi.git -b v6_cfi_spec_split_opensbi
$ make CROSS_COMPILE=<your riscv toolchain> -j$(nproc) PLATFORM=generic
Linux
-----
Running defconfig is fine. CFI is enabled by default if the toolchain
supports it.
$ make ARCH=riscv CROSS_COMPILE=<path-to-cfi-riscv-gnu-toolchain>/build/bin/riscv64-unknown-linux-gnu- -j$(nproc) defconfig
$ make ARCH=riscv CROSS_COMPILE=<path-to-cfi-riscv-gnu-toolchain>/build/bin/riscv64-unknown-linux-gnu- -j$(nproc)
Running
-------
Modify your qemu command to have:
-bios <path-to-cfi-opensbi>/build/platform/generic/firmware/fw_dynamic.bin
-cpu rv64,zicfilp=true,zicfiss=true,zimop=true,zcmop=true
References
==========
[1] - https://github.com/riscv/riscv-cfi
[2] - https://lore.kernel.org/all/20240814081126.956287-1-samuel.holland@sifive.c…
[3] - https://lwn.net/Articles/889475/
[4] - https://developer.arm.com/documentation/109576/0100/Branch-Target-Identific…
[5] - https://www.intel.com/content/dam/develop/external/us/en/documents/catc17-i…
[6] - https://lwn.net/Articles/940403/
To: Thomas Gleixner <tglx(a)linutronix.de>
To: Ingo Molnar <mingo(a)redhat.com>
To: Borislav Petkov <bp(a)alien8.de>
To: Dave Hansen <dave.hansen(a)linux.intel.com>
To: x86(a)kernel.org
To: H. Peter Anvin <hpa(a)zytor.com>
To: Andrew Morton <akpm(a)linux-foundation.org>
To: Liam R. Howlett <Liam.Howlett(a)oracle.com>
To: Vlastimil Babka <vbabka(a)suse.cz>
To: Lorenzo Stoakes <lorenzo.stoakes(a)oracle.com>
To: Paul Walmsley <paul.walmsley(a)sifive.com>
To: Palmer Dabbelt <palmer(a)dabbelt.com>
To: Albert Ou <aou(a)eecs.berkeley.edu>
To: Conor Dooley <conor(a)kernel.org>
To: Rob Herring <robh(a)kernel.org>
To: Krzysztof Kozlowski <krzk+dt(a)kernel.org>
To: Arnd Bergmann <arnd(a)arndb.de>
To: Christian Brauner <brauner(a)kernel.org>
To: Peter Zijlstra <peterz(a)infradead.org>
To: Oleg Nesterov <oleg(a)redhat.com>
To: Eric Biederman <ebiederm(a)xmission.com>
To: Kees Cook <kees(a)kernel.org>
To: Jonathan Corbet <corbet(a)lwn.net>
To: Shuah Khan <shuah(a)kernel.org>
To: Jann Horn <jannh(a)google.com>
To: Conor Dooley <conor+dt(a)kernel.org>
To: Miguel Ojeda <ojeda(a)kernel.org>
To: Alex Gaynor <alex.gaynor(a)gmail.com>
To: Boqun Feng <boqun.feng(a)gmail.com>
To: Gary Guo <gary(a)garyguo.net>
To: Björn Roy Baron <bjorn3_gh(a)protonmail.com>
To: Benno Lossin <benno.lossin(a)proton.me>
To: Andreas Hindborg <a.hindborg(a)kernel.org>
To: Alice Ryhl <aliceryhl(a)google.com>
To: Trevor Gross <tmgross(a)umich.edu>
Cc: linux-kernel(a)vger.kernel.org
Cc: linux-fsdevel(a)vger.kernel.org
Cc: linux-mm(a)kvack.org
Cc: linux-riscv(a)lists.infradead.org
Cc: devicetree(a)vger.kernel.org
Cc: linux-arch(a)vger.kernel.org
Cc: linux-doc(a)vger.kernel.org
Cc: linux-kselftest(a)vger.kernel.org
Cc: alistair.francis(a)wdc.com
Cc: richard.henderson(a)linaro.org
Cc: jim.shu(a)sifive.com
Cc: andybnac(a)gmail.com
Cc: kito.cheng(a)sifive.com
Cc: charlie(a)rivosinc.com
Cc: atishp(a)rivosinc.com
Cc: evan(a)rivosinc.com
Cc: cleger(a)rivosinc.com
Cc: alexghiti(a)rivosinc.com
Cc: samitolvanen(a)google.com
Cc: broonie(a)kernel.org
Cc: rick.p.edgecombe(a)intel.com
Cc: rust-for-linux(a)vger.kernel.org
changelog
---------
v22:
- CONFIG_RISCV_USER_CFI was by default "n". With dual vdso support it is
default "y" (if toolchain supports it). Fixing build error due to
"-march=zicfiss" being picked in gcc-13 partially. gcc-13 only recognizes the
flag but not actually doing any codegen or recognizing instruction for zicfiss.
Change in v22 makes dependence on `-fcf-protection=full` compiler flag to
ensure that toolchain has support and then only CONFIG_RISCV_USER_CFI will be
visible in menuconfig.
- picked up tags and some cosmetic changes in commit message for dual vdso
patch.
v21:
- Fixing build errors due to changes in arch/riscv/include/asm/vdso.h
Using #ifdef instead of IS_ENABLED in arch/riscv/include/asm/vdso.h
vdso-cfi-offsets.h should be included only when CONFIG_RISCV_USER_CFI
is selected.
v20:
- rebased on v6.18-rc1.
- Added two vDSO support. If `CONFIG_RISCV_USER_CFI` is selected
two vDSOs are compiled (one for hardware prior to RVA23 and one
for RVA23 onwards). Kernel exposes RVA23 vDSO if hardware/cpu
implements zimop else exposes existing vDSO to userspace.
- default selection for `CONFIG_RISCV_USER_CFI` is "Yes".
- replaced "__ASSEMBLY__" with "__ASSEMBLER__"
v19:
- riscv_nousercfi was `int`. changed it to unsigned long.
Thanks to Alex Ghiti for reporting it. It was a bug.
- ELP is cleared on trap entry only when CONFIG_64BIT.
- restore ssp back on return to usermode was being done
before `riscv_v_context_nesting_end` on trap exit path.
If kernel shadow stack were enabled this would result in
kernel operating on user shadow stack and panic (as I found
in my testing of kcfi patch series). So fixed that.
v18:
- rebased on 6.16-rc1
- uprobe handling clears ELP in sstatus image in pt_regs
- vdso was missing shadow stack elf note for object files.
added that. Additional asm file for vdso needed the elf marker
flag. toolchain should complain if `-fcf-protection=full` and
marker is missing for object generated from asm file. Asked
toolchain folks to fix this. Although no reason to gate the merge
on that.
- Split up compile options for march and fcf-protection in vdso
Makefile
- CONFIG_RISCV_USER_CFI option is moved under "Kernel features" menu
Added `arch/riscv/configs/hardening.config` fragment which selects
CONFIG_RISCV_USER_CFI
v17:
- fixed warnings due to empty macros in usercfi.h (reported by alexg)
- fixed prefixes in commit titles reported by alexg
- took below uprobe with fcfi v2 patch from Zong Li and squashed it with
"riscv/traps: Introduce software check exception and uprobe handling"
https://lore.kernel.org/all/20250604093403.10916-1-zong.li@sifive.com/
v16:
- If FWFT is not implemented or returns error for shadow stack activation, then
no_usercfi is set to disable shadow stack. Although this should be picked up
by extension validation and activation. Fixed this bug for zicfilp and zicfiss
both. Thanks to Charlie Jenkins for reporting this.
- If toolchain doesn't support cfi, cfi kselftest shouldn't build. Suggested by
Charlie Jenkins.
- Default for CONFIG_RISCV_USER_CFI is set to no. Charlie/Atish suggested to
keep it off till we have more hardware availibility with RVA23 profile and
zimop/zcmop implemented. Else this will start breaking people's workflow
- Includes the fix if "!RV64 and !SBI" then definitions for FWFT in
asm-offsets.c error.
v15:
- Toolchain has been updated to include `-fcf-protection` flag. This
exists for x86 as well. Updated kernel patches to compile vDSO and
selftest to compile with `fcf-protection=full` flag.
- selecting CONFIG_RISCV_USERCFI selects CONFIG_RISCV_SBI.
- Patch to enable shadow stack for kernel wasn't hidden behind
CONFIG_RISCV_USERCFI and CONFIG_RISCV_SBI. fixed that.
v14:
- rebased on top of palmer/sbi-v3. Thus dropped clement's FWFT patches
Updated RISCV_ISA_EXT_XXXX in hwcap and hwprobe constants.
- Took Radim's suggestions on bitfields.
- Placed cfi_state at the end of thread_info block so that current situation
is not disturbed with respect to member fields of thread_info in single
cacheline.
v13:
- cpu_supports_shadow_stack/cpu_supports_indirect_br_lp_instr uses
riscv_has_extension_unlikely()
- uses nops(count) to create nop slide
- RISCV_ACQUIRE_BARRIER is not needed in `amo_user_shstk`. Removed it
- changed ternaries to simply use implicit casting to convert to bool.
- kernel command line allows to disable zicfilp and zicfiss independently.
updated kernel-parameters.txt.
- ptrace user abi for cfi uses bitmasks instead of bitfields. Added ptrace
kselftest.
- cosmetic and grammatical changes to documentation.
v12:
- It seems like I had accidently squashed arch agnostic indirect branch
tracking prctl and riscv implementation of those prctls. Split them again.
- set_shstk_status/set_indir_lp_status perform CSR writes only when CPU
support is available. As suggested by Zong Li.
- Some minor clean up in kselftests as suggested by Zong Li.
v11:
- patch "arch/riscv: compile vdso with landing pad" was unconditionally
selecting `_zicfilp` for vDSO compile. fixed that. Changed `lpad 1` to
to `lpad 0`.
v10:
- dropped "mm: helper `is_shadow_stack_vma` to check shadow stack vma". This patch
is not that interesting to this patch series for risc-v. There are instances in
arch directories where VM_SHADOW_STACK flag is anyways used. Dropping this patch
to expedite merging in riscv tree.
- Took suggestions from `Clement` on "riscv: zicfiss / zicfilp enumeration" to
validate presence of cfi based on config.
- Added a patch for vDSO to have `lpad 0`. I had omitted this earlier to make sure
we add single vdso object with cfi enabled. But a vdso object with scheme of
zero labeled landing pad is least common denominator and should work with all
objects of zero labeled as well as function-signature labeled objects.
v9:
- rebased on master (39a803b754d5 fix braino in "9p: fix ->rename_sem exclusion")
- dropped "mm: Introduce ARCH_HAS_USER_SHADOW_STACK" (master has it from arm64/gcs)
- dropped "prctl: arch-agnostic prctl for shadow stack" (master has it from arm64/gcs)
v8:
- rebased on palmer/for-next
- dropped samuel holland's `envcfg` context switch patches.
they are in parlmer/for-next
v7:
- Removed "riscv/Kconfig: enable HAVE_EXIT_THREAD for riscv"
Instead using `deactivate_mm` flow to clean up.
see here for more context
https://lore.kernel.org/all/20230908203655.543765-1-rick.p.edgecombe@intel.…
- Changed the header include in `kselftest`. Hopefully this fixes compile
issue faced by Zong Li at SiFive.
- Cleaned up an orphaned change to `mm/mmap.c` in below patch
"riscv/mm : ensure PROT_WRITE leads to VM_READ | VM_WRITE"
- Lock interfaces for shadow stack and indirect branch tracking expect arg == 0
Any future evolution of this interface should accordingly define how arg should
be setup.
- `mm/map.c` has an instance of using `VM_SHADOW_STACK`. Fixed it to use helper
`is_shadow_stack_vma`.
- Link to v6: https://lore.kernel.org/r/20241008-v5_user_cfi_series-v6-0-60d9fe073f37@riv…
v6:
- Picked up Samuel Holland's changes as is with `envcfg` placed in
`thread` instead of `thread_info`
- fixed unaligned newline escapes in kselftest
- cleaned up messages in kselftest and included test output in commit message
- fixed a bug in clone path reported by Zong Li
- fixed a build issue if CONFIG_RISCV_ISA_V is not selected
(this was introduced due to re-factoring signal context
management code)
v5:
- rebased on v6.12-rc1
- Fixed schema related issues in device tree file
- Fixed some of the documentation related issues in zicfilp/ss.rst
(style issues and added index)
- added `SHADOW_STACK_SET_MARKER` so that implementation can define base
of shadow stack.
- Fixed warnings on definitions added in usercfi.h when
CONFIG_RISCV_USER_CFI is not selected.
- Adopted context header based signal handling as proposed by Andy Chiu
- Added support for enabling kernel mode access to shadow stack using
FWFT
(https://github.com/riscv-non-isa/riscv-sbi-doc/blob/master/src/ext-firmware…)
- Link to v5: https://lore.kernel.org/r/20241001-v5_user_cfi_series-v1-0-3ba65b6e550f@riv…
(Note: I had an issue in my workflow due to which version number wasn't
picked up correctly while sending out patches)
v4:
- rebased on 6.11-rc6
- envcfg: Converged with Samuel Holland's patches for envcfg management on per-
thread basis.
- vma_is_shadow_stack is renamed to is_vma_shadow_stack
- picked up Mark Brown's `ARCH_HAS_USER_SHADOW_STACK` patch
- signal context: using extended context management to maintain compatibility.
- fixed `-Wmissing-prototypes` compiler warnings for prctl functions
- Documentation fixes and amending typos.
- Link to v4: https://lore.kernel.org/all/20240912231650.3740732-1-debug@rivosinc.com/
v3:
- envcfg
logic to pick up base envcfg had a bug where `ENVCFG_CBZE` could have been
picked on per task basis, even though CPU didn't implement it. Fixed in
this series.
- dt-bindings
As suggested, split into separate commit. fixed the messaging that spec is
in public review
- arch_is_shadow_stack change
arch_is_shadow_stack changed to vma_is_shadow_stack
- hwprobe
zicfiss / zicfilp if present will get enumerated in hwprobe
- selftests
As suggested, added object and binary filenames to .gitignore
Selftest binary anyways need to be compiled with cfi enabled compiler which
will make sure that landing pad and shadow stack are enabled. Thus removed
separate enable/disable tests. Cleaned up tests a bit.
- Link to v3: https://lore.kernel.org/lkml/20240403234054.2020347-1-debug@rivosinc.com/
v2:
- Using config `CONFIG_RISCV_USER_CFI`, kernel support for riscv control flow
integrity for user mode programs can be compiled in the kernel.
- Enabling of control flow integrity for user programs is left to user runtime
- This patch series introduces arch agnostic `prctls` to enable shadow stack
and indirect branch tracking. And implements them on riscv.
---
Changes in v22:
- Link to v21: https://lore.kernel.org/r/20251015-v5_user_cfi_series-v21-0-6a07856e90e7@ri…
Changes in v21:
- Link to v20: https://lore.kernel.org/r/20251013-v5_user_cfi_series-v20-0-b9de4be9912e@ri…
Changes in v20:
- Link to v19: https://lore.kernel.org/r/20250731-v5_user_cfi_series-v19-0-09b468d7beab@ri…
Changes in v19:
- Link to v18: https://lore.kernel.org/r/20250711-v5_user_cfi_series-v18-0-a8ee62f9f38e@ri…
Changes in v18:
- Link to v17: https://lore.kernel.org/r/20250604-v5_user_cfi_series-v17-0-4565c2cf869f@ri…
Changes in v17:
- Link to v16: https://lore.kernel.org/r/20250522-v5_user_cfi_series-v16-0-64f61a35eee7@ri…
Changes in v16:
- Link to v15: https://lore.kernel.org/r/20250502-v5_user_cfi_series-v15-0-914966471885@ri…
Changes in v15:
- changelog posted just below cover letter
- Link to v14: https://lore.kernel.org/r/20250429-v5_user_cfi_series-v14-0-5239410d012a@ri…
Changes in v14:
- changelog posted just below cover letter
- Link to v13: https://lore.kernel.org/r/20250424-v5_user_cfi_series-v13-0-971437de586a@ri…
Changes in v13:
- changelog posted just below cover letter
- Link to v12: https://lore.kernel.org/r/20250314-v5_user_cfi_series-v12-0-e51202b53138@ri…
Changes in v12:
- changelog posted just below cover letter
- Link to v11: https://lore.kernel.org/r/20250310-v5_user_cfi_series-v11-0-86b36cbfb910@ri…
Changes in v11:
- changelog posted just below cover letter
- Link to v10: https://lore.kernel.org/r/20250210-v5_user_cfi_series-v10-0-163dcfa31c60@ri…
---
Andy Chiu (1):
riscv: signal: abstract header saving for setup_sigcontext
Deepak Gupta (26):
mm: VM_SHADOW_STACK definition for riscv
dt-bindings: riscv: zicfilp and zicfiss in dt-bindings (extensions.yaml)
riscv: zicfiss / zicfilp enumeration
riscv: zicfiss / zicfilp extension csr and bit definitions
riscv: usercfi state for task and save/restore of CSR_SSP on trap entry/exit
riscv/mm : ensure PROT_WRITE leads to VM_READ | VM_WRITE
riscv/mm: manufacture shadow stack pte
riscv/mm: teach pte_mkwrite to manufacture shadow stack PTEs
riscv/mm: write protect and shadow stack
riscv/mm: Implement map_shadow_stack() syscall
riscv/shstk: If needed allocate a new shadow stack on clone
riscv: Implements arch agnostic shadow stack prctls
prctl: arch-agnostic prctl for indirect branch tracking
riscv: Implements arch agnostic indirect branch tracking prctls
riscv/traps: Introduce software check exception and uprobe handling
riscv/signal: save and restore of shadow stack for signal
riscv/kernel: update __show_regs to print shadow stack register
riscv/ptrace: riscv cfi status and state via ptrace and in core files
riscv/hwprobe: zicfilp / zicfiss enumeration in hwprobe
riscv: kernel command line option to opt out of user cfi
riscv: enable kernel access to shadow stack memory via FWFT sbi call
arch/riscv: dual vdso creation logic and select vdso based on hw
riscv: create a config for shadow stack and landing pad instr support
riscv: Documentation for landing pad / indirect branch tracking
riscv: Documentation for shadow stack on riscv
kselftest/riscv: kselftest for user mode cfi
Jim Shu (1):
arch/riscv: compile vdso with landing pad and shadow stack note
Documentation/admin-guide/kernel-parameters.txt | 8 +
Documentation/arch/riscv/index.rst | 2 +
Documentation/arch/riscv/zicfilp.rst | 115 +++++
Documentation/arch/riscv/zicfiss.rst | 179 +++++++
.../devicetree/bindings/riscv/extensions.yaml | 14 +
arch/riscv/Kconfig | 22 +
arch/riscv/Makefile | 8 +-
arch/riscv/configs/hardening.config | 4 +
arch/riscv/include/asm/asm-prototypes.h | 1 +
arch/riscv/include/asm/assembler.h | 44 ++
arch/riscv/include/asm/cpufeature.h | 12 +
arch/riscv/include/asm/csr.h | 16 +
arch/riscv/include/asm/entry-common.h | 2 +
arch/riscv/include/asm/hwcap.h | 2 +
arch/riscv/include/asm/mman.h | 26 +
arch/riscv/include/asm/mmu_context.h | 7 +
arch/riscv/include/asm/pgtable.h | 30 +-
arch/riscv/include/asm/processor.h | 1 +
arch/riscv/include/asm/thread_info.h | 3 +
arch/riscv/include/asm/usercfi.h | 95 ++++
arch/riscv/include/asm/vdso.h | 13 +-
arch/riscv/include/asm/vector.h | 3 +
arch/riscv/include/uapi/asm/hwprobe.h | 2 +
arch/riscv/include/uapi/asm/ptrace.h | 34 ++
arch/riscv/include/uapi/asm/sigcontext.h | 1 +
arch/riscv/kernel/Makefile | 2 +
arch/riscv/kernel/asm-offsets.c | 10 +
arch/riscv/kernel/cpufeature.c | 27 +
arch/riscv/kernel/entry.S | 38 ++
arch/riscv/kernel/head.S | 27 +
arch/riscv/kernel/process.c | 27 +-
arch/riscv/kernel/ptrace.c | 95 ++++
arch/riscv/kernel/signal.c | 148 +++++-
arch/riscv/kernel/sys_hwprobe.c | 2 +
arch/riscv/kernel/sys_riscv.c | 10 +
arch/riscv/kernel/traps.c | 54 ++
arch/riscv/kernel/usercfi.c | 545 +++++++++++++++++++++
arch/riscv/kernel/vdso.c | 7 +
arch/riscv/kernel/vdso/Makefile | 40 +-
arch/riscv/kernel/vdso/flush_icache.S | 4 +
arch/riscv/kernel/vdso/gen_vdso_offsets.sh | 4 +-
arch/riscv/kernel/vdso/getcpu.S | 4 +
arch/riscv/kernel/vdso/note.S | 3 +
arch/riscv/kernel/vdso/rt_sigreturn.S | 4 +
arch/riscv/kernel/vdso/sys_hwprobe.S | 4 +
arch/riscv/kernel/vdso/vgetrandom-chacha.S | 5 +-
arch/riscv/kernel/vdso_cfi/Makefile | 25 +
arch/riscv/kernel/vdso_cfi/vdso-cfi.S | 11 +
arch/riscv/mm/init.c | 2 +-
arch/riscv/mm/pgtable.c | 16 +
include/linux/cpu.h | 4 +
include/linux/mm.h | 7 +
include/uapi/linux/elf.h | 2 +
include/uapi/linux/prctl.h | 27 +
kernel/sys.c | 30 ++
tools/testing/selftests/riscv/Makefile | 2 +-
tools/testing/selftests/riscv/cfi/.gitignore | 3 +
tools/testing/selftests/riscv/cfi/Makefile | 16 +
tools/testing/selftests/riscv/cfi/cfi_rv_test.h | 82 ++++
tools/testing/selftests/riscv/cfi/riscv_cfi_test.c | 173 +++++++
tools/testing/selftests/riscv/cfi/shadowstack.c | 385 +++++++++++++++
tools/testing/selftests/riscv/cfi/shadowstack.h | 27 +
62 files changed, 2475 insertions(+), 41 deletions(-)
---
base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
change-id: 20240930-v5_user_cfi_series-3dc332f8f5b2
--
- debug
Overall, we encountered a warning [1] that can be triggered by running the
selftest I provided.
MPTCP creates subflows for data transmission between two endpoints.
However, BPF can use sockops to perform additional operations when TCP
completes the three-way handshake. The issue arose because we used sockmap
in sockops, which replaces sk->sk_prot and some handlers. Since subflows
also have their own specialized handlers, this creates a conflict and leads
to traffic failure. Therefore, we need to reject operations targeting
subflows.
This patchset simply prevents the combination of subflows and sockmap
without changing any functionality.
A complete integration of MPTCP and sockmap would require more effort, for
example, we would need to retrieve the parent socket from subflows in
sockmap and implement handlers like read_skb.
If maintainers don't object, we can further improve this in subsequent
work.
v1: https://lore.kernel.org/mptcp/a0a2b87119a06c5ffaa51427a0964a05534fe6f1@linu…
[1] truncated warning:
[ 18.234652] ------------[ cut here ]------------
[ 18.234664] WARNING: CPU: 1 PID: 388 at net/mptcp/protocol.c:68 mptcp_stream_accept+0x34c/0x380
[ 18.234726] Modules linked in:
[ 18.234755] RIP: 0010:mptcp_stream_accept+0x34c/0x380
[ 18.234762] RSP: 0018:ffffc90000cf3cf8 EFLAGS: 00010202
[ 18.234800] PKRU: 55555554
[ 18.234806] Call Trace:
[ 18.234810] <TASK>
[ 18.234837] do_accept+0xeb/0x190
[ 18.234861] ? __x64_sys_pselect6+0x61/0x80
[ 18.234898] ? _raw_spin_unlock+0x12/0x30
[ 18.234915] ? alloc_fd+0x11e/0x190
[ 18.234925] __sys_accept4+0x8c/0x100
[ 18.234930] __x64_sys_accept+0x1f/0x30
[ 18.234933] x64_sys_call+0x202f/0x20f0
[ 18.234966] do_syscall_64+0x72/0x9a0
[ 18.234979] ? switch_fpu_return+0x60/0xf0
[ 18.234993] ? irqentry_exit_to_user_mode+0xdb/0x1e0
[ 18.235002] ? irqentry_exit+0x3f/0x50
[ 18.235005] ? clear_bhb_loop+0x50/0xa0
[ 18.235022] ? clear_bhb_loop+0x50/0xa0
[ 18.235025] ? clear_bhb_loop+0x50/0xa0
[ 18.235028] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 18.235066] </TASK>
[ 18.235109] ---[ end trace 0000000000000000 ]---
[ 18.235677] sockmap: MPTCP sockets are not supported
Jiayuan Chen (3):
net,mptcp: fix incorrect IPv4/IPv6 fallback detection with BPF Sockmap
bpf,sockmap: disallow MPTCP sockets from sockmap updates
selftests/bpf: Add mptcp test with sockmap
net/core/sock_map.c | 9 ++
net/mptcp/protocol.c | 7 +-
.../testing/selftests/bpf/prog_tests/mptcp.c | 136 ++++++++++++++++++
.../selftests/bpf/progs/mptcp_sockmap.c | 43 ++++++
4 files changed, 193 insertions(+), 2 deletions(-)
create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sockmap.c
--
2.43.0
DAMON maintains the targets in a list, and allows committing only an
entire list of targets having the new parameters. Targets having same
index on the lists are treated as matching source and destination
targets. If an existing target cannot find a matching one in the
sources list, the target is removed. This means that there is no way to
remove only a specific monitoring target in the middle of the current
targets list.
Such pin-point target removal is really needed in some use cases,
though. Monitoring access patterns on virtual address spaces of
processes that spawned from the same ancestor is one example. If a
process of the group is terminated, the user may want to remove the
matching DAMON target as soon as possible, to save in-kernel memory
usage for the unnecessary target data. The user may also want to do
that without turning DAMON off or removing unnecessary targets, to keep
the current monitoring results for other active processes.
Extend DAMON kernel API and sysfs ABI to support the pin-point removal
in the following way. For API, add a new damon_target field, namely
'obsolete'. If the field on parameters commit source target is set, it
means the matching destination target is obsolete. Then the parameters
commit logic removes the destination target from the existing targets
list. For sysfs ABI, add a new file under the target directory, namely
'obsolete_target'. It is connected with the 'obsolete' field of the
commit source targets, so internally using the new API.
Also add a selftest for the new feature. The related helper scripts for
manipulating the sysfs interface and dumping in-kernel DAMON status are
also extended for this. Note that the selftest part was initially
posted as an individual RFC series [1], but now merged into this one.
Bijan Tabatabai (bijan311(a)gmail.com) has originally reported this issue,
and participated in this solution design on a GitHub issue [1] for DAMON
user-space tool.
Changes from RFC
(https://lore.kernel.org/20251016214736.84286-1-sj@kernel.org)
- Wordsmith commit messages
- Add Reviewed-by: tags from Bijan
- Add a kselftest for the functionality of the new feature
(https://lore.kernel.org/20251018204448.8906-1-sj@kernel.org)
[1] https://github.com/damonitor/damo/issues/36
SeongJae Park (9):
mm/damon/core: add damon_target->obsolete for pin-point removal
mm/damon/sysfs: test commit input against realistic destination
mm/damon/sysfs: implement obsolete_target file
Docs/admin-guide/mm/damon/usage: document obsolete_target file
Docs/ABI/damon: document obsolete_target sysfs file
selftests/damon/_damon_sysfs: support obsolete_target file
drgn_dump_damon_status: dump damon_target->obsolete
sysfs.py: extend assert_ctx_committed() for monitoring targets
selftests/damon/sysfs: add obsolete_target test
.../ABI/testing/sysfs-kernel-mm-damon | 7 +++
Documentation/admin-guide/mm/damon/usage.rst | 13 +++--
include/linux/damon.h | 6 +++
mm/damon/core.c | 10 +++-
mm/damon/sysfs.c | 51 ++++++++++++++++++-
tools/testing/selftests/damon/_damon_sysfs.py | 11 +++-
.../selftests/damon/drgn_dump_damon_status.py | 1 +
tools/testing/selftests/damon/sysfs.py | 48 +++++++++++++++++
8 files changed, 140 insertions(+), 7 deletions(-)
base-commit: a3e008fdd7964bc3e6d876491c202d476406ed59
--
2.47.3
This series introduces stats counters for psp. Device key rotations,
and so called 'stale-events' are common to all drivers and are tracked
by the core.
A driver facing api is provided for reporting stats required by the
"Implementation Requirements" section of the PSP Architecture
Specification. Drivers must implement these stats.
Lastly, implementations of the driver stats api for mlx5 and netdevsim
are included.
Here is the output of running the psp selftest suite and then
printing out stats with the ynl cli on system with a psp-capable CX7:
$ ./ksft-psp-stats/drivers/net/psp.py
TAP version 13
1..28
ok 1 psp.test_case # SKIP Test requires IPv4 connectivity
ok 2 psp.data_basic_send_v0_ip6
ok 3 psp.test_case # SKIP Test requires IPv4 connectivity
ok 4 psp.data_basic_send_v1_ip6
ok 5 psp.test_case # SKIP Test requires IPv4 connectivity
ok 6 psp.data_basic_send_v2_ip6 # SKIP ('PSP version not supported', 'hdr0-aes-gmac-128')
ok 7 psp.test_case # SKIP Test requires IPv4 connectivity
ok 8 psp.data_basic_send_v3_ip6 # SKIP ('PSP version not supported', 'hdr0-aes-gmac-256')
ok 9 psp.test_case # SKIP Test requires IPv4 connectivity
ok 10 psp.data_mss_adjust_ip6
ok 11 psp.dev_list_devices
ok 12 psp.dev_get_device
ok 13 psp.dev_get_device_bad
ok 14 psp.dev_rotate
ok 15 psp.dev_rotate_spi
ok 16 psp.assoc_basic
ok 17 psp.assoc_bad_dev
ok 18 psp.assoc_sk_only_conn
ok 19 psp.assoc_sk_only_mismatch
ok 20 psp.assoc_sk_only_mismatch_tx
ok 21 psp.assoc_sk_only_unconn
ok 22 psp.assoc_version_mismatch
ok 23 psp.assoc_twice
ok 24 psp.data_send_bad_key
ok 25 psp.data_send_disconnect
ok 26 psp.data_stale_key
ok 27 psp.removal_device_rx # XFAIL Test only works on netdevsim
ok 28 psp.removal_device_bi # XFAIL Test only works on netdevsim
# Totals: pass:19 fail:0 xfail:2 xpass:0 skip:7 error:0
#
# Responder logs (0):
# STDERR:
# Set PSP enable on device 1 to 0x3
# Set PSP enable on device 1 to 0x0
$ cd ynl/
$ ./pyynl/cli.py --spec netlink/specs/psp.yaml --dump get-stats
[{'dev-id': 1,
'key-rotations': 5,
'rx-auth-fail': 21,
'rx-bad': 0,
'rx-bytes': 11844,
'rx-error': 0,
'rx-packets': 94,
'stale-events': 6,
'tx-bytes': 1128456,
'tx-error': 0,
'tx-packets': 780}]
Daniel Zahka (2):
selftests: drv-net: psp: add assertions on core-tracked psp dev stats
netdevsim: implement psp device stats
Jakub Kicinski (3):
psp: report basic stats from the core
psp: add stats from psp spec to driver facing api
net/mlx5e: Add PSP stats support for Rx/Tx flows
Documentation/netlink/specs/psp.yaml | 95 +++++++
.../mellanox/mlx5/core/en_accel/psp.c | 239 ++++++++++++++++--
.../mellanox/mlx5/core/en_accel/psp.h | 18 ++
.../mellanox/mlx5/core/en_accel/psp_rxtx.c | 1 +
.../net/ethernet/mellanox/mlx5/core/en_main.c | 5 +
drivers/net/netdevsim/netdevsim.h | 5 +
drivers/net/netdevsim/psp.c | 27 ++
include/net/psp/types.h | 35 +++
include/uapi/linux/psp.h | 18 ++
net/psp/psp-nl-gen.c | 19 ++
net/psp/psp-nl-gen.h | 2 +
net/psp/psp_main.c | 3 +-
net/psp/psp_nl.c | 99 ++++++++
net/psp/psp_sock.c | 4 +-
tools/testing/selftests/drivers/net/psp.py | 13 +
15 files changed, 566 insertions(+), 17 deletions(-)
--
2.47.3
Prior to commit 9245fd6b8531 ("KVM: x86: model canonical checks more
precisely"), KVM_SET_NESTED_STATE would fail if the state was captured
with L2 active, L1 had CR4.LA57 set, L2 did not, and the
VMCS12.HOST_GSBASE (or other host-state field checked for canonicality)
had an address greater than 48 bits wide.
Add a regression test that reproduces the KVM_SET_NESTED_STATE failure
conditions. To do so, the first three patches add support for 5-level
paging in the selftest L1 VM.
Jim Mattson (4):
KVM: selftests: Use a loop to create guest page tables
KVM: selftests: Use a loop to walk guest page tables
KVM: selftests: Add VM_MODE_PXXV57_4K VM mode
KVM: selftests: Add a VMX test for LA57 nested state
tools/testing/selftests/kvm/Makefile.kvm | 1 +
.../testing/selftests/kvm/include/kvm_util.h | 1 +
tools/testing/selftests/kvm/lib/kvm_util.c | 21 +++
.../testing/selftests/kvm/lib/x86/processor.c | 66 ++++-----
tools/testing/selftests/kvm/lib/x86/vmx.c | 7 +-
.../kvm/x86/vmx_la57_nested_state_test.c | 137 ++++++++++++++++++
6 files changed, 195 insertions(+), 38 deletions(-)
create mode 100644 tools/testing/selftests/kvm/x86/vmx_la57_nested_state_test.c
--
2.51.0.470.ga7dc726c21-goog
This series fixes a race condition in netconsole's userdata handling
where concurrent message transmission could read partially updated
userdata fields, resulting in corrupted netconsole output.
The first patch adds a selftest that reproduces the race condition by
continuously sending messages while rapidly changing userdata values,
detecting any torn reads in the output.
The second patch fixes the issue by ensuring update_userdata() holds
the target_list_lock while updating both extradata_complete and
userdata_length, preventing readers from seeing inconsistent state.
This targets net tree as it fixes a bug introduced in commit df03f830d099
("net: netconsole: cache userdata formatted string in netconsole_target").
Signed-off-by: Gustavo Luiz Duarte <gustavold(a)gmail.com>
---
Gustavo Luiz Duarte (2):
selftests: netconsole: Add race condition test for userdata corruption
netconsole: Fix race condition in between reader and writer of userdata
drivers/net/netconsole.c | 5 ++
.../selftests/drivers/net/netcons_race_userdata.sh | 87 ++++++++++++++++++++++
2 files changed, 92 insertions(+)
---
base-commit: ffff5c8fc2af2218a3332b3d5b97654599d50cde
change-id: 20251020-netconsole-fix-race-f465f37b57ea
Best regards,
--
Gustavo Luiz Duarte <gustavold(a)gmail.com>