linux-gbmc_5.15: SRCREV 4ec54d9ba4..66d64fc32a
Jeremy Kerr (5):
mctp: serial: Fix starting value for frame check sequence
mctp: avoid confusion over local/peer dest/source addresses
mctp: make key lookups match the ANY address on either local or peer
net: mctp: separate key correlation across nets
net: mctp: provide a more specific tag allocation ioctl
Paolo Abeni (1):
net: mctp: hold key reference when looking up a general key
Tested: Manually
Google-Bug-Id: 502983911
Change-Id: I05164810989222a31f1d703b6137e348ffeda959
Signed-off-by: Muhammad Usama <muhammadusama@google.com>
diff --git a/recipes-kernel/linux/files/0001-mctp-support-setting-MCTP-tag-timeout.patch b/recipes-kernel/linux/files/0001-mctp-support-setting-MCTP-tag-timeout.patch
index 944cb38..cf0b5cc 100644
--- a/recipes-kernel/linux/files/0001-mctp-support-setting-MCTP-tag-timeout.patch
+++ b/recipes-kernel/linux/files/0001-mctp-support-setting-MCTP-tag-timeout.patch
@@ -24,7 +24,7 @@
4 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/include/net/mctp.h b/include/net/mctp.h
-index d37268fe6825..4e3da43c075c 100644
+index a4c65f19757f..91e32b4e0e8f 100644
--- a/include/net/mctp.h
+++ b/include/net/mctp.h
@@ -82,6 +82,9 @@ struct mctp_sock {
@@ -38,24 +38,24 @@
* tag, and any netdev state for a request/response pairing
*/
diff --git a/include/uapi/linux/mctp.h b/include/uapi/linux/mctp.h
-index 154ab56651f1..e6529d4a7b8d 100644
+index ec9a1f372da8..7e41da951a1b 100644
--- a/include/uapi/linux/mctp.h
+++ b/include/uapi/linux/mctp.h
-@@ -51,6 +51,9 @@ struct sockaddr_mctp_ext {
- #define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
- #define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+@@ -53,6 +53,9 @@ struct sockaddr_mctp_ext {
+ #define SIOCMCTPALLOCNETTAG (SIOCPROTOPRIVATE + 2)
+ #define SIOCMCTPDROPNETTAG (SIOCPROTOPRIVATE + 3)
+/* Use last slot to avoid collision with upstream */
+#define SIOCMCTPSETTAGTO (SIOCPROTOPRIVATE + 15)
+
- struct mctp_ioc_tag_ctl {
- mctp_eid_t peer_addr;
-
+ /* Deprecated: use net_tag_ctl instead, which defines the MCTP network ID as
+ * part of the allocated tag. Using this assumes the default net ID for
+ * allocated tags, which may not give correct behaviour on system with multiple
diff --git a/net/mctp/af_mctp.c b/net/mctp/af_mctp.c
-index 786079e6d8cf..8a14900e3f94 100644
+index b4bd3c0505e7..9ebe45013e4c 100644
--- a/net/mctp/af_mctp.c
+++ b/net/mctp/af_mctp.c
-@@ -416,6 +416,17 @@ static int mctp_ioctl_droptag(struct mctp_sock *msk, unsigned long arg)
+@@ -452,6 +452,17 @@ static int mctp_ioctl_droptag(struct mctp_sock *msk, bool use_net,
return rc;
}
@@ -73,16 +73,16 @@
static int mctp_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
struct mctp_sock *msk = container_of(sock->sk, struct mctp_sock, sk);
-@@ -425,6 +436,8 @@ static int mctp_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
- return mctp_ioctl_alloctag(msk, arg);
- case SIOCMCTPDROPTAG:
- return mctp_ioctl_droptag(msk, arg);
+@@ -466,6 +477,8 @@ static int mctp_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
+ case SIOCMCTPDROPNETTAG:
+ use_net = cmd == SIOCMCTPDROPNETTAG;
+ return mctp_ioctl_droptag(msk, use_net, arg);
+ case SIOCMCTPSETTAGTO:
+ return mctp_ioctl_settagto(msk, arg);
}
return -EINVAL;
-@@ -518,6 +531,8 @@ static int mctp_sk_init(struct sock *sk)
+@@ -559,6 +572,8 @@ static int mctp_sk_init(struct sock *sk)
struct mctp_sock *msk = container_of(sk, struct mctp_sock, sk);
INIT_HLIST_HEAD(&msk->keys);
@@ -92,7 +92,7 @@
return 0;
}
diff --git a/net/mctp/route.c b/net/mctp/route.c
-index b9a293c1c49c..3a41a23d2f74 100644
+index 404a06690fa5..857f97c955be 100644
--- a/net/mctp/route.c
+++ b/net/mctp/route.c
@@ -27,7 +27,6 @@
@@ -103,7 +103,7 @@
static void mctp_flow_prepare_output(struct sk_buff *skb, struct mctp_dev *dev);
-@@ -196,7 +195,7 @@ static int mctp_key_add(struct mctp_sk_key *key, struct mctp_sock *msk)
+@@ -201,7 +200,7 @@ static int mctp_key_add(struct mctp_sk_key *key, struct mctp_sock *msk)
if (!rc) {
refcount_inc(&key->refs);
@@ -112,7 +112,7 @@
timer_reduce(&msk->key_expiry, key->expiry);
hlist_add_head(&key->hlist, &net->mctp.keys);
-@@ -578,7 +577,7 @@ static void mctp_reserve_tag(struct net *net, struct mctp_sk_key *key,
+@@ -588,7 +587,7 @@ static void mctp_reserve_tag(struct net *net, struct mctp_sk_key *key,
lockdep_assert_held(&mns->keys_lock);
@@ -122,5 +122,5 @@
/* we hold the net->key_lock here, allowing updates to both
--
-2.48.1.362.g079036d154-goog
+2.54.0.545.g6539524ca2-goog
diff --git a/recipes-kernel/linux/linux-gbmc_5.15.bb b/recipes-kernel/linux/linux-gbmc_5.15.bb
index 64388a3..53b307a 100644
--- a/recipes-kernel/linux/linux-gbmc_5.15.bb
+++ b/recipes-kernel/linux/linux-gbmc_5.15.bb
@@ -2,7 +2,7 @@
KBRANCH = "gbmc-5.15"
LINUX_VERSION = "5.15.167"
-SRCREV = "4ec54d9ba4baf451b127908651f870c108a6f4f5"
+SRCREV = "66d64fc32a10928d336107bb78761bd40a98e451"
PV = "${LINUX_VERSION}+git${SRCPV}"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"