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"