Skip to content

Commit 5f5517c

Browse files
committed
Merge tag 'v6.18.18' into 6.18-main
This is the 6.18.18 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmm0OjMACgkQONu9yGCS # aT7yVw//bkqno7FMNjD7GRXiXHl62dY0pSvWOhuOI+gl12wDEaaAikJ5PgrlzeYf # GfasRYpbeoFfNSu8opo4cyScrj9TuzmcfJhZCEXXuZBQe2S/G9GdTQE0+AjEbT9k # VuugJH9pSiJyc56fCqs1ckeGX2Cq2GYhvftVbnKKTpTnr+DjJe26PIgweo8KpZh3 # MJnXKjsUnmCb8VvSFGeb6AFCIQjHe3b3epbnhFJ7LOto0w6S+fgY5ZVLqCFuG68s # N5Awd9pXHEI3t+u6tBGkGJek4DkaURbe2nnqSm1vDkKLT6L1uU9Y/49g4S8T+S05 # brNTkAPPL+Hsoe18C4mI3ng/4uhUMkucn/+J4wxNzimzDHiS3Z2P1gEIHGQK0V+u # eia7zevyjtf0wuf9Pp1Phk5bPI0772r22XLTXujodjOm9dEoL0DUfdChDSi6ktnC # xA9MTQGRmba4XTyi1w+NEHFBcynXOZbi9CAboY82b/rwdxX+7Horvzk/Prqg6zBt # GFiHLue2El4fDtM4sXqs8N6PPoL2B5bGglwjGhjE44OAA7XHNuRTKp4THMSb6TE8 # DaswYLfrUlthbzosiJ/YMIG8r9ohdC/bHY1McqybsOU2zU7qYXPWhyNOQXoqmWEz # FmywXeo1olFi1yW0T/gFgM3RhvKp1JUeVPdjh+oOgmtwUE0+SfI= # =2acx # -----END PGP SIGNATURE----- # gpg: Signature made Fri Mar 13 17:24:19 2026 CET # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents aa4b455 + 3318f10 commit 5f5517c

20 files changed

Lines changed: 592 additions & 263 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 18
4-
SUBLEVEL = 17
4+
SUBLEVEL = 18
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

drivers/ata/libata-eh.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,7 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
659659
*/
660660
WARN_ON_ONCE(qc->flags & ATA_QCFLAG_ACTIVE);
661661
ap->deferred_qc = NULL;
662+
cancel_work(&ap->deferred_qc_work);
662663
set_host_byte(scmd, DID_TIME_OUT);
663664
scsi_eh_finish_cmd(scmd, &ap->eh_done_q);
664665
} else if (i < ATA_MAX_QUEUE) {

drivers/ata/libata-scsi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,6 +1698,7 @@ void ata_scsi_requeue_deferred_qc(struct ata_port *ap)
16981698

16991699
scmd = qc->scsicmd;
17001700
ap->deferred_qc = NULL;
1701+
cancel_work(&ap->deferred_qc_work);
17011702
ata_qc_free(qc);
17021703
scmd->result = (DID_SOFT_ERROR << 16);
17031704
scsi_done(scmd);

include/net/act_api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct tc_action {
7070
#define TCA_ACT_FLAGS_REPLACE (1U << (TCA_ACT_FLAGS_USER_BITS + 2))
7171
#define TCA_ACT_FLAGS_NO_RTNL (1U << (TCA_ACT_FLAGS_USER_BITS + 3))
7272
#define TCA_ACT_FLAGS_AT_INGRESS (1U << (TCA_ACT_FLAGS_USER_BITS + 4))
73+
#define TCA_ACT_FLAGS_AT_INGRESS_OR_CLSACT (1U << (TCA_ACT_FLAGS_USER_BITS + 5))
7374

7475
/* Update lastuse only if needed, to avoid dirtying a cache line.
7576
* We use a temp variable to avoid fetching jiffies twice.

include/net/tc_act/tc_gate.h

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@ struct tcf_gate_params {
3232
s32 tcfg_clockid;
3333
size_t num_entries;
3434
struct list_head entries;
35+
struct rcu_head rcu;
3536
};
3637

3738
#define GATE_ACT_GATE_OPEN BIT(0)
3839
#define GATE_ACT_PENDING BIT(1)
3940

4041
struct tcf_gate {
4142
struct tc_action common;
42-
struct tcf_gate_params param;
43+
struct tcf_gate_params __rcu *param;
4344
u8 current_gate_status;
4445
ktime_t current_close_time;
4546
u32 current_entry_octets;
@@ -51,47 +52,65 @@ struct tcf_gate {
5152

5253
#define to_gate(a) ((struct tcf_gate *)a)
5354

55+
static inline struct tcf_gate_params *tcf_gate_params_locked(const struct tc_action *a)
56+
{
57+
struct tcf_gate *gact = to_gate(a);
58+
59+
return rcu_dereference_protected(gact->param,
60+
lockdep_is_held(&gact->tcf_lock));
61+
}
62+
5463
static inline s32 tcf_gate_prio(const struct tc_action *a)
5564
{
65+
struct tcf_gate_params *p;
5666
s32 tcfg_prio;
5767

58-
tcfg_prio = to_gate(a)->param.tcfg_priority;
68+
p = tcf_gate_params_locked(a);
69+
tcfg_prio = p->tcfg_priority;
5970

6071
return tcfg_prio;
6172
}
6273

6374
static inline u64 tcf_gate_basetime(const struct tc_action *a)
6475
{
76+
struct tcf_gate_params *p;
6577
u64 tcfg_basetime;
6678

67-
tcfg_basetime = to_gate(a)->param.tcfg_basetime;
79+
p = tcf_gate_params_locked(a);
80+
tcfg_basetime = p->tcfg_basetime;
6881

6982
return tcfg_basetime;
7083
}
7184

7285
static inline u64 tcf_gate_cycletime(const struct tc_action *a)
7386
{
87+
struct tcf_gate_params *p;
7488
u64 tcfg_cycletime;
7589

76-
tcfg_cycletime = to_gate(a)->param.tcfg_cycletime;
90+
p = tcf_gate_params_locked(a);
91+
tcfg_cycletime = p->tcfg_cycletime;
7792

7893
return tcfg_cycletime;
7994
}
8095

8196
static inline u64 tcf_gate_cycletimeext(const struct tc_action *a)
8297
{
98+
struct tcf_gate_params *p;
8399
u64 tcfg_cycletimeext;
84100

85-
tcfg_cycletimeext = to_gate(a)->param.tcfg_cycletime_ext;
101+
p = tcf_gate_params_locked(a);
102+
tcfg_cycletimeext = p->tcfg_cycletime_ext;
86103

87104
return tcfg_cycletimeext;
88105
}
89106

90107
static inline u32 tcf_gate_num_entries(const struct tc_action *a)
91108
{
109+
struct tcf_gate_params *p;
92110
u32 num_entries;
93111

94-
num_entries = to_gate(a)->param.num_entries;
112+
p = tcf_gate_params_locked(a);
113+
num_entries = p->num_entries;
95114

96115
return num_entries;
97116
}
@@ -105,7 +124,7 @@ static inline struct action_gate_entry
105124
u32 num_entries;
106125
int i = 0;
107126

108-
p = &to_gate(a)->param;
127+
p = tcf_gate_params_locked(a);
109128
num_entries = p->num_entries;
110129

111130
list_for_each_entry(entry, &p->entries, list)

net/sched/act_ct.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,6 +1358,12 @@ static int tcf_ct_init(struct net *net, struct nlattr *nla,
13581358
return -EINVAL;
13591359
}
13601360

1361+
if (bind && !(flags & TCA_ACT_FLAGS_AT_INGRESS_OR_CLSACT)) {
1362+
NL_SET_ERR_MSG_MOD(extack,
1363+
"Attaching ct to a non ingress/clsact qdisc is unsupported");
1364+
return -EOPNOTSUPP;
1365+
}
1366+
13611367
err = nla_parse_nested(tb, TCA_CT_MAX, nla, ct_policy, extack);
13621368
if (err < 0)
13631369
return err;

0 commit comments

Comments
 (0)