]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.19
authorSasha Levin <sashal@kernel.org>
Sat, 12 Feb 2022 05:44:13 +0000 (00:44 -0500)
committerSasha Levin <sashal@kernel.org>
Sat, 12 Feb 2022 05:44:13 +0000 (00:44 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.19/net-sched-clarify-error-message-when-qdisc-kind-is-u.patch [new file with mode: 0644]
queue-4.19/net-stmmac-dwmac-sun8i-use-return-val-of-readl_poll_.patch [new file with mode: 0644]
queue-4.19/nfs-nfs4clinet-check-the-return-value-of-kstrdup.patch [new file with mode: 0644]
queue-4.19/nfsv4-expose-nfs_parse_server_name-function.patch [new file with mode: 0644]
queue-4.19/nfsv4-only-print-the-label-when-its-queried.patch [new file with mode: 0644]
queue-4.19/nfsv4-remove-zero-number-of-fs_locations-entries-err.patch [new file with mode: 0644]
queue-4.19/nfsv4.1-fix-uninitialised-variable-in-devicenotify.patch [new file with mode: 0644]
queue-4.19/scsi-target-iscsi-make-sure-the-np-under-each-tpg-is.patch [new file with mode: 0644]
queue-4.19/series
queue-4.19/usb-dwc2-gadget-don-t-try-to-disable-ep0-in-dwc2_hso.patch [new file with mode: 0644]

diff --git a/queue-4.19/net-sched-clarify-error-message-when-qdisc-kind-is-u.patch b/queue-4.19/net-sched-clarify-error-message-when-qdisc-kind-is-u.patch
new file mode 100644 (file)
index 0000000..7b34357
--- /dev/null
@@ -0,0 +1,41 @@
+From f6315dedcf3b6de57c088b583b0af0cc31b44293 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 18 Jan 2022 14:19:09 -0300
+Subject: net: sched: Clarify error message when qdisc kind is unknown
+
+From: Victor Nogueira <victor@mojatatu.com>
+
+[ Upstream commit 973bf8fdd12f0e70ea351c018e68edd377a836d1 ]
+
+When adding a tc rule with a qdisc kind that is not supported or not
+compiled into the kernel, the kernel emits the following error: "Error:
+Specified qdisc not found.". Found via tdc testing when ETS qdisc was not
+compiled in and it was not obvious right away what the message meant
+without looking at the kernel code.
+
+Change the error message to be more explicit and say the qdisc kind is
+unknown.
+
+Signed-off-by: Victor Nogueira <victor@mojatatu.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/sched/sch_api.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
+index af035431bec60..424e70907b967 100644
+--- a/net/sched/sch_api.c
++++ b/net/sched/sch_api.c
+@@ -1131,7 +1131,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev,
+       err = -ENOENT;
+       if (!ops) {
+-              NL_SET_ERR_MSG(extack, "Specified qdisc not found");
++              NL_SET_ERR_MSG(extack, "Specified qdisc kind is unknown");
+               goto err_out;
+       }
+-- 
+2.34.1
+
diff --git a/queue-4.19/net-stmmac-dwmac-sun8i-use-return-val-of-readl_poll_.patch b/queue-4.19/net-stmmac-dwmac-sun8i-use-return-val-of-readl_poll_.patch
new file mode 100644 (file)
index 0000000..534d7eb
--- /dev/null
@@ -0,0 +1,42 @@
+From 9b85083d69a740a147e73804a64eeef482542a36 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 27 Jan 2022 00:52:15 +0800
+Subject: net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout()
+
+From: Jisheng Zhang <jszhang@kernel.org>
+
+[ Upstream commit 9e0db41e7a0b6f1271cbcfb16dbf5b8641b4e440 ]
+
+When readl_poll_timeout() timeout, we'd better directly use its return
+value.
+
+Before this patch:
+[    2.145528] dwmac-sun8i: probe of 4500000.ethernet failed with error -14
+
+After this patch:
+[    2.138520] dwmac-sun8i: probe of 4500000.ethernet failed with error -110
+
+Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
+Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+index 4382deaeb570d..0137cba2cb54b 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+@@ -712,7 +712,7 @@ static int sun8i_dwmac_reset(struct stmmac_priv *priv)
+       if (err) {
+               dev_err(priv->device, "EMAC reset timeout\n");
+-              return -EFAULT;
++              return err;
+       }
+       return 0;
+ }
+-- 
+2.34.1
+
diff --git a/queue-4.19/nfs-nfs4clinet-check-the-return-value-of-kstrdup.patch b/queue-4.19/nfs-nfs4clinet-check-the-return-value-of-kstrdup.patch
new file mode 100644 (file)
index 0000000..d1d4d02
--- /dev/null
@@ -0,0 +1,40 @@
+From 3e77d4909f5c9669e8d3f6a1c34b1c66a5273c3d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 17 Dec 2021 01:01:33 +0800
+Subject: nfs: nfs4clinet: check the return value of kstrdup()
+
+From: Xiaoke Wang <xkernel.wang@foxmail.com>
+
+[ Upstream commit fbd2057e5329d3502a27491190237b6be52a1cb6 ]
+
+kstrdup() returns NULL when some internal memory errors happen, it is
+better to check the return value of it so to catch the memory error in
+time.
+
+Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/nfs4client.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
+index 43659326b5191..c97ec2fa0bbcd 100644
+--- a/fs/nfs/nfs4client.c
++++ b/fs/nfs/nfs4client.c
+@@ -1273,8 +1273,11 @@ int nfs4_update_server(struct nfs_server *server, const char *hostname,
+       }
+       nfs_put_client(clp);
+-      if (server->nfs_client->cl_hostname == NULL)
++      if (server->nfs_client->cl_hostname == NULL) {
+               server->nfs_client->cl_hostname = kstrdup(hostname, GFP_KERNEL);
++              if (server->nfs_client->cl_hostname == NULL)
++                      return -ENOMEM;
++      }
+       nfs_server_insert_lists(server);
+       return nfs_probe_destination(server);
+-- 
+2.34.1
+
diff --git a/queue-4.19/nfsv4-expose-nfs_parse_server_name-function.patch b/queue-4.19/nfsv4-expose-nfs_parse_server_name-function.patch
new file mode 100644 (file)
index 0000000..cbc7f51
--- /dev/null
@@ -0,0 +1,51 @@
+From a2ed7a395c8f352c41cd7a01906ac08eaaaf3af9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 9 Dec 2021 14:53:32 -0500
+Subject: NFSv4 expose nfs_parse_server_name function
+
+From: Olga Kornievskaia <kolga@netapp.com>
+
+[ Upstream commit f5b27cc6761e27ee6387a24df1a99ca77b360fea ]
+
+Make nfs_parse_server_name available outside of nfs4namespace.c.
+
+Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/nfs4_fs.h       | 3 ++-
+ fs/nfs/nfs4namespace.c | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
+index 4dc9bd7ddf073..5ac7bf24c507b 100644
+--- a/fs/nfs/nfs4_fs.h
++++ b/fs/nfs/nfs4_fs.h
+@@ -276,7 +276,8 @@ struct vfsmount *nfs4_submount(struct nfs_server *, struct dentry *,
+                              struct nfs_fh *, struct nfs_fattr *);
+ int nfs4_replace_transport(struct nfs_server *server,
+                               const struct nfs4_fs_locations *locations);
+-
++size_t nfs_parse_server_name(char *string, size_t len, struct sockaddr *sa,
++                           size_t salen, struct net *net);
+ /* nfs4proc.c */
+ extern int nfs4_handle_exception(struct nfs_server *, int, struct nfs4_exception *);
+ extern int nfs4_async_handle_error(struct rpc_task *task,
+diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c
+index 24f06dcc2b08e..936c412be28ef 100644
+--- a/fs/nfs/nfs4namespace.c
++++ b/fs/nfs/nfs4namespace.c
+@@ -121,8 +121,8 @@ static int nfs4_validate_fspath(struct dentry *dentry,
+       return 0;
+ }
+-static size_t nfs_parse_server_name(char *string, size_t len,
+-              struct sockaddr *sa, size_t salen, struct net *net)
++size_t nfs_parse_server_name(char *string, size_t len, struct sockaddr *sa,
++                           size_t salen, struct net *net)
+ {
+       ssize_t ret;
+-- 
+2.34.1
+
diff --git a/queue-4.19/nfsv4-only-print-the-label-when-its-queried.patch b/queue-4.19/nfsv4-only-print-the-label-when-its-queried.patch
new file mode 100644 (file)
index 0000000..80c2d9e
--- /dev/null
@@ -0,0 +1,42 @@
+From cadbe250eb8a58a878ebadfb7998b1f242515db3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 29 Nov 2021 15:33:56 -0500
+Subject: NFSv4 only print the label when its queried
+
+From: Olga Kornievskaia <kolga@netapp.com>
+
+[ Upstream commit 2c52c8376db7160a1dd8a681c61c9258405ef143 ]
+
+When the bitmask of the attributes doesn't include the security label,
+don't bother printing it. Since the label might not be null terminated,
+adjust the printing format accordingly.
+
+Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/nfs4xdr.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
+index 0a5cae8f8aff9..8a61dc21d3d68 100644
+--- a/fs/nfs/nfs4xdr.c
++++ b/fs/nfs/nfs4xdr.c
+@@ -4294,10 +4294,11 @@ static int decode_attr_security_label(struct xdr_stream *xdr, uint32_t *bitmap,
+               } else
+                       printk(KERN_WARNING "%s: label too long (%u)!\n",
+                                       __func__, len);
++              if (label && label->label)
++                      dprintk("%s: label=%.*s, len=%d, PI=%d, LFS=%d\n",
++                              __func__, label->len, (char *)label->label,
++                              label->len, label->pi, label->lfs);
+       }
+-      if (label && label->label)
+-              dprintk("%s: label=%s, len=%d, PI=%d, LFS=%d\n", __func__,
+-                      (char *)label->label, label->len, label->pi, label->lfs);
+       return status;
+ out_overflow:
+-- 
+2.34.1
+
diff --git a/queue-4.19/nfsv4-remove-zero-number-of-fs_locations-entries-err.patch b/queue-4.19/nfsv4-remove-zero-number-of-fs_locations-entries-err.patch
new file mode 100644 (file)
index 0000000..e751fec
--- /dev/null
@@ -0,0 +1,50 @@
+From 0d16a4447ccddf6a788d1c010bd985d04cefba54 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 9 Dec 2021 14:53:29 -0500
+Subject: NFSv4 remove zero number of fs_locations entries error check
+
+From: Olga Kornievskaia <kolga@netapp.com>
+
+[ Upstream commit 90e12a3191040bd3854d3e236c35921e4e92a044 ]
+
+Remove the check for the zero length fs_locations reply in the
+xdr decoding, and instead check for that in the migration code.
+
+Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/nfs4state.c | 3 +++
+ fs/nfs/nfs4xdr.c   | 2 --
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
+index b3086e99420c7..9c98547fcefcc 100644
+--- a/fs/nfs/nfs4state.c
++++ b/fs/nfs/nfs4state.c
+@@ -2066,6 +2066,9 @@ static int nfs4_try_migration(struct nfs_server *server, struct rpc_cred *cred)
+       }
+       result = -NFS4ERR_NXIO;
++      if (!locations->nlocations)
++              goto out;
++
+       if (!(locations->fattr.valid & NFS_ATTR_FATTR_V4_LOCATIONS)) {
+               dprintk("<-- %s: No fs_locations data, migration skipped\n",
+                       __func__);
+diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
+index 8a61dc21d3d68..56e48642c43eb 100644
+--- a/fs/nfs/nfs4xdr.c
++++ b/fs/nfs/nfs4xdr.c
+@@ -3747,8 +3747,6 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st
+       if (unlikely(!p))
+               goto out_overflow;
+       n = be32_to_cpup(p);
+-      if (n <= 0)
+-              goto out_eio;
+       for (res->nlocations = 0; res->nlocations < n; res->nlocations++) {
+               u32 m;
+               struct nfs4_fs_location *loc;
+-- 
+2.34.1
+
diff --git a/queue-4.19/nfsv4.1-fix-uninitialised-variable-in-devicenotify.patch b/queue-4.19/nfsv4.1-fix-uninitialised-variable-in-devicenotify.patch
new file mode 100644 (file)
index 0000000..3b3d9a8
--- /dev/null
@@ -0,0 +1,106 @@
+From 960dec67925c5c9fdf27daa7e5dc36075127dc27 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 3 Jan 2022 14:50:16 -0500
+Subject: NFSv4.1: Fix uninitialised variable in devicenotify
+
+From: Trond Myklebust <trond.myklebust@hammerspace.com>
+
+[ Upstream commit b05bf5c63b326ce1da84ef42498d8e0e292e694c ]
+
+When decode_devicenotify_args() exits with no entries, we need to
+ensure that the struct cb_devicenotifyargs is initialised to
+{ 0, NULL } in order to avoid problems in
+nfs4_callback_devicenotify().
+
+Reported-by: <rtm@csail.mit.edu>
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/callback.h      |  2 +-
+ fs/nfs/callback_proc.c |  2 +-
+ fs/nfs/callback_xdr.c  | 18 +++++++++---------
+ 3 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h
+index 8f34daf85f703..5d5227ce4d91e 100644
+--- a/fs/nfs/callback.h
++++ b/fs/nfs/callback.h
+@@ -168,7 +168,7 @@ struct cb_devicenotifyitem {
+ };
+ struct cb_devicenotifyargs {
+-      int                              ndevs;
++      uint32_t                         ndevs;
+       struct cb_devicenotifyitem       *devs;
+ };
+diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
+index bcc51f131a496..868d66ed8bcf6 100644
+--- a/fs/nfs/callback_proc.c
++++ b/fs/nfs/callback_proc.c
+@@ -364,7 +364,7 @@ __be32 nfs4_callback_devicenotify(void *argp, void *resp,
+                                 struct cb_process_state *cps)
+ {
+       struct cb_devicenotifyargs *args = argp;
+-      int i;
++      uint32_t i;
+       __be32 res = 0;
+       struct nfs_client *clp = cps->clp;
+       struct nfs_server *server = NULL;
+diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
+index 57558a8d92e9b..76aa1b456c524 100644
+--- a/fs/nfs/callback_xdr.c
++++ b/fs/nfs/callback_xdr.c
+@@ -268,11 +268,9 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,
+                               void *argp)
+ {
+       struct cb_devicenotifyargs *args = argp;
++      uint32_t tmp, n, i;
+       __be32 *p;
+       __be32 status = 0;
+-      u32 tmp;
+-      int n, i;
+-      args->ndevs = 0;
+       /* Num of device notifications */
+       p = read_buf(xdr, sizeof(uint32_t));
+@@ -281,7 +279,7 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,
+               goto out;
+       }
+       n = ntohl(*p++);
+-      if (n <= 0)
++      if (n == 0)
+               goto out;
+       if (n > ULONG_MAX / sizeof(*args->devs)) {
+               status = htonl(NFS4ERR_BADXDR);
+@@ -339,19 +337,21 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,
+                       dev->cbd_immediate = 0;
+               }
+-              args->ndevs++;
+-
+               dprintk("%s: type %d layout 0x%x immediate %d\n",
+                       __func__, dev->cbd_notify_type, dev->cbd_layout_type,
+                       dev->cbd_immediate);
+       }
++      args->ndevs = n;
++      dprintk("%s: ndevs %d\n", __func__, args->ndevs);
++      return 0;
++err:
++      kfree(args->devs);
+ out:
++      args->devs = NULL;
++      args->ndevs = 0;
+       dprintk("%s: status %d ndevs %d\n",
+               __func__, ntohl(status), args->ndevs);
+       return status;
+-err:
+-      kfree(args->devs);
+-      goto out;
+ }
+ static __be32 decode_sessionid(struct xdr_stream *xdr,
+-- 
+2.34.1
+
diff --git a/queue-4.19/scsi-target-iscsi-make-sure-the-np-under-each-tpg-is.patch b/queue-4.19/scsi-target-iscsi-make-sure-the-np-under-each-tpg-is.patch
new file mode 100644 (file)
index 0000000..76a5e36
--- /dev/null
@@ -0,0 +1,43 @@
+From faaee74938904140b87142d7e6607c7f064dc3a8 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 11 Jan 2022 13:47:42 +0800
+Subject: scsi: target: iscsi: Make sure the np under each tpg is unique
+
+From: ZouMingzhe <mingzhe.zou@easystack.cn>
+
+[ Upstream commit a861790afaa8b6369eee8a88c5d5d73f5799c0c6 ]
+
+iscsit_tpg_check_network_portal() has nested for_each loops and is supposed
+to return true when a match is found. However, the tpg loop will still
+continue after existing the tpg_np loop. If this tpg_np is not the last the
+match value will be changed.
+
+Break the outer loop after finding a match and make sure the np under each
+tpg is unique.
+
+Link: https://lore.kernel.org/r/20220111054742.19582-1-mingzhe.zou@easystack.cn
+Signed-off-by: ZouMingzhe <mingzhe.zou@easystack.cn>
+Reviewed-by: Mike Christie <michael.christie@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/target/iscsi/iscsi_target_tpg.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c
+index 101d62105c932..f3671ffdf1495 100644
+--- a/drivers/target/iscsi/iscsi_target_tpg.c
++++ b/drivers/target/iscsi/iscsi_target_tpg.c
+@@ -451,6 +451,9 @@ static bool iscsit_tpg_check_network_portal(
+                               break;
+               }
+               spin_unlock(&tpg->tpg_np_lock);
++
++              if (match)
++                      break;
+       }
+       spin_unlock(&tiqn->tiqn_tpg_lock);
+-- 
+2.34.1
+
index 711a27afdc2e7737bab38bb2bc187837e7993894..5b60a32aa9058919de7979ebfcb0010ccb25d71d 100644 (file)
@@ -6,3 +6,12 @@ net-phy-marvell-fix-mdi-x-polarity-setting-in-88e1118-compatible-phys.patch
 nfs-fix-initialisation-of-nfs_client-cl_flags-field.patch
 nfsd-clamp-write-offsets.patch
 nfsd-fix-offset-type-in-i-o-trace-points.patch
+nfsv4-only-print-the-label-when-its-queried.patch
+nfs-nfs4clinet-check-the-return-value-of-kstrdup.patch
+nfsv4.1-fix-uninitialised-variable-in-devicenotify.patch
+nfsv4-remove-zero-number-of-fs_locations-entries-err.patch
+nfsv4-expose-nfs_parse_server_name-function.patch
+net-sched-clarify-error-message-when-qdisc-kind-is-u.patch
+scsi-target-iscsi-make-sure-the-np-under-each-tpg-is.patch
+usb-dwc2-gadget-don-t-try-to-disable-ep0-in-dwc2_hso.patch
+net-stmmac-dwmac-sun8i-use-return-val-of-readl_poll_.patch
diff --git a/queue-4.19/usb-dwc2-gadget-don-t-try-to-disable-ep0-in-dwc2_hso.patch b/queue-4.19/usb-dwc2-gadget-don-t-try-to-disable-ep0-in-dwc2_hso.patch
new file mode 100644 (file)
index 0000000..8d166eb
--- /dev/null
@@ -0,0 +1,50 @@
+From a3cf74e819b5d97668d36b5a688892c32ac4eb05 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 7 Dec 2021 14:01:01 +0100
+Subject: usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend
+
+From: Amelie Delaunay <amelie.delaunay@foss.st.com>
+
+[ Upstream commit ac55d163855924aa5af9f1560977da8f346963c8 ]
+
+Calling dwc2_hsotg_ep_disable on ep0 (in/out) will lead to the following
+logs before returning -EINVAL:
+dwc2 49000000.usb-otg: dwc2_hsotg_ep_disable: called for ep0
+dwc2 49000000.usb-otg: dwc2_hsotg_ep_disable: called for ep0
+
+To avoid these two logs while suspending, start disabling the endpoint
+from the index 1, as done in dwc2_hsotg_udc_stop:
+
+       /* all endpoints should be shutdown */
+       for (ep = 1; ep < hsotg->num_of_eps; ep++) {
+               if (hsotg->eps_in[ep])
+                       dwc2_hsotg_ep_disable_lock(&hsotg->eps_in[ep]->ep);
+               if (hsotg->eps_out[ep])
+                       dwc2_hsotg_ep_disable_lock(&hsotg->eps_out[ep]->ep);
+       }
+
+Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
+Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
+Link: https://lore.kernel.org/r/20211207130101.270314-1-amelie.delaunay@foss.st.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/usb/dwc2/gadget.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
+index b405c8ac8984b..1e46005929e44 100644
+--- a/drivers/usb/dwc2/gadget.c
++++ b/drivers/usb/dwc2/gadget.c
+@@ -4818,7 +4818,7 @@ int dwc2_hsotg_suspend(struct dwc2_hsotg *hsotg)
+               hsotg->gadget.speed = USB_SPEED_UNKNOWN;
+               spin_unlock_irqrestore(&hsotg->lock, flags);
+-              for (ep = 0; ep < hsotg->num_of_eps; ep++) {
++              for (ep = 1; ep < hsotg->num_of_eps; ep++) {
+                       if (hsotg->eps_in[ep])
+                               dwc2_hsotg_ep_disable_lock(&hsotg->eps_in[ep]->ep);
+                       if (hsotg->eps_out[ep])
+-- 
+2.34.1
+