serial-fsl_lpuart-fix-maximum-acceptable-baud-rate-w.patch
scsi-csiostor-fix-null-pointer-dereference-in-csio_v.patch
net-altera_tse-fix-connect_local_phy-error-path.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
ibmveth-do-not-process-frames-after-calling-napi_res.patch
mac80211-don-t-initiate-tdls-connection-if-station-i.patch
cfg80211-extend-range-deviation-for-dmg.patch
+++ /dev/null
-From bb89ece55cec6219da8c30ae560fe3789601aae9 Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 010009d640174..84a17b41313c9 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -3407,22 +3407,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -3435,6 +3438,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -3463,6 +3473,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -3491,11 +3502,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-
scsi-csiostor-fix-null-pointer-dereference-in-csio_v.patch
net-altera_tse-fix-connect_local_phy-error-path.patch
hv_netvsc-fix-ethtool-change-hash-key-error.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
net-usb-asix-ax88772_bind-return-error-when-hw_reset.patch
net-dev_is_mac_header_xmit-true-for-arphrd_rawip.patch
ibmveth-do-not-process-frames-after-calling-napi_res.patch
+++ /dev/null
-From ffcf79025fa8805aa07366b85d8ea3e9c6476cee Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 09352ee43b55c..cc3be94d05622 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -5852,22 +5852,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -5880,6 +5883,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -5908,6 +5918,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -5936,11 +5947,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-
hv_netvsc-fix-ethtool-change-hash-key-error.patch
hv_netvsc-refactor-assignments-of-struct-netvsc_devi.patch
hv_netvsc-fix-hash-key-value-reset-after-other-ops.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
nvme-rdma-fix-timeout-handler.patch
nvme-multipath-drop-optimization-for-static-ana-grou.patch
drm-msm-fix-a6xx-support-for-opp-level.patch
+++ /dev/null
-From 43065648286549fee83fdc0ab9f1132ad8427864 Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 7eeac3d6cfe89..a497aace7e4f4 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -6042,22 +6042,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -6070,6 +6073,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -6098,6 +6108,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -6126,11 +6137,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-
hv_netvsc-fix-ethtool-change-hash-key-error.patch
hv_netvsc-refactor-assignments-of-struct-netvsc_devi.patch
hv_netvsc-fix-hash-key-value-reset-after-other-ops.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
nvme-rdma-fix-timeout-handler.patch
nvme-multipath-drop-optimization-for-static-ana-grou.patch
cifs-fix-memory-leak-of-an-allocated-cifs_ntsd-struc.patch
+++ /dev/null
-From 8ab94631c3e33186e39d076d0fa882ffe9ee8a65 Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 7eeac3d6cfe89..a497aace7e4f4 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -6042,22 +6042,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -6070,6 +6073,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -6098,6 +6108,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -6126,11 +6137,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-
serial-fsl_lpuart-fix-maximum-acceptable-baud-rate-w.patch
scsi-csiostor-fix-null-pointer-dereference-in-csio_v.patch
net-altera_tse-fix-connect_local_phy-error-path.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
ibmveth-do-not-process-frames-after-calling-napi_res.patch
mac80211-don-t-initiate-tdls-connection-if-station-i.patch
cfg80211-extend-range-deviation-for-dmg.patch
+++ /dev/null
-From a919627faa376e337f5fec2242fb09cc661f9e83 Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 063aca17e698b..79a1031c3ef77 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -4433,22 +4433,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -4461,6 +4464,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -4489,6 +4499,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -4517,11 +4528,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-
direct-io-allow-direct-writes-to-empty-inodes.patch
scsi-csiostor-fix-null-pointer-dereference-in-csio_v.patch
net-altera_tse-fix-connect_local_phy-error-path.patch
-sfc-suppress-duplicate-nvmem-partition-types-in-efx_.patch
net-usb-asix-ax88772_bind-return-error-when-hw_reset.patch
ibmveth-do-not-process-frames-after-calling-napi_res.patch
mac80211-don-t-initiate-tdls-connection-if-station-i.patch
+++ /dev/null
-From c28505471f3a7566619d117d5224a896d4e03aaf Mon Sep 17 00:00:00 2001
-From: Edward Cree <ecree@solarflare.com>
-Date: Tue, 22 Jan 2019 19:02:17 +0000
-Subject: sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe
-
-[ Upstream commit 3366463513f544c12c6b88c13da4462ee9e7a1a1 ]
-
-Use a bitmap to keep track of which partition types we've already seen;
- for duplicates, return -EEXIST from efx_ef10_mtd_probe_partition() and
- thus skip adding that partition.
-Duplicate partitions occur because of the A/B backup scheme used by newer
- sfc NICs. Prior to this patch they cause sysfs_warn_dup errors because
- they have the same name, causing us not to expose any MTDs at all.
-
-Signed-off-by: Edward Cree <ecree@solarflare.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/sfc/ef10.c | 29 +++++++++++++++++++++--------
- 1 file changed, 21 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
-index 3d5d5d54c1033..34e2256c93f46 100644
---- a/drivers/net/ethernet/sfc/ef10.c
-+++ b/drivers/net/ethernet/sfc/ef10.c
-@@ -5093,22 +5093,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
- { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
- { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
- };
-+#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
-
- static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- struct efx_mcdi_mtd_partition *part,
-- unsigned int type)
-+ unsigned int type,
-+ unsigned long *found)
- {
- MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
- const struct efx_ef10_nvram_type_info *info;
- size_t size, erase_size, outlen;
-+ int type_idx = 0;
- bool protected;
- int rc;
-
-- for (info = efx_ef10_nvram_types; ; info++) {
-- if (info ==
-- efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
-+ for (type_idx = 0; ; type_idx++) {
-+ if (type_idx == EF10_NVRAM_PARTITION_COUNT)
- return -ENODEV;
-+ info = efx_ef10_nvram_types + type_idx;
- if ((type & ~info->type_mask) == info->type)
- break;
- }
-@@ -5121,6 +5124,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- if (protected)
- return -ENODEV; /* hide it */
-
-+ /* If we've already exposed a partition of this type, hide this
-+ * duplicate. All operations on MTDs are keyed by the type anyway,
-+ * so we can't act on the duplicate.
-+ */
-+ if (__test_and_set_bit(type_idx, found))
-+ return -EEXIST;
-+
- part->nvram_type = type;
-
- MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
-@@ -5149,6 +5159,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
- static int efx_ef10_mtd_probe(struct efx_nic *efx)
- {
- MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
-+ DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT);
- struct efx_mcdi_mtd_partition *parts;
- size_t outlen, n_parts_total, i, n_parts;
- unsigned int type;
-@@ -5177,11 +5188,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
- for (i = 0; i < n_parts_total; i++) {
- type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
- i);
-- rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
-- if (rc == 0)
-- n_parts++;
-- else if (rc != -ENODEV)
-+ rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
-+ found);
-+ if (rc == -EEXIST || rc == -ENODEV)
-+ continue;
-+ if (rc)
- goto fail;
-+ n_parts++;
- }
-
- rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
---
-2.19.1
-