Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2019-08-14 07:25:49 +0200
committerKernel Build Daemon <kbuild@suse.de>2019-08-14 07:25:49 +0200
commit1c60c8c3968420cd646d7f0ce61038fe2ac5578a (patch)
tree8fa86640938495ad59155f019f6578a1603bb0ee
parentf85a7a0df97fec49da7d7b83ccbf6cb1f964c7c7 (diff)
parent9932dc54dfcfc7747229a954663d161de533f8ad (diff)
Merge branch 'SLE15-SP1' into openSUSE-15.1
-rw-r--r--patches.drivers/ALSA-usb-audio-fix-a-memory-leak-bug.patch39
-rw-r--r--patches.drivers/mmc-sdhci-pci-Fix-BYT-OCP-setting.patch184
-rw-r--r--patches.drm/drm-i915-Fix-wrong-escape-clock-divisor-init-for-GLK.patch59
-rw-r--r--patches.drm/drm-rockchip-Suspend-DP-late.patch46
-rw-r--r--patches.fixes/nl-mac-80211-fix-interface-combinations-on-crypto-co.patch166
-rw-r--r--patches.fixes/staging-fsl-dpaa2-ethsw-fix-memory-leak-of-switchdev.patch37
-rw-r--r--series.conf6
7 files changed, 537 insertions, 0 deletions
diff --git a/patches.drivers/ALSA-usb-audio-fix-a-memory-leak-bug.patch b/patches.drivers/ALSA-usb-audio-fix-a-memory-leak-bug.patch
new file mode 100644
index 0000000000..19a6635f00
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-fix-a-memory-leak-bug.patch
@@ -0,0 +1,39 @@
+From a67060201b746a308b1674f66bf289c9faef6d09 Mon Sep 17 00:00:00 2001
+From: Wenwen Wang <wenwen@cs.uga.edu>
+Date: Tue, 6 Aug 2019 03:00:27 -0400
+Subject: [PATCH] ALSA: usb-audio: fix a memory leak bug
+Git-commit: a67060201b746a308b1674f66bf289c9faef6d09
+Patch-mainline: v5.3-rc4
+References: bsc#1111666
+
+In snd_usb_get_audioformat_uac3(), a structure for channel maps 'chmap' is
+allocated through kzalloc() before the execution goto 'found_clock'.
+However, this structure is not deallocated if the memory allocation for
+'pd' fails, leading to a memory leak bug.
+
+To fix the above issue, free 'fp->chmap' before returning NULL.
+
+Fixes: 7edf3b5e6a45 ("ALSA: usb-audio: AudioStreaming Power Domain parsing")
+Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/stream.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/usb/stream.c b/sound/usb/stream.c
+index 7ee9d17d0143..e852c7fd6109 100644
+--- a/sound/usb/stream.c
++++ b/sound/usb/stream.c
+@@ -1043,6 +1043,7 @@ snd_usb_get_audioformat_uac3(struct snd_usb_audio *chip,
+
+ pd = kzalloc(sizeof(*pd), GFP_KERNEL);
+ if (!pd) {
++ kfree(fp->chmap);
+ kfree(fp->rate_table);
+ kfree(fp);
+ return NULL;
+--
+2.16.4
+
diff --git a/patches.drivers/mmc-sdhci-pci-Fix-BYT-OCP-setting.patch b/patches.drivers/mmc-sdhci-pci-Fix-BYT-OCP-setting.patch
new file mode 100644
index 0000000000..98108b47cc
--- /dev/null
+++ b/patches.drivers/mmc-sdhci-pci-Fix-BYT-OCP-setting.patch
@@ -0,0 +1,184 @@
+From 0a49a619e7e1aeb3f5f5511ca59314423c83dae2 Mon Sep 17 00:00:00 2001
+From: Adrian Hunter <adrian.hunter@intel.com>
+Date: Mon, 6 May 2019 11:38:53 +0300
+Subject: [PATCH] mmc: sdhci-pci: Fix BYT OCP setting
+Git-commit: 0a49a619e7e1aeb3f5f5511ca59314423c83dae2
+Patch-mainline: v5.2-rc1
+References: bsc#1051510
+
+Some time ago, a fix was done for the sdhci-acpi driver, refer
+commit 6e1c7d6103fe ("mmc: sdhci-acpi: Reduce Baytrail eMMC/SD/SDIO
+hangs"). The same issue was not expected to affect the sdhci-pci driver,
+but there have been reports to the contrary, so make the same hardware
+setting change.
+
+This patch applies to v5.0+ but before that backports will be required.
+
+Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/mmc/host/Kconfig | 1
+ drivers/mmc/host/sdhci-pci-core.c | 96 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 97 insertions(+)
+
+--- a/drivers/mmc/host/Kconfig
++++ b/drivers/mmc/host/Kconfig
+@@ -73,6 +73,7 @@ config MMC_SDHCI_PCI
+ tristate "SDHCI support on PCI bus"
+ depends on MMC_SDHCI && PCI
+ select MMC_CQHCI
++ select IOSF_MBI if X86
+ help
+ This selects the PCI Secure Digital Host Controller Interface.
+ Most controllers found today are PCI devices.
+--- a/drivers/mmc/host/sdhci-pci-core.c
++++ b/drivers/mmc/host/sdhci-pci-core.c
+@@ -30,6 +30,10 @@
+ #include <linux/mmc/sdhci-pci-data.h>
+ #include <linux/acpi.h>
+
++#ifdef CONFIG_X86
++#include <asm/iosf_mbi.h>
++#endif
++
+ #include "cqhci.h"
+
+ #include "sdhci.h"
+@@ -456,6 +460,50 @@ static const struct sdhci_pci_fixes sdhc
+ .probe_slot = pch_hc_probe_slot,
+ };
+
++#ifdef CONFIG_X86
++
++#define BYT_IOSF_SCCEP 0x63
++#define BYT_IOSF_OCP_NETCTRL0 0x1078
++#define BYT_IOSF_OCP_TIMEOUT_BASE GENMASK(10, 8)
++
++static void byt_ocp_setting(struct pci_dev *pdev)
++{
++ u32 val = 0;
++
++ if (pdev->device != PCI_DEVICE_ID_INTEL_BYT_EMMC &&
++ pdev->device != PCI_DEVICE_ID_INTEL_BYT_SDIO &&
++ pdev->device != PCI_DEVICE_ID_INTEL_BYT_SD &&
++ pdev->device != PCI_DEVICE_ID_INTEL_BYT_EMMC2)
++ return;
++
++ if (iosf_mbi_read(BYT_IOSF_SCCEP, MBI_CR_READ, BYT_IOSF_OCP_NETCTRL0,
++ &val)) {
++ dev_err(&pdev->dev, "%s read error\n", __func__);
++ return;
++ }
++
++ if (!(val & BYT_IOSF_OCP_TIMEOUT_BASE))
++ return;
++
++ val &= ~BYT_IOSF_OCP_TIMEOUT_BASE;
++
++ if (iosf_mbi_write(BYT_IOSF_SCCEP, MBI_CR_WRITE, BYT_IOSF_OCP_NETCTRL0,
++ val)) {
++ dev_err(&pdev->dev, "%s write error\n", __func__);
++ return;
++ }
++
++ dev_dbg(&pdev->dev, "%s completed\n", __func__);
++}
++
++#else
++
++static inline void byt_ocp_setting(struct pci_dev *pdev)
++{
++}
++
++#endif
++
+ enum {
+ INTEL_DSM_FNS = 0,
+ INTEL_DSM_V18_SWITCH = 3,
+@@ -696,6 +744,8 @@ static void byt_probe_slot(struct sdhci_
+
+ byt_read_dsm(slot);
+
++ byt_ocp_setting(slot->chip->pdev);
++
+ ops->execute_tuning = intel_execute_tuning;
+ }
+
+@@ -860,7 +910,35 @@ static int byt_sd_probe_slot(struct sdhc
+ return 0;
+ }
+
++#ifdef CONFIG_PM_SLEEP
++
++static int byt_resume(struct sdhci_pci_chip *chip)
++{
++ byt_ocp_setting(chip->pdev);
++
++ return sdhci_pci_resume_host(chip);
++}
++
++#endif
++
++#ifdef CONFIG_PM
++
++static int byt_runtime_resume(struct sdhci_pci_chip *chip)
++{
++ byt_ocp_setting(chip->pdev);
++
++ return sdhci_pci_runtime_resume_host(chip);
++}
++
++#endif
++
+ static const struct sdhci_pci_fixes sdhci_intel_byt_emmc = {
++#ifdef CONFIG_PM_SLEEP
++ .resume = byt_resume,
++#endif
++#ifdef CONFIG_PM
++ .runtime_resume = byt_runtime_resume,
++#endif
+ .allow_runtime_pm = true,
+ .probe_slot = byt_emmc_probe_slot,
+ .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+@@ -892,6 +970,12 @@ static const struct sdhci_pci_fixes sdhc
+ };
+
+ static const struct sdhci_pci_fixes sdhci_ni_byt_sdio = {
++#ifdef CONFIG_PM_SLEEP
++ .resume = byt_resume,
++#endif
++#ifdef CONFIG_PM
++ .runtime_resume = byt_runtime_resume,
++#endif
+ .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+ .quirks2 = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
+ SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
+@@ -902,6 +986,12 @@ static const struct sdhci_pci_fixes sdhc
+ };
+
+ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
++#ifdef CONFIG_PM_SLEEP
++ .resume = byt_resume,
++#endif
++#ifdef CONFIG_PM
++ .runtime_resume = byt_runtime_resume,
++#endif
+ .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+ .quirks2 = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
+ SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
+@@ -912,6 +1002,12 @@ static const struct sdhci_pci_fixes sdhc
+ };
+
+ static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
++#ifdef CONFIG_PM_SLEEP
++ .resume = byt_resume,
++#endif
++#ifdef CONFIG_PM
++ .runtime_resume = byt_runtime_resume,
++#endif
+ .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+ .quirks2 = SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON |
+ SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
diff --git a/patches.drm/drm-i915-Fix-wrong-escape-clock-divisor-init-for-GLK.patch b/patches.drm/drm-i915-Fix-wrong-escape-clock-divisor-init-for-GLK.patch
new file mode 100644
index 0000000000..b9fe49c71e
--- /dev/null
+++ b/patches.drm/drm-i915-Fix-wrong-escape-clock-divisor-init-for-GLK.patch
@@ -0,0 +1,59 @@
+From 73a0ff0b30af79bf0303d557eb82f1d1945bb6ee Mon Sep 17 00:00:00 2001
+From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
+Date: Fri, 12 Jul 2019 11:19:38 +0300
+Subject: [PATCH] drm/i915: Fix wrong escape clock divisor init for GLK
+Git-commit: 73a0ff0b30af79bf0303d557eb82f1d1945bb6ee
+Patch-mainline: v5.3-rc4
+No-fix: ce52ad5dd52cfaf3398058384e0ff94134bbd89c
+References: bsc#1051510
+
+According to Bspec clock divisor registers in GeminiLake
+should be initialized by shifting 1(<<) to amount of correspondent
+divisor. While i915 was writing all this time that value as is.
+
+Surprisingly that it by accident worked, until we met some issues
+with Microtech Etab.
+
+V2: Added Fixes tag and cc
+V3: Added stable to cc as well.
+
+Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
+Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108826
+Fixes: bcc657004841 ("drm/i915/glk: Program txesc clock divider for GLK")
+Cc: Deepak M <m.deepak@intel.com>
+Cc: Madhav Chauhan <madhav.chauhan@intel.com>
+Cc: Jani Nikula <jani.nikula@intel.com>
+Cc: Jani Nikula <jani.nikula@linux.intel.com>
+Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Cc: intel-gfx@lists.freedesktop.org
+Cc: stable@vger.kernel.org
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20190712081938.14185-1-stanislav.lisovskiy@intel.com
+(cherry picked from commit ce52ad5dd52cfaf3398058384e0ff94134bbd89c)
+
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/i915/display/vlv_dsi_pll.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/display/vlv_dsi_pll.c b/drivers/gpu/drm/i915/display/vlv_dsi_pll.c
+index 99cc3e2e9c2c..f016a776a39e 100644
+--- a/drivers/gpu/drm/i915/vlv_dsi_pll.c
++++ b/drivers/gpu/drm/i915/vlv_dsi_pll.c
+@@ -396,8 +396,8 @@ static void glk_dsi_program_esc_clock(struct drm_device *dev,
+ else
+ txesc2_div = 10;
+
+- I915_WRITE(MIPIO_TXESC_CLK_DIV1, txesc1_div & GLK_TX_ESC_CLK_DIV1_MASK);
+- I915_WRITE(MIPIO_TXESC_CLK_DIV2, txesc2_div & GLK_TX_ESC_CLK_DIV2_MASK);
++ I915_WRITE(MIPIO_TXESC_CLK_DIV1, (1 << (txesc1_div - 1)) & GLK_TX_ESC_CLK_DIV1_MASK);
++ I915_WRITE(MIPIO_TXESC_CLK_DIV2, (1 << (txesc2_div - 1)) & GLK_TX_ESC_CLK_DIV2_MASK);
+ }
+
+ /* Program BXT Mipi clocks and dividers */
+--
+2.16.4
+
diff --git a/patches.drm/drm-rockchip-Suspend-DP-late.patch b/patches.drm/drm-rockchip-Suspend-DP-late.patch
new file mode 100644
index 0000000000..1d86d66a3b
--- /dev/null
+++ b/patches.drm/drm-rockchip-Suspend-DP-late.patch
@@ -0,0 +1,46 @@
+From f7ccbed656f78212593ca965d9a8f34bf24e0aab Mon Sep 17 00:00:00 2001
+From: Douglas Anderson <dianders@chromium.org>
+Date: Fri, 2 Aug 2019 11:46:16 -0700
+Subject: [PATCH] drm/rockchip: Suspend DP late
+Git-commit: f7ccbed656f78212593ca965d9a8f34bf24e0aab
+Patch-mainline: v5.3-rc4
+References: bsc#1051510
+
+In commit fe64ba5c6323 ("drm/rockchip: Resume DP early") we moved
+resume to be early but left suspend at its normal time. This seems
+like it could be OK, but casues problems if a suspend gets interrupted
+partway through. The OS only balances matching suspend/resume levels.
+...so if suspend was called then resume will be called. If suspend
+late was called then resume early will be called. ...but if suspend
+was called resume early might not get called. This leads to an
+unbalance in the clock enables / disables.
+
+Lets take the simple fix and just move suspend to be late to match.
+This makes the PM core take proper care in keeping things balanced.
+
+Fixes: fe64ba5c6323 ("drm/rockchip: Resume DP early")
+Signed-off-by: Douglas Anderson <dianders@chromium.org>
+Signed-off-by: Sean Paul <seanpaul@chromium.org>
+Link: https://patchwork.freedesktop.org/patch/msgid/20190802184616.44822-1-dianders@chromium.org
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+index 95e5c517a15f..9aae3d8e99ef 100644
+--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
++++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+@@ -432,7 +432,7 @@ static int rockchip_dp_resume(struct device *dev)
+
+ static const struct dev_pm_ops rockchip_dp_pm_ops = {
+ #ifdef CONFIG_PM_SLEEP
+- .suspend = rockchip_dp_suspend,
++ .suspend_late = rockchip_dp_suspend,
+ .resume_early = rockchip_dp_resume,
+ #endif
+ };
+--
+2.16.4
+
diff --git a/patches.fixes/nl-mac-80211-fix-interface-combinations-on-crypto-co.patch b/patches.fixes/nl-mac-80211-fix-interface-combinations-on-crypto-co.patch
new file mode 100644
index 0000000000..85d1e30a87
--- /dev/null
+++ b/patches.fixes/nl-mac-80211-fix-interface-combinations-on-crypto-co.patch
@@ -0,0 +1,166 @@
+From e6f4051123fd33901e9655a675b22aefcdc5d277 Mon Sep 17 00:00:00 2001
+From: Manikanta Pubbisetty <mpubbise@codeaurora.org>
+Date: Mon, 22 Jul 2019 12:44:50 +0530
+Subject: [PATCH] {nl,mac}80211: fix interface combinations on crypto controlled devices
+Git-commit: e6f4051123fd33901e9655a675b22aefcdc5d277
+Patch-mainline: v5.3-rc4
+References: bsc#1111666
+
+Commit 33d915d9e8ce ("{nl,mac}80211: allow 4addr AP operation on
+crypto controlled devices") has introduced a change which allows
+4addr operation on crypto controlled devices (ex: ath10k). This
+change has inadvertently impacted the interface combinations logic
+on such devices.
+
+General rule is that software interfaces like AP/VLAN should not be
+listed under supported interface combinations and should not be
+considered during validation of these combinations; because of the
+aforementioned change, AP/VLAN interfaces(if present) will be checked
+against interfaces supported by the device and blocks valid interface
+combinations.
+
+Consider a case where an AP and AP/VLAN are up and running; when a
+second AP device is brought up on the same physical device, this AP
+will be checked against the AP/VLAN interface (which will not be
+part of supported interface combinations of the device) and blocks
+second AP to come up.
+
+Add a new API cfg80211_iftype_allowed() to fix the problem, this
+API works for all devices with/without SW crypto control.
+
+Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
+Fixes: 33d915d9e8ce ("{nl,mac}80211: allow 4addr AP operation on crypto controlled devices")
+Link: https://lore.kernel.org/r/1563779690-9716-1-git-send-email-mpubbise@codeaurora.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ include/net/cfg80211.h | 15 +++++++++++++++
+ net/mac80211/util.c | 7 +++----
+ net/wireless/core.c | 6 ++----
+ net/wireless/nl80211.c | 4 +---
+ net/wireless/util.c | 27 +++++++++++++++++++++++++--
+ 5 files changed, 46 insertions(+), 13 deletions(-)
+
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -6563,6 +6563,21 @@ int cfg80211_external_auth_request(struc
+ struct cfg80211_external_auth_params *params,
+ gfp_t gfp);
+
++/**
++ * cfg80211_iftype_allowed - check whether the interface can be allowed
++ * @wiphy: the wiphy
++ * @iftype: interface type
++ * @is_4addr: use_4addr flag, must be '0' when check_swif is '1'
++ * @check_swif: check iftype against software interfaces
++ *
++ * Check whether the interface is allowed to operate; additionally, this API
++ * can be used to check iftype against the software interfaces when
++ * check_swif is '1'.
++ */
++bool cfg80211_iftype_allowed(struct wiphy *wiphy, enum nl80211_iftype iftype,
++ bool is_4addr, u8 check_swif);
++
++
+ /* Logging, debugging and troubleshooting/diagnostic helpers. */
+
+ /* wiphy_printk helpers, similar to dev_printk */
+--- a/net/mac80211/util.c
++++ b/net/mac80211/util.c
+@@ -3526,9 +3526,7 @@ int ieee80211_check_combinations(struct
+ }
+
+ /* Always allow software iftypes */
+- if (local->hw.wiphy->software_iftypes & BIT(iftype) ||
+- (iftype == NL80211_IFTYPE_AP_VLAN &&
+- local->hw.wiphy->flags & WIPHY_FLAG_4ADDR_AP)) {
++ if (cfg80211_iftype_allowed(local->hw.wiphy, iftype, 0, 1)) {
+ if (radar_detect)
+ return -EINVAL;
+ return 0;
+@@ -3563,7 +3561,8 @@ int ieee80211_check_combinations(struct
+
+ if (sdata_iter == sdata ||
+ !ieee80211_sdata_running(sdata_iter) ||
+- local->hw.wiphy->software_iftypes & BIT(wdev_iter->iftype))
++ cfg80211_iftype_allowed(local->hw.wiphy,
++ wdev_iter->iftype, 0, 1))
+ continue;
+
+ params.iftype_num[wdev_iter->iftype]++;
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -1335,10 +1335,8 @@ static int cfg80211_netdev_notifier_call
+ }
+ break;
+ case NETDEV_PRE_UP:
+- if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)) &&
+- !(wdev->iftype == NL80211_IFTYPE_AP_VLAN &&
+- rdev->wiphy.flags & WIPHY_FLAG_4ADDR_AP &&
+- wdev->use_4addr))
++ if (!cfg80211_iftype_allowed(wdev->wiphy, wdev->iftype,
++ wdev->use_4addr, 0))
+ return notifier_from_errno(-EOPNOTSUPP);
+
+ if (rfkill_blocked(rdev->rfkill))
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -3210,9 +3210,7 @@ static int nl80211_new_interface(struct
+ return err;
+ }
+
+- if (!(rdev->wiphy.interface_modes & (1 << type)) &&
+- !(type == NL80211_IFTYPE_AP_VLAN && params.use_4addr &&
+- rdev->wiphy.flags & WIPHY_FLAG_4ADDR_AP))
++ if (!cfg80211_iftype_allowed(&rdev->wiphy, type, params.use_4addr, 0))
+ return -EOPNOTSUPP;
+
+ err = nl80211_parse_mon_options(rdev, type, info, &params);
+--- a/net/wireless/util.c
++++ b/net/wireless/util.c
+@@ -1669,7 +1669,7 @@ int cfg80211_iter_combinations(struct wi
+ for (iftype = 0; iftype < NUM_NL80211_IFTYPES; iftype++) {
+ num_interfaces += params->iftype_num[iftype];
+ if (params->iftype_num[iftype] > 0 &&
+- !(wiphy->software_iftypes & BIT(iftype)))
++ !cfg80211_iftype_allowed(wiphy, iftype, 0, 1))
+ used_iftypes |= BIT(iftype);
+ }
+
+@@ -1691,7 +1691,7 @@ int cfg80211_iter_combinations(struct wi
+ return -ENOMEM;
+
+ for (iftype = 0; iftype < NUM_NL80211_IFTYPES; iftype++) {
+- if (wiphy->software_iftypes & BIT(iftype))
++ if (cfg80211_iftype_allowed(wiphy, iftype, 0, 1))
+ continue;
+ for (j = 0; j < c->n_limits; j++) {
+ all_iftypes |= limits[j].types;
+@@ -1894,3 +1894,26 @@ EXPORT_SYMBOL(rfc1042_header);
+ const unsigned char bridge_tunnel_header[] __aligned(2) =
+ { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
+ EXPORT_SYMBOL(bridge_tunnel_header);
++
++bool cfg80211_iftype_allowed(struct wiphy *wiphy, enum nl80211_iftype iftype,
++ bool is_4addr, u8 check_swif)
++
++{
++ bool is_vlan = iftype == NL80211_IFTYPE_AP_VLAN;
++
++ switch (check_swif) {
++ case 0:
++ if (is_vlan && is_4addr)
++ return wiphy->flags & WIPHY_FLAG_4ADDR_AP;
++ return wiphy->interface_modes & BIT(iftype);
++ case 1:
++ if (!(wiphy->software_iftypes & BIT(iftype)) && is_vlan)
++ return wiphy->flags & WIPHY_FLAG_4ADDR_AP;
++ return wiphy->software_iftypes & BIT(iftype);
++ default:
++ break;
++ }
++
++ return false;
++}
++EXPORT_SYMBOL(cfg80211_iftype_allowed);
diff --git a/patches.fixes/staging-fsl-dpaa2-ethsw-fix-memory-leak-of-switchdev.patch b/patches.fixes/staging-fsl-dpaa2-ethsw-fix-memory-leak-of-switchdev.patch
new file mode 100644
index 0000000000..6ee5332b9d
--- /dev/null
+++ b/patches.fixes/staging-fsl-dpaa2-ethsw-fix-memory-leak-of-switchdev.patch
@@ -0,0 +1,37 @@
+From 5555ebbbac822b4fa28db2be15aaf98b3c21af26 Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king@canonical.com>
+Date: Sat, 8 Jun 2019 12:50:31 +0100
+Subject: [PATCH] staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work
+Git-commit: 5555ebbbac822b4fa28db2be15aaf98b3c21af26
+Patch-mainline: v5.3-rc1
+References: bsc#1111666
+
+In the default event case switchdev_work is being leaked because
+nothing is queued for work. Fix this by kfree'ing switchdev_work
+before returning NOTIFY_DONE.
+
+Addresses-coverity: ("Resource leak")
+Fixes: 44baaa43d7cc ("staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver")
+Signed-off-by: Colin Ian King <colin.king@canonical.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
+index e3c3e427309a..f73edaf6ce87 100644
+--- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
++++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c
+@@ -1086,6 +1086,7 @@ static int port_switchdev_event(struct notifier_block *unused,
+ dev_hold(dev);
+ break;
+ default:
++ kfree(switchdev_work);
+ return NOTIFY_DONE;
+ }
+
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index accd12fa4d..1d2ff84d64 100644
--- a/series.conf
+++ b/series.conf
@@ -46781,6 +46781,7 @@
patches.drivers/mmc-core-Verify-SD-bus-width.patch
patches.drivers/mmc-mmci-Prevent-polling-for-busy-detection-in-IRQ-c.patch
patches.drivers/mmc-core-Fix-tag-set-memory-leak.patch
+ patches.drivers/mmc-sdhci-pci-Fix-BYT-OCP-setting.patch
patches.drivers/drivers-fix-a-typo-in-the-kernel-doc-for-devm_platfo.patch
patches.drivers/iio-common-ssp_sensors-Initialize-calculated_time-in.patch
patches.drivers/iio-hmc5843-fix-potential-NULL-pointer-dereferences.patch
@@ -48203,6 +48204,7 @@
patches.drivers/VMCI-Fix-integer-overflow-in-VMCI-handle-arrays.patch
patches.drivers/intel_th-msu-Fix-single-mode-with-disabled-IOMMU.patch
patches.drivers/intel_th-pci-Add-Ice-Lake-NNPI-support.patch
+ patches.fixes/staging-fsl-dpaa2-ethsw-fix-memory-leak-of-switchdev.patch
patches.drivers/staging-rtl8712-reduce-stack-usage-again.patch
patches.drivers/staging-comedi-amplc_pci230-fix-null-pointer-deref-o.patch
patches.drivers/staging-comedi-dt282x-fix-a-null-pointer-deref-on-in.patch
@@ -48411,11 +48413,15 @@
patches.drivers/sky2-Disable-MSI-on-ASUS-P6T.patch
patches.drivers/0003-can-rcar_canfd-fix-possible-IRQ-storm-on-high-load.patch
patches.drivers/0004-can-peak_usb-fix-potential-double-kfree_skb.patch
+ patches.fixes/nl-mac-80211-fix-interface-combinations-on-crypto-co.patch
patches.drivers/0005-can-peak_usb-pcan_usb_fd-Fix-info-leaks-to-USB-devic.patch
patches.drivers/0006-can-peak_usb-pcan_usb_pro-Fix-info-leaks-to-USB-devi.patch
patches.drivers/mwifiex-fix-802.11n-WPA-detection.patch
patches.fixes/0001-iwlwifi-mvm-don-t-send-GEO_TX_POWER_LIMIT-on-version.patch
patches.fixes/0001-iwlwifi-mvm-fix-version-check-for-GEO_TX_POWER_LIMIT.patch
+ patches.drivers/ALSA-usb-audio-fix-a-memory-leak-bug.patch
+ patches.drm/drm-rockchip-Suspend-DP-late.patch
+ patches.drm/drm-i915-Fix-wrong-escape-clock-divisor-init-for-GLK.patch
# dhowells/linux-fs keys-uefi
patches.suse/0001-KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch