From: Greg Kroah-Hartman Date: Sun, 16 Jul 2023 18:17:34 +0000 (+0200) Subject: drop some more 5.15 and 5.10 patches X-Git-Tag: v6.1.39~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ce9e9ece2aaa1b0f5094b7e76c67a7531e542af9;p=thirdparty%2Fkernel%2Fstable-queue.git drop some more 5.15 and 5.10 patches --- diff --git a/queue-5.10/series b/queue-5.10/series index 76c6a85adcd..bb934adf9d5 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -60,7 +60,6 @@ wifi-atmel-fix-an-error-handling-path-in-atmel_probe.patch wl3501_cs-fix-misspelling-and-provide-missing-docume.patch net-create-netdev-dev_addr-assignment-helpers.patch wl3501_cs-use-eth_hw_addr_set.patch -wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch wifi-ray_cs-utilize-strnlen-in-parse_addr.patch wifi-ray_cs-drop-useless-status-variable-in-parse_ad.patch diff --git a/queue-5.10/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch b/queue-5.10/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch deleted file mode 100644 index 58e1ef64882..00000000000 --- a/queue-5.10/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch +++ /dev/null @@ -1,413 +0,0 @@ -From 0581b1356066b97de4b37695f9b4f2d0afd60be1 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 30 Aug 2022 22:14:53 +0200 -Subject: wifi: move from strlcpy with unused retval to strscpy - -From: Wolfram Sang - -[ Upstream commit bf99f11df4de45fcba6f6c441b411a16bccaccf6 ] - -Follow the advice of the below link and prefer 'strscpy' in this -subsystem. Conversion is 1:1 because the return value is not used. -Generated by a coccinelle script. - -Link: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw@mail.gmail.com/ -Signed-off-by: Wolfram Sang -Signed-off-by: Kalle Valo -Link: https://lore.kernel.org/r/20220830201457.7984-2-wsa+renesas@sang-engineering.com -Stable-dep-of: 391af06a02e7 ("wifi: wl3501_cs: Fix an error handling path in wl3501_probe()") -Signed-off-by: Sasha Levin ---- - drivers/net/wireless/ath/ath6kl/init.c | 2 +- - drivers/net/wireless/ath/carl9170/fw.c | 2 +- - drivers/net/wireless/ath/wil6210/main.c | 2 +- - drivers/net/wireless/ath/wil6210/netdev.c | 2 +- - drivers/net/wireless/ath/wil6210/wmi.c | 2 +- - drivers/net/wireless/atmel/atmel.c | 2 +- - drivers/net/wireless/broadcom/b43/leds.c | 2 +- - drivers/net/wireless/broadcom/b43legacy/leds.c | 2 +- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 8 ++++---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 8 ++++---- - .../net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 2 +- - .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 2 +- - drivers/net/wireless/intel/ipw2x00/ipw2100.c | 6 +++--- - drivers/net/wireless/intel/ipw2x00/ipw2200.c | 6 +++--- - drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- - drivers/net/wireless/intersil/hostap/hostap_ioctl.c | 2 +- - drivers/net/wireless/marvell/libertas/ethtool.c | 4 ++-- - drivers/net/wireless/microchip/wilc1000/mon.c | 2 +- - drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- - drivers/net/wireless/quantenna/qtnfmac/commands.c | 2 +- - drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c | 2 +- - drivers/net/wireless/wl3501_cs.c | 8 ++++---- - 22 files changed, 36 insertions(+), 36 deletions(-) - -diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c -index 39bf196861751..b9e9808634610 100644 ---- a/drivers/net/wireless/ath/ath6kl/init.c -+++ b/drivers/net/wireless/ath/ath6kl/init.c -@@ -1014,7 +1014,7 @@ static int ath6kl_fetch_fw_apin(struct ath6kl *ar, const char *name) - - switch (ie_id) { - case ATH6KL_FW_IE_FW_VERSION: -- strlcpy(ar->wiphy->fw_version, data, -+ strscpy(ar->wiphy->fw_version, data, - min(sizeof(ar->wiphy->fw_version), ie_len+1)); - - ath6kl_dbg(ATH6KL_DBG_BOOT, -diff --git a/drivers/net/wireless/ath/carl9170/fw.c b/drivers/net/wireless/ath/carl9170/fw.c -index 1ab09e1c9ec57..4c1aecd1163ce 100644 ---- a/drivers/net/wireless/ath/carl9170/fw.c -+++ b/drivers/net/wireless/ath/carl9170/fw.c -@@ -105,7 +105,7 @@ static void carl9170_fw_info(struct ar9170 *ar) - CARL9170FW_GET_MONTH(fw_date), - CARL9170FW_GET_DAY(fw_date)); - -- strlcpy(ar->hw->wiphy->fw_version, motd_desc->release, -+ strscpy(ar->hw->wiphy->fw_version, motd_desc->release, - sizeof(ar->hw->wiphy->fw_version)); - } - } -diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c -index 3ba5b2550a8c1..bb532c6866beb 100644 ---- a/drivers/net/wireless/ath/wil6210/main.c -+++ b/drivers/net/wireless/ath/wil6210/main.c -@@ -1305,7 +1305,7 @@ void wil_get_board_file(struct wil6210_priv *wil, char *buf, size_t len) - board_file = WIL_BOARD_FILE_NAME; - } - -- strlcpy(buf, board_file, len); -+ strscpy(buf, board_file, len); - } - - static int wil_get_bl_info(struct wil6210_priv *wil) -diff --git a/drivers/net/wireless/ath/wil6210/netdev.c b/drivers/net/wireless/ath/wil6210/netdev.c -index 07b4a252a23c9..41fd4e548a513 100644 ---- a/drivers/net/wireless/ath/wil6210/netdev.c -+++ b/drivers/net/wireless/ath/wil6210/netdev.c -@@ -445,7 +445,7 @@ int wil_if_add(struct wil6210_priv *wil) - - wil_dbg_misc(wil, "entered"); - -- strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); -+ strscpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); - - rc = wiphy_register(wiphy); - if (rc < 0) { -diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c -index 421aebbb49e54..a2c0f14bf74ef 100644 ---- a/drivers/net/wireless/ath/wil6210/wmi.c -+++ b/drivers/net/wireless/ath/wil6210/wmi.c -@@ -780,7 +780,7 @@ static void wmi_evt_ready(struct wil6210_vif *vif, int id, void *d, int len) - return; /* FW load will fail after timeout */ - } - /* ignore MAC address, we already have it from the boot loader */ -- strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); -+ strscpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); - - if (len > offsetof(struct wmi_ready_event, rfc_read_calib_result)) { - wil_dbg_wmi(wil, "rfc calibration result %d\n", -diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/net/wireless/atmel/atmel.c -index 707fe66727f8d..2a445fefedd7a 100644 ---- a/drivers/net/wireless/atmel/atmel.c -+++ b/drivers/net/wireless/atmel/atmel.c -@@ -1519,7 +1519,7 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port, - priv->firmware = NULL; - priv->firmware_type = fw_type; - if (firmware) /* module parameter */ -- strlcpy(priv->firmware_id, firmware, sizeof(priv->firmware_id)); -+ strscpy(priv->firmware_id, firmware, sizeof(priv->firmware_id)); - priv->bus_type = card_present ? BUS_TYPE_PCCARD : BUS_TYPE_PCI; - priv->station_state = STATION_STATE_DOWN; - priv->do_rx_crc = 0; -diff --git a/drivers/net/wireless/broadcom/b43/leds.c b/drivers/net/wireless/broadcom/b43/leds.c -index 982a772a9d879..bfe1be345844d 100644 ---- a/drivers/net/wireless/broadcom/b43/leds.c -+++ b/drivers/net/wireless/broadcom/b43/leds.c -@@ -118,7 +118,7 @@ static int b43_register_led(struct b43_wldev *dev, struct b43_led *led, - led->wl = dev->wl; - led->index = led_index; - led->activelow = activelow; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - atomic_set(&led->state, 0); - - led->led_dev.name = led->name; -diff --git a/drivers/net/wireless/broadcom/b43legacy/leds.c b/drivers/net/wireless/broadcom/b43legacy/leds.c -index 38b5be3a84e2c..79e6fd205bfb7 100644 ---- a/drivers/net/wireless/broadcom/b43legacy/leds.c -+++ b/drivers/net/wireless/broadcom/b43legacy/leds.c -@@ -88,7 +88,7 @@ static int b43legacy_register_led(struct b43legacy_wldev *dev, - led->dev = dev; - led->index = led_index; - led->activelow = activelow; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - - led->led_dev.name = led->name; - led->led_dev.default_trigger = default_trigger; -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index f29de630908d7..a964f9f0c4435 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -@@ -219,7 +219,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) - &revinfo, sizeof(revinfo)); - if (err < 0) { - bphy_err(drvr, "retrieving revision info failed, %d\n", err); -- strlcpy(ri->chipname, "UNKNOWN", sizeof(ri->chipname)); -+ strscpy(ri->chipname, "UNKNOWN", sizeof(ri->chipname)); - } else { - ri->vendorid = le32_to_cpu(revinfo.vendorid); - ri->deviceid = le32_to_cpu(revinfo.deviceid); -@@ -273,7 +273,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) - - /* locate firmware version number for ethtool */ - ptr = strrchr(buf, ' ') + 1; -- strlcpy(ifp->drvr->fwver, ptr, sizeof(ifp->drvr->fwver)); -+ strscpy(ifp->drvr->fwver, ptr, sizeof(ifp->drvr->fwver)); - - /* Query for 'clmver' to get CLM version info from firmware */ - memset(buf, 0, sizeof(buf)); -@@ -385,11 +385,11 @@ static void brcmf_mp_attach(void) - * if not set then if available use the platform data version. To make - * sure it gets initialized at all, always copy the module param version - */ -- strlcpy(brcmf_mp_global.firmware_path, brcmf_firmware_path, -+ strscpy(brcmf_mp_global.firmware_path, brcmf_firmware_path, - BRCMF_FW_ALTPATH_LEN); - if ((brcmfmac_pdata) && (brcmfmac_pdata->fw_alternative_path) && - (brcmf_mp_global.firmware_path[0] == '\0')) { -- strlcpy(brcmf_mp_global.firmware_path, -+ strscpy(brcmf_mp_global.firmware_path, - brcmfmac_pdata->fw_alternative_path, - BRCMF_FW_ALTPATH_LEN); - } -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -index 3d544eedc1a39..3d3ee350fdfb3 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -569,10 +569,10 @@ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, - - if (drvr->revinfo.result == 0) - brcmu_dotrev_str(drvr->revinfo.driverrev, drev); -- strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); -- strlcpy(info->version, drev, sizeof(info->version)); -- strlcpy(info->fw_version, drvr->fwver, sizeof(info->fw_version)); -- strlcpy(info->bus_info, dev_name(drvr->bus_if->dev), -+ strscpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); -+ strscpy(info->version, drev, sizeof(info->version)); -+ strscpy(info->fw_version, drvr->fwver, sizeof(info->fw_version)); -+ strscpy(info->bus_info, dev_name(drvr->bus_if->dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -index 060889bf6d053..b9cd9d7482a1e 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -@@ -740,7 +740,7 @@ brcmf_fw_alloc_request(u32 chip, u32 chiprev, - fwnames[j].path[0] = '\0'; - /* check if firmware path is provided by module parameter */ - if (brcmf_mp_global.firmware_path[0] != '\0') { -- strlcpy(fwnames[j].path, mp_path, -+ strscpy(fwnames[j].path, mp_path, - BRCMF_FW_NAME_LEN); - - if (end != '/') { -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -index 437e83ea8902d..4ff5432a36cb2 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -@@ -688,7 +688,7 @@ static void brcmf_fws_macdesc_set_name(struct brcmf_fws_info *fws, - struct brcmf_fws_mac_descriptor *desc) - { - if (desc == &fws->desc.other) -- strlcpy(desc->name, "MAC-OTHER", sizeof(desc->name)); -+ strscpy(desc->name, "MAC-OTHER", sizeof(desc->name)); - else if (desc->mac_handle) - scnprintf(desc->name, sizeof(desc->name), "MAC-%d:%d", - desc->mac_handle, desc->interface_id); -diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -index 23fbddd0c1f8e..24a0cea9d64e8 100644 ---- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -@@ -5907,8 +5907,8 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - struct ipw2100_priv *priv = libipw_priv(dev); - char fw_ver[64], ucode_ver[64]; - -- strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); -- strlcpy(info->version, DRV_VERSION, sizeof(info->version)); -+ strscpy(info->driver, DRV_NAME, sizeof(info->driver)); -+ strscpy(info->version, DRV_VERSION, sizeof(info->version)); - - ipw2100_get_fwversion(priv, fw_ver, sizeof(fw_ver)); - ipw2100_get_ucodeversion(priv, ucode_ver, sizeof(ucode_ver)); -@@ -5916,7 +5916,7 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - snprintf(info->fw_version, sizeof(info->fw_version), "%s:%d:%s", - fw_ver, priv->eeprom_version, ucode_ver); - -- strlcpy(info->bus_info, pci_name(priv->pci_dev), -+ strscpy(info->bus_info, pci_name(priv->pci_dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -index bb728fb24b8a4..706cd36a43055 100644 ---- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -@@ -10427,8 +10427,8 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - char date[32]; - u32 len; - -- strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); -- strlcpy(info->version, DRV_VERSION, sizeof(info->version)); -+ strscpy(info->driver, DRV_NAME, sizeof(info->driver)); -+ strscpy(info->version, DRV_VERSION, sizeof(info->version)); - - len = sizeof(vers); - ipw_get_ordinal(p, IPW_ORD_STAT_FW_VERSION, vers, &len); -@@ -10437,7 +10437,7 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - - snprintf(info->fw_version, sizeof(info->fw_version), "%s (%s)", - vers, date); -- strlcpy(info->bus_info, pci_name(p->pci_dev), -+ strscpy(info->bus_info, pci_name(p->pci_dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c -index ef0ac42a55a2a..e786bd9f3163a 100644 ---- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c -+++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c -@@ -3256,7 +3256,7 @@ il3945_store_measurement(struct device *d, struct device_attribute *attr, - - if (count) { - char *p = buffer; -- strlcpy(buffer, buf, sizeof(buffer)); -+ strscpy(buffer, buf, sizeof(buffer)); - channel = simple_strtoul(p, NULL, 0); - if (channel) - params.channel = channel; -diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -index 514c7b01dbf6f..293a081b0dc75 100644 ---- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -+++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -@@ -3859,7 +3859,7 @@ static void prism2_get_drvinfo(struct net_device *dev, - iface = netdev_priv(dev); - local = iface->local; - -- strlcpy(info->driver, "hostap", sizeof(info->driver)); -+ strscpy(info->driver, "hostap", sizeof(info->driver)); - snprintf(info->fw_version, sizeof(info->fw_version), - "%d.%d.%d", (local->sta_fw_ver >> 16) & 0xff, - (local->sta_fw_ver >> 8) & 0xff, -diff --git a/drivers/net/wireless/marvell/libertas/ethtool.c b/drivers/net/wireless/marvell/libertas/ethtool.c -index 1bb8746a0b23b..d580e6a95d7a0 100644 ---- a/drivers/net/wireless/marvell/libertas/ethtool.c -+++ b/drivers/net/wireless/marvell/libertas/ethtool.c -@@ -20,8 +20,8 @@ static void lbs_ethtool_get_drvinfo(struct net_device *dev, - priv->fwrelease >> 16 & 0xff, - priv->fwrelease >> 8 & 0xff, - priv->fwrelease & 0xff); -- strlcpy(info->driver, "libertas", sizeof(info->driver)); -- strlcpy(info->version, lbs_driver_version, sizeof(info->version)); -+ strscpy(info->driver, "libertas", sizeof(info->driver)); -+ strscpy(info->version, lbs_driver_version, sizeof(info->version)); - } - - /* -diff --git a/drivers/net/wireless/microchip/wilc1000/mon.c b/drivers/net/wireless/microchip/wilc1000/mon.c -index b5a1b65c087ca..03b7229a0ff5a 100644 ---- a/drivers/net/wireless/microchip/wilc1000/mon.c -+++ b/drivers/net/wireless/microchip/wilc1000/mon.c -@@ -229,7 +229,7 @@ struct net_device *wilc_wfi_init_mon_interface(struct wilc *wl, - return NULL; - - wl->monitor_dev->type = ARPHRD_IEEE80211_RADIOTAP; -- strlcpy(wl->monitor_dev->name, name, IFNAMSIZ); -+ strscpy(wl->monitor_dev->name, name, IFNAMSIZ); - wl->monitor_dev->netdev_ops = &wilc_wfi_netdev_ops; - wl->monitor_dev->needs_free_netdev = true; - -diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -index 54cdf3ad09d75..7b555bd365271 100644 ---- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -@@ -1236,7 +1236,7 @@ int qtnf_wiphy_register(struct qtnf_hw_info *hw_info, struct qtnf_wmac *mac) - mac->macinfo.extended_capabilities_len; - } - -- strlcpy(wiphy->fw_version, hw_info->fw_version, -+ strscpy(wiphy->fw_version, hw_info->fw_version, - sizeof(wiphy->fw_version)); - wiphy->hw_version = hw_info->hw_version; - -diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c -index f3ccbd2b10847..c75241f505835 100644 ---- a/drivers/net/wireless/quantenna/qtnfmac/commands.c -+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c -@@ -979,7 +979,7 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus, - hwinfo->total_rx_chain, hwinfo->total_tx_chain, - hwinfo->fw_ver); - -- strlcpy(hwinfo->fw_version, bld_label, sizeof(hwinfo->fw_version)); -+ strscpy(hwinfo->fw_version, bld_label, sizeof(hwinfo->fw_version)); - hwinfo->hw_version = hw_ver; - - return 0; -diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -index 49421d10e22bc..f7d95c9624a01 100644 ---- a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -+++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -@@ -143,7 +143,7 @@ static int rtl8187_register_led(struct ieee80211_hw *dev, - led->dev = dev; - led->ledpin = ledpin; - led->is_radio = is_radio; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - - led->led_dev.name = led->name; - led->led_dev.default_trigger = default_trigger; -diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c -index 7351a2c127adc..7fb2f95134760 100644 ---- a/drivers/net/wireless/wl3501_cs.c -+++ b/drivers/net/wireless/wl3501_cs.c -@@ -1441,7 +1441,7 @@ static void wl3501_detach(struct pcmcia_device *link) - static int wl3501_get_name(struct net_device *dev, struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) - { -- strlcpy(wrqu->name, "IEEE 802.11-DS", sizeof(wrqu->name)); -+ strscpy(wrqu->name, "IEEE 802.11-DS", sizeof(wrqu->name)); - return 0; - } - -@@ -1652,7 +1652,7 @@ static int wl3501_set_nick(struct net_device *dev, struct iw_request_info *info, - - if (wrqu->data.length > sizeof(this->nick)) - return -E2BIG; -- strlcpy(this->nick, extra, wrqu->data.length); -+ strscpy(this->nick, extra, wrqu->data.length); - return 0; - } - -@@ -1661,7 +1661,7 @@ static int wl3501_get_nick(struct net_device *dev, struct iw_request_info *info, - { - struct wl3501_card *this = netdev_priv(dev); - -- strlcpy(extra, this->nick, 32); -+ strscpy(extra, this->nick, 32); - wrqu->data.length = strlen(extra); - return 0; - } -@@ -1965,7 +1965,7 @@ static int wl3501_config(struct pcmcia_device *link) - this->firmware_date[0] = '\0'; - this->rssi = 255; - this->chan = iw_default_channel(this->reg_domain); -- strlcpy(this->nick, "Planet WL3501", sizeof(this->nick)); -+ strscpy(this->nick, "Planet WL3501", sizeof(this->nick)); - spin_lock_init(&this->lock); - init_waitqueue_head(&this->wait); - netif_start_queue(dev); --- -2.39.2 - diff --git a/queue-5.15/clk-clocking-wizard-check-return-value-of-devm_kaspr.patch b/queue-5.15/clk-clocking-wizard-check-return-value-of-devm_kaspr.patch deleted file mode 100644 index d3d3fac532b..00000000000 --- a/queue-5.15/clk-clocking-wizard-check-return-value-of-devm_kaspr.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 43d0645eab6b643c4b3c2f587320ba8b8f907abe Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 30 May 2023 12:39:13 +0300 -Subject: clk: clocking-wizard: check return value of devm_kasprintf() - -From: Claudiu Beznea - -[ Upstream commit b1356ed1a4461de06dfdc02bf549c3e8750162e5 ] - -devm_kasprintf() returns a pointer to dynamically allocated memory. -Pointer could be NULL in case allocation fails. Check pointer validity. -Identified with coccinelle (kmerr.cocci script). - -Fixes: 2046338dcbc6 ("ARM: mxs: Use soc bus infrastructure") -Signed-off-by: Claudiu Beznea -Link: https://lore.kernel.org/r/20230530093913.1656095-9-claudiu.beznea@microchip.com -Signed-off-by: Stephen Boyd -Signed-off-by: Sasha Levin ---- - drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -index cda1e5be305a4..09a95c02ec5f6 100644 ---- a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -+++ b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -@@ -645,6 +645,11 @@ static int clk_wzrd_probe(struct platform_device *pdev) - } - - clkout_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_out0", dev_name(&pdev->dev)); -+ if (!clkout_name) { -+ ret = -ENOMEM; -+ goto err_disable_clk; -+ } -+ - if (nr_outputs == 1) { - clk_wzrd->clkout[0] = clk_wzrd_register_divider - (&pdev->dev, clkout_name, --- -2.39.2 - diff --git a/queue-5.15/clk-clocking-wizard-rename-nr-outputs-to-xlnx-nr-out.patch b/queue-5.15/clk-clocking-wizard-rename-nr-outputs-to-xlnx-nr-out.patch deleted file mode 100644 index 9f1581c981e..00000000000 --- a/queue-5.15/clk-clocking-wizard-rename-nr-outputs-to-xlnx-nr-out.patch +++ /dev/null @@ -1,37 +0,0 @@ -From dffa103f0b6b7b25e958cf2f0c71cb9096d7dfed Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 11 Apr 2022 15:34:41 +0530 -Subject: clk: clocking-wizard: Rename nr-outputs to xlnx,nr-outputs - -From: Shubhrajyoti Datta - -[ Upstream commit 787ddddcbc43ab158cc15c36986c2c64b6fc84aa ] - -Rename nr-outputs to xlnx,output. - -Signed-off-by: Shubhrajyoti Datta -Link: https://lore.kernel.org/r/20220411100443.15132-4-shubhrajyoti.datta@xilinx.com -Acked-by: Greg Kroah-Hartman -Signed-off-by: Stephen Boyd -Stable-dep-of: b1356ed1a446 ("clk: clocking-wizard: check return value of devm_kasprintf()") -Signed-off-by: Sasha Levin ---- - drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -index 8c1934df70dea..e5c5a7c25bbc9 100644 ---- a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -+++ b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -@@ -479,7 +479,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - goto err_disable_clk; - } - -- ret = of_property_read_u32(np, "nr-outputs", &nr_outputs); -+ ret = of_property_read_u32(np, "xlnx,nr-outputs", &nr_outputs); - if (ret || nr_outputs > WZRD_NUM_OUTPUTS) { - ret = -EINVAL; - goto err_disable_clk; --- -2.39.2 - diff --git a/queue-5.15/clocking-wizard-support-higher-frequency-accuracy.patch b/queue-5.15/clocking-wizard-support-higher-frequency-accuracy.patch deleted file mode 100644 index a5774e7259e..00000000000 --- a/queue-5.15/clocking-wizard-support-higher-frequency-accuracy.patch +++ /dev/null @@ -1,414 +0,0 @@ -From 23721925927e8c4ea6a163f54f4fd7d2d1006f43 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 27 Mar 2023 11:56:37 +0530 -Subject: clocking-wizard: Support higher frequency accuracy - -From: Shubhrajyoti Datta - -[ Upstream commit 595c88cda65d30c6b36277c232193295a45406dc ] - -Change the multipliers and divisors to support a higher -frequency accuracy if there is only one output. -Currently only O is changed now we are changing M, D and O. -For multiple output case the earlier behavior is retained. - -Signed-off-by: Shubhrajyoti Datta -Link: https://lore.kernel.org/r/20230327062637.22237-1-shubhrajyoti.datta@amd.com -Signed-off-by: Stephen Boyd -Stable-dep-of: b1356ed1a446 ("clk: clocking-wizard: check return value of devm_kasprintf()") -Signed-off-by: Sasha Levin ---- - .../clocking-wizard/clk-xlnx-clock-wizard.c | 228 ++++++++++++++++-- - 1 file changed, 204 insertions(+), 24 deletions(-) - -diff --git a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -index e5c5a7c25bbc9..cda1e5be305a4 100644 ---- a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -+++ b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c -@@ -7,12 +7,14 @@ - * Sören Brinkmann - */ - -+#include - #include - #include - #include - #include - #include - #include -+#include - #include - #include - #include -@@ -36,6 +38,7 @@ - #define WZRD_CLKOUT_DIVIDE_MASK (0xff << WZRD_DIVCLK_DIVIDE_SHIFT) - #define WZRD_CLKOUT_FRAC_SHIFT 8 - #define WZRD_CLKOUT_FRAC_MASK 0x3ff -+#define WZRD_CLKOUT0_FRAC_MASK GENMASK(17, 8) - - #define WZRD_DR_MAX_INT_DIV_VALUE 255 - #define WZRD_DR_STATUS_REG_OFFSET 0x04 -@@ -46,6 +49,22 @@ - - #define WZRD_USEC_POLL 10 - #define WZRD_TIMEOUT_POLL 1000 -+ -+/* Divider limits, from UG572 Table 3-4 for Ultrascale+ */ -+#define DIV_O 0x01 -+#define DIV_ALL 0x03 -+ -+#define WZRD_M_MIN 2 -+#define WZRD_M_MAX 128 -+#define WZRD_D_MIN 1 -+#define WZRD_D_MAX 106 -+#define WZRD_VCO_MIN 800000000 -+#define WZRD_VCO_MAX 1600000000 -+#define WZRD_O_MIN 1 -+#define WZRD_O_MAX 128 -+#define WZRD_MIN_ERR 20000 -+#define WZRD_FRAC_POINTS 1000 -+ - /* Get the mask from width */ - #define div_mask(width) ((1 << (width)) - 1) - -@@ -94,6 +113,9 @@ struct clk_wzrd { - * @width: width of the divider bit field - * @flags: clk_wzrd divider flags - * @table: array of value/divider pairs, last entry should have div = 0 -+ * @m: value of the multiplier -+ * @d: value of the common divider -+ * @o: value of the leaf divider - * @lock: register lock - */ - struct clk_wzrd_divider { -@@ -104,6 +126,9 @@ struct clk_wzrd_divider { - u8 width; - u8 flags; - const struct clk_div_table *table; -+ u32 m; -+ u32 d; -+ u32 o; - spinlock_t *lock; /* divider lock */ - }; - -@@ -193,12 +218,155 @@ static long clk_wzrd_round_rate(struct clk_hw *hw, unsigned long rate, - return *prate / div; - } - -+static int clk_wzrd_get_divisors(struct clk_hw *hw, unsigned long rate, -+ unsigned long parent_rate) -+{ -+ struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw); -+ unsigned long vco_freq, freq, diff; -+ u32 m, d, o; -+ -+ for (m = WZRD_M_MIN; m <= WZRD_M_MAX; m++) { -+ for (d = WZRD_D_MIN; d <= WZRD_D_MAX; d++) { -+ vco_freq = DIV_ROUND_CLOSEST((parent_rate * m), d); -+ if (vco_freq >= WZRD_VCO_MIN && vco_freq <= WZRD_VCO_MAX) { -+ for (o = WZRD_O_MIN; o <= WZRD_O_MAX; o++) { -+ freq = DIV_ROUND_CLOSEST_ULL(vco_freq, o); -+ diff = abs(freq - rate); -+ -+ if (diff < WZRD_MIN_ERR) { -+ divider->m = m; -+ divider->d = d; -+ divider->o = o; -+ return 0; -+ } -+ } -+ } -+ } -+ } -+ return -EBUSY; -+} -+ -+static int clk_wzrd_dynamic_all_nolock(struct clk_hw *hw, unsigned long rate, -+ unsigned long parent_rate) -+{ -+ struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw); -+ unsigned long vco_freq, rate_div, clockout0_div; -+ u32 reg, pre, value, f; -+ int err; -+ -+ err = clk_wzrd_get_divisors(hw, rate, parent_rate); -+ if (err) -+ return err; -+ -+ vco_freq = DIV_ROUND_CLOSEST(parent_rate * divider->m, divider->d); -+ rate_div = DIV_ROUND_CLOSEST_ULL((vco_freq * WZRD_FRAC_POINTS), rate); -+ -+ clockout0_div = div_u64(rate_div, WZRD_FRAC_POINTS); -+ -+ pre = DIV_ROUND_CLOSEST_ULL(vco_freq * WZRD_FRAC_POINTS, rate); -+ f = (pre - (clockout0_div * WZRD_FRAC_POINTS)); -+ f &= WZRD_CLKOUT_FRAC_MASK; -+ -+ reg = FIELD_PREP(WZRD_CLKOUT_DIVIDE_MASK, clockout0_div) | -+ FIELD_PREP(WZRD_CLKOUT0_FRAC_MASK, f); -+ -+ writel(reg, divider->base + WZRD_CLK_CFG_REG(2)); -+ /* Set divisor and clear phase offset */ -+ reg = FIELD_PREP(WZRD_CLKFBOUT_MULT_MASK, divider->m) | -+ FIELD_PREP(WZRD_DIVCLK_DIVIDE_MASK, divider->d); -+ writel(reg, divider->base + WZRD_CLK_CFG_REG(0)); -+ writel(divider->o, divider->base + WZRD_CLK_CFG_REG(2)); -+ writel(0, divider->base + WZRD_CLK_CFG_REG(3)); -+ /* Check status register */ -+ err = readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, value, -+ value & WZRD_DR_LOCK_BIT_MASK, -+ WZRD_USEC_POLL, WZRD_TIMEOUT_POLL); -+ if (err) -+ return -ETIMEDOUT; -+ -+ /* Initiate reconfiguration */ -+ writel(WZRD_DR_BEGIN_DYNA_RECONF, -+ divider->base + WZRD_DR_INIT_REG_OFFSET); -+ -+ /* Check status register */ -+ return readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, value, -+ value & WZRD_DR_LOCK_BIT_MASK, -+ WZRD_USEC_POLL, WZRD_TIMEOUT_POLL); -+} -+ -+static int clk_wzrd_dynamic_all(struct clk_hw *hw, unsigned long rate, -+ unsigned long parent_rate) -+{ -+ struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw); -+ unsigned long flags = 0; -+ int ret; -+ -+ spin_lock_irqsave(divider->lock, flags); -+ -+ ret = clk_wzrd_dynamic_all_nolock(hw, rate, parent_rate); -+ -+ spin_unlock_irqrestore(divider->lock, flags); -+ -+ return ret; -+} -+ -+static unsigned long clk_wzrd_recalc_rate_all(struct clk_hw *hw, -+ unsigned long parent_rate) -+{ -+ struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw); -+ u32 m, d, o, div, reg, f; -+ -+ reg = readl(divider->base + WZRD_CLK_CFG_REG(0)); -+ d = FIELD_GET(WZRD_DIVCLK_DIVIDE_MASK, reg); -+ m = FIELD_GET(WZRD_CLKFBOUT_MULT_MASK, reg); -+ reg = readl(divider->base + WZRD_CLK_CFG_REG(2)); -+ o = FIELD_GET(WZRD_DIVCLK_DIVIDE_MASK, reg); -+ f = FIELD_GET(WZRD_CLKOUT0_FRAC_MASK, reg); -+ -+ div = DIV_ROUND_CLOSEST(d * (WZRD_FRAC_POINTS * o + f), WZRD_FRAC_POINTS); -+ return divider_recalc_rate(hw, parent_rate * m, div, divider->table, -+ divider->flags, divider->width); -+} -+ -+static long clk_wzrd_round_rate_all(struct clk_hw *hw, unsigned long rate, -+ unsigned long *prate) -+{ -+ struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw); -+ unsigned long int_freq; -+ u32 m, d, o, div, f; -+ int err; -+ -+ err = clk_wzrd_get_divisors(hw, rate, *prate); -+ if (err) -+ return err; -+ -+ m = divider->m; -+ d = divider->d; -+ o = divider->o; -+ -+ div = d * o; -+ int_freq = divider_recalc_rate(hw, *prate * m, div, divider->table, -+ divider->flags, divider->width); -+ -+ if (rate > int_freq) { -+ f = DIV_ROUND_CLOSEST_ULL(rate * WZRD_FRAC_POINTS, int_freq); -+ rate = DIV_ROUND_CLOSEST(int_freq * f, WZRD_FRAC_POINTS); -+ } -+ return rate; -+} -+ - static const struct clk_ops clk_wzrd_clk_divider_ops = { - .round_rate = clk_wzrd_round_rate, - .set_rate = clk_wzrd_dynamic_reconfig, - .recalc_rate = clk_wzrd_recalc_rate, - }; - -+static const struct clk_ops clk_wzrd_clk_div_all_ops = { -+ .round_rate = clk_wzrd_round_rate_all, -+ .set_rate = clk_wzrd_dynamic_all, -+ .recalc_rate = clk_wzrd_recalc_rate_all, -+}; -+ - static unsigned long clk_wzrd_recalc_ratef(struct clk_hw *hw, - unsigned long parent_rate) - { -@@ -273,7 +441,7 @@ static struct clk *clk_wzrd_register_divf(struct device *dev, - void __iomem *base, u16 offset, - u8 shift, u8 width, - u8 clk_divider_flags, -- const struct clk_div_table *table, -+ u32 div_type, - spinlock_t *lock) - { - struct clk_wzrd_divider *div; -@@ -300,7 +468,6 @@ static struct clk *clk_wzrd_register_divf(struct device *dev, - div->flags = clk_divider_flags; - div->lock = lock; - div->hw.init = &init; -- div->table = table; - - hw = &div->hw; - ret = devm_clk_hw_register(dev, hw); -@@ -317,7 +484,7 @@ static struct clk *clk_wzrd_register_divider(struct device *dev, - void __iomem *base, u16 offset, - u8 shift, u8 width, - u8 clk_divider_flags, -- const struct clk_div_table *table, -+ u32 div_type, - spinlock_t *lock) - { - struct clk_wzrd_divider *div; -@@ -330,7 +497,12 @@ static struct clk *clk_wzrd_register_divider(struct device *dev, - return ERR_PTR(-ENOMEM); - - init.name = name; -- init.ops = &clk_wzrd_clk_divider_ops; -+ if (clk_divider_flags & CLK_DIVIDER_READ_ONLY) -+ init.ops = &clk_divider_ro_ops; -+ else if (div_type == DIV_O) -+ init.ops = &clk_wzrd_clk_divider_ops; -+ else -+ init.ops = &clk_wzrd_clk_div_all_ops; - init.flags = flags; - init.parent_names = &parent_name; - init.num_parents = 1; -@@ -342,7 +514,6 @@ static struct clk *clk_wzrd_register_divider(struct device *dev, - div->flags = clk_divider_flags; - div->lock = lock; - div->hw.init = &init; -- div->table = table; - - hw = &div->hw; - ret = devm_clk_hw_register(dev, hw); -@@ -418,6 +589,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - const char *clk_name; - void __iomem *ctrl_reg; - struct clk_wzrd *clk_wzrd; -+ const char *clkout_name; - struct device_node *np = pdev->dev.of_node; - int nr_outputs; - unsigned long flags = 0; -@@ -466,6 +638,26 @@ static int clk_wzrd_probe(struct platform_device *pdev) - goto err_disable_clk; - } - -+ ret = of_property_read_u32(np, "xlnx,nr-outputs", &nr_outputs); -+ if (ret || nr_outputs > WZRD_NUM_OUTPUTS) { -+ ret = -EINVAL; -+ goto err_disable_clk; -+ } -+ -+ clkout_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_out0", dev_name(&pdev->dev)); -+ if (nr_outputs == 1) { -+ clk_wzrd->clkout[0] = clk_wzrd_register_divider -+ (&pdev->dev, clkout_name, -+ __clk_get_name(clk_wzrd->clk_in1), 0, -+ clk_wzrd->base, WZRD_CLK_CFG_REG(3), -+ WZRD_CLKOUT_DIVIDE_SHIFT, -+ WZRD_CLKOUT_DIVIDE_WIDTH, -+ CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, -+ DIV_ALL, &clkwzrd_lock); -+ -+ goto out; -+ } -+ - reg = readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)); - reg_f = reg & WZRD_CLKFBOUT_FRAC_MASK; - reg_f = reg_f >> WZRD_CLKFBOUT_FRAC_SHIFT; -@@ -473,20 +665,11 @@ static int clk_wzrd_probe(struct platform_device *pdev) - reg = reg & WZRD_CLKFBOUT_MULT_MASK; - reg = reg >> WZRD_CLKFBOUT_MULT_SHIFT; - mult = (reg * 1000) + reg_f; -- clk_name = kasprintf(GFP_KERNEL, "%s_mul", dev_name(&pdev->dev)); -+ clk_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_mul", dev_name(&pdev->dev)); - if (!clk_name) { - ret = -ENOMEM; - goto err_disable_clk; - } -- -- ret = of_property_read_u32(np, "xlnx,nr-outputs", &nr_outputs); -- if (ret || nr_outputs > WZRD_NUM_OUTPUTS) { -- ret = -EINVAL; -- goto err_disable_clk; -- } -- if (nr_outputs == 1) -- flags = CLK_SET_RATE_PARENT; -- - clk_wzrd->clks_internal[wzrd_clk_mul] = clk_register_fixed_factor - (&pdev->dev, clk_name, - __clk_get_name(clk_wzrd->clk_in1), -@@ -497,7 +680,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - goto err_disable_clk; - } - -- clk_name = kasprintf(GFP_KERNEL, "%s_mul_div", dev_name(&pdev->dev)); -+ clk_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_mul_div", dev_name(&pdev->dev)); - if (!clk_name) { - ret = -ENOMEM; - goto err_rm_int_clk; -@@ -518,9 +701,8 @@ static int clk_wzrd_probe(struct platform_device *pdev) - - /* register div per output */ - for (i = nr_outputs - 1; i >= 0 ; i--) { -- const char *clkout_name; -- -- clkout_name = kasprintf(GFP_KERNEL, "%s_out%d", dev_name(&pdev->dev), i); -+ clkout_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, -+ "%s_out%d", dev_name(&pdev->dev), i); - if (!clkout_name) { - ret = -ENOMEM; - goto err_rm_int_clk; -@@ -534,7 +716,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - WZRD_CLKOUT_DIVIDE_SHIFT, - WZRD_CLKOUT_DIVIDE_WIDTH, - CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, -- NULL, &clkwzrd_lock); -+ DIV_O, &clkwzrd_lock); - else - clk_wzrd->clkout[i] = clk_wzrd_register_divider - (&pdev->dev, clkout_name, -@@ -543,7 +725,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - WZRD_CLKOUT_DIVIDE_SHIFT, - WZRD_CLKOUT_DIVIDE_WIDTH, - CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, -- NULL, &clkwzrd_lock); -+ DIV_O, &clkwzrd_lock); - if (IS_ERR(clk_wzrd->clkout[i])) { - int j; - -@@ -556,8 +738,7 @@ static int clk_wzrd_probe(struct platform_device *pdev) - } - } - -- kfree(clk_name); -- -+out: - clk_wzrd->clk_data.clks = clk_wzrd->clkout; - clk_wzrd->clk_data.clk_num = ARRAY_SIZE(clk_wzrd->clkout); - of_clk_add_provider(np, of_clk_src_onecell_get, &clk_wzrd->clk_data); -@@ -582,7 +763,6 @@ static int clk_wzrd_probe(struct platform_device *pdev) - err_rm_int_clks: - clk_unregister(clk_wzrd->clks_internal[1]); - err_rm_int_clk: -- kfree(clk_name); - clk_unregister(clk_wzrd->clks_internal[0]); - err_disable_clk: - clk_disable_unprepare(clk_wzrd->axi_clk); --- -2.39.2 - diff --git a/queue-5.15/f2fs-do-not-allow-to-defragment-files-have-fi_compre.patch b/queue-5.15/f2fs-do-not-allow-to-defragment-files-have-fi_compre.patch deleted file mode 100644 index 53f66554bdc..00000000000 --- a/queue-5.15/f2fs-do-not-allow-to-defragment-files-have-fi_compre.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 4008f7dee8b5c9cff7304fc72a24f6954949cebb Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 26 Apr 2023 00:47:11 +0800 -Subject: f2fs: do not allow to defragment files have FI_COMPRESS_RELEASED - -From: Yangtao Li - -[ Upstream commit 7cd2e5f75b86a1befa99834f3ed1d735eeff69e6 ] - -If a file has FI_COMPRESS_RELEASED, all writes for it should not be -allowed. - -Fixes: 5fdb322ff2c2 ("f2fs: add F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_COMPRESS_FILE") -Signed-off-by: Qi Han -Signed-off-by: Yangtao Li -Reviewed-by: Chao Yu -Signed-off-by: Jaegeuk Kim -Signed-off-by: Sasha Levin ---- - fs/f2fs/file.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c -index f76d8a79716ef..a954983916c73 100644 ---- a/fs/f2fs/file.c -+++ b/fs/f2fs/file.c -@@ -2568,6 +2568,11 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - - inode_lock(inode); - -+ if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED)) { -+ err = -EINVAL; -+ goto unlock_out; -+ } -+ - /* if in-place-update policy is enabled, don't waste time here */ - set_inode_flag(inode, FI_OPU_WRITE); - if (f2fs_should_update_inplace(inode, NULL)) { -@@ -2692,6 +2697,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - clear_inode_flag(inode, FI_SKIP_WRITES); - out: - clear_inode_flag(inode, FI_OPU_WRITE); -+unlock_out: - inode_unlock(inode); - if (!err) - range->len = (u64)total << PAGE_SHIFT; --- -2.39.2 - diff --git a/queue-5.15/f2fs-introduce-f2fs_ipu_honor_opu_write-ipu-policy.patch b/queue-5.15/f2fs-introduce-f2fs_ipu_honor_opu_write-ipu-policy.patch deleted file mode 100644 index 219b0d1798b..00000000000 --- a/queue-5.15/f2fs-introduce-f2fs_ipu_honor_opu_write-ipu-policy.patch +++ /dev/null @@ -1,230 +0,0 @@ -From 658d7b4e41fd38911414a031d647f24f218c6df8 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 4 Feb 2022 15:19:46 +0800 -Subject: f2fs: introduce F2FS_IPU_HONOR_OPU_WRITE ipu policy - -From: Chao Yu - -[ Upstream commit 1018a5463a063715365784704c4e8cdf2eec4b04 ] - -Once F2FS_IPU_FORCE policy is enabled in some cases: -a) f2fs forces to use F2FS_IPU_FORCE in a small-sized volume -b) user sets F2FS_IPU_FORCE policy via sysfs - -Then we may fail to defragment file due to IPU policy check, it doesn't -make sense, let's introduce a new IPU policy to allow OPU during file -defragmentation. - -In small-sized volume, let's enable F2FS_IPU_HONOR_OPU_WRITE policy -by default. - -Signed-off-by: Chao Yu -Signed-off-by: Jaegeuk Kim -Stable-dep-of: 7cd2e5f75b86 ("f2fs: do not allow to defragment files have FI_COMPRESS_RELEASED") -Signed-off-by: Sasha Levin ---- - Documentation/ABI/testing/sysfs-fs-f2fs | 3 ++- - fs/f2fs/data.c | 18 +++++++++++++----- - fs/f2fs/f2fs.h | 3 ++- - fs/f2fs/file.c | 18 +++++++++++------- - fs/f2fs/segment.h | 5 ++++- - fs/f2fs/super.c | 3 ++- - 6 files changed, 34 insertions(+), 16 deletions(-) - -diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs -index 48d41b6696270..89dec1f3ea6d9 100644 ---- a/Documentation/ABI/testing/sysfs-fs-f2fs -+++ b/Documentation/ABI/testing/sysfs-fs-f2fs -@@ -55,8 +55,9 @@ Description: Controls the in-place-update policy. - 0x04 F2FS_IPU_UTIL - 0x08 F2FS_IPU_SSR_UTIL - 0x10 F2FS_IPU_FSYNC -- 0x20 F2FS_IPU_ASYNC, -+ 0x20 F2FS_IPU_ASYNC - 0x40 F2FS_IPU_NOCACHE -+ 0x80 F2FS_IPU_HONOR_OPU_WRITE - ==== ================= - - Refer segment.h for details. -diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c -index 3956852ad1de0..141e59246da5d 100644 ---- a/fs/f2fs/data.c -+++ b/fs/f2fs/data.c -@@ -2514,6 +2514,9 @@ static inline bool check_inplace_update_policy(struct inode *inode, - struct f2fs_sb_info *sbi = F2FS_I_SB(inode); - unsigned int policy = SM_I(sbi)->ipu_policy; - -+ if (policy & (0x1 << F2FS_IPU_HONOR_OPU_WRITE) && -+ is_inode_flag_set(inode, FI_OPU_WRITE)) -+ return false; - if (policy & (0x1 << F2FS_IPU_FORCE)) - return true; - if (policy & (0x1 << F2FS_IPU_SSR) && f2fs_need_SSR(sbi)) -@@ -2584,6 +2587,9 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio) - if (is_inode_flag_set(inode, FI_ALIGNED_WRITE)) - return true; - -+ if (is_inode_flag_set(inode, FI_OPU_WRITE)) -+ return true; -+ - if (fio) { - if (page_private_gcing(fio->page)) - return true; -@@ -3209,8 +3215,8 @@ static int __f2fs_write_data_pages(struct address_space *mapping, - f2fs_available_free_memory(sbi, DIRTY_DENTS)) - goto skip_write; - -- /* skip writing during file defragment */ -- if (is_inode_flag_set(inode, FI_DO_DEFRAG)) -+ /* skip writing in file defragment preparing stage */ -+ if (is_inode_flag_set(inode, FI_SKIP_WRITES)) - goto skip_write; - - trace_f2fs_writepages(mapping->host, wbc, DATA); -@@ -3944,6 +3950,7 @@ static int f2fs_migrate_blocks(struct inode *inode, block_t start_blk, - filemap_invalidate_lock(inode->i_mapping); - - set_inode_flag(inode, FI_ALIGNED_WRITE); -+ set_inode_flag(inode, FI_OPU_WRITE); - - for (; secidx < end_sec; secidx++) { - down_write(&sbi->pin_sem); -@@ -3952,7 +3959,7 @@ static int f2fs_migrate_blocks(struct inode *inode, block_t start_blk, - f2fs_allocate_new_section(sbi, CURSEG_COLD_DATA_PINNED, false); - f2fs_unlock_op(sbi); - -- set_inode_flag(inode, FI_DO_DEFRAG); -+ set_inode_flag(inode, FI_SKIP_WRITES); - - for (blkofs = 0; blkofs < blk_per_sec; blkofs++) { - struct page *page; -@@ -3969,7 +3976,7 @@ static int f2fs_migrate_blocks(struct inode *inode, block_t start_blk, - f2fs_put_page(page, 1); - } - -- clear_inode_flag(inode, FI_DO_DEFRAG); -+ clear_inode_flag(inode, FI_SKIP_WRITES); - - ret = filemap_fdatawrite(inode->i_mapping); - -@@ -3980,7 +3987,8 @@ static int f2fs_migrate_blocks(struct inode *inode, block_t start_blk, - } - - done: -- clear_inode_flag(inode, FI_DO_DEFRAG); -+ clear_inode_flag(inode, FI_SKIP_WRITES); -+ clear_inode_flag(inode, FI_OPU_WRITE); - clear_inode_flag(inode, FI_ALIGNED_WRITE); - - filemap_invalidate_unlock(inode->i_mapping); -diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h -index 5c0920e11e4ba..cc1115b5c08de 100644 ---- a/fs/f2fs/f2fs.h -+++ b/fs/f2fs/f2fs.h -@@ -712,7 +712,8 @@ enum { - FI_DROP_CACHE, /* drop dirty page cache */ - FI_DATA_EXIST, /* indicate data exists */ - FI_INLINE_DOTS, /* indicate inline dot dentries */ -- FI_DO_DEFRAG, /* indicate defragment is running */ -+ FI_SKIP_WRITES, /* should skip data page writeback */ -+ FI_OPU_WRITE, /* used for opu per file */ - FI_DIRTY_FILE, /* indicate regular/symlink has dirty pages */ - FI_NO_PREALLOC, /* indicate skipped preallocated blocks */ - FI_HOT_DATA, /* indicate file is hot */ -diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c -index 2c24162f72f0c..f76d8a79716ef 100644 ---- a/fs/f2fs/file.c -+++ b/fs/f2fs/file.c -@@ -2561,10 +2561,6 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - bool fragmented = false; - int err; - -- /* if in-place-update policy is enabled, don't waste time here */ -- if (f2fs_should_update_inplace(inode, NULL)) -- return -EINVAL; -- - pg_start = range->start >> PAGE_SHIFT; - pg_end = (range->start + range->len) >> PAGE_SHIFT; - -@@ -2572,6 +2568,13 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - - inode_lock(inode); - -+ /* if in-place-update policy is enabled, don't waste time here */ -+ set_inode_flag(inode, FI_OPU_WRITE); -+ if (f2fs_should_update_inplace(inode, NULL)) { -+ err = -EINVAL; -+ goto out; -+ } -+ - /* writeback all dirty pages in the range */ - err = filemap_write_and_wait_range(inode->i_mapping, range->start, - range->start + range->len - 1); -@@ -2653,7 +2656,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - goto check; - } - -- set_inode_flag(inode, FI_DO_DEFRAG); -+ set_inode_flag(inode, FI_SKIP_WRITES); - - idx = map.m_lblk; - while (idx < map.m_lblk + map.m_len && cnt < blk_per_seg) { -@@ -2679,15 +2682,16 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi, - if (map.m_lblk < pg_end && cnt < blk_per_seg) - goto do_map; - -- clear_inode_flag(inode, FI_DO_DEFRAG); -+ clear_inode_flag(inode, FI_SKIP_WRITES); - - err = filemap_fdatawrite(inode->i_mapping); - if (err) - goto out; - } - clear_out: -- clear_inode_flag(inode, FI_DO_DEFRAG); -+ clear_inode_flag(inode, FI_SKIP_WRITES); - out: -+ clear_inode_flag(inode, FI_OPU_WRITE); - inode_unlock(inode); - if (!err) - range->len = (u64)total << PAGE_SHIFT; -diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h -index 04f448ddf49ea..2c1165e8f1283 100644 ---- a/fs/f2fs/segment.h -+++ b/fs/f2fs/segment.h -@@ -665,7 +665,9 @@ static inline int utilization(struct f2fs_sb_info *sbi) - * pages over min_fsync_blocks. (=default option) - * F2FS_IPU_ASYNC - do IPU given by asynchronous write requests. - * F2FS_IPU_NOCACHE - disable IPU bio cache. -- * F2FS_IPUT_DISABLE - disable IPU. (=default option in LFS mode) -+ * F2FS_IPU_HONOR_OPU_WRITE - use OPU write prior to IPU write if inode has -+ * FI_OPU_WRITE flag. -+ * F2FS_IPU_DISABLE - disable IPU. (=default option in LFS mode) - */ - #define DEF_MIN_IPU_UTIL 70 - #define DEF_MIN_FSYNC_BLOCKS 8 -@@ -681,6 +683,7 @@ enum { - F2FS_IPU_FSYNC, - F2FS_IPU_ASYNC, - F2FS_IPU_NOCACHE, -+ F2FS_IPU_HONOR_OPU_WRITE, - }; - - static inline unsigned int curseg_segno(struct f2fs_sb_info *sbi, -diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c -index 5c0b2b300aa1b..f8830b00bd26e 100644 ---- a/fs/f2fs/super.c -+++ b/fs/f2fs/super.c -@@ -3935,7 +3935,8 @@ static void f2fs_tuning_parameters(struct f2fs_sb_info *sbi) - F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE; - if (f2fs_block_unit_discard(sbi)) - sm_i->dcc_info->discard_granularity = 1; -- sm_i->ipu_policy = 1 << F2FS_IPU_FORCE; -+ sm_i->ipu_policy = 1 << F2FS_IPU_FORCE | -+ 1 << F2FS_IPU_HONOR_OPU_WRITE; - } - - sbi->readdir_ra = 1; --- -2.39.2 - diff --git a/queue-5.15/series b/queue-5.15/series index 65dbd33ad52..99ea383815d 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -52,7 +52,6 @@ wifi-orinoco-fix-an-error-handling-path-in-spectrum_.patch wifi-orinoco-fix-an-error-handling-path-in-orinoco_c.patch wifi-atmel-fix-an-error-handling-path-in-atmel_probe.patch wl3501_cs-use-eth_hw_addr_set.patch -wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch wifi-ray_cs-utilize-strnlen-in-parse_addr.patch wifi-ray_cs-drop-useless-status-variable-in-parse_ad.patch @@ -189,9 +188,6 @@ clk-si5341-check-return-value-of-devm_-kasprintf.patch clk-si5341-free-unused-memory-on-probe-failure.patch clk-keystone-sci-clk-check-return-value-of-kasprintf.patch clk-ti-clkctrl-check-return-value-of-kasprintf.patch -clk-clocking-wizard-rename-nr-outputs-to-xlnx-nr-out.patch -clocking-wizard-support-higher-frequency-accuracy.patch -clk-clocking-wizard-check-return-value-of-devm_kaspr.patch drivers-meson-secure-pwrc-always-enable-dma-domain.patch ovl-update-of-dentry-revalidate-flags-after-copy-up.patch asoc-imx-audmix-check-return-value-of-devm_kasprintf.patch @@ -269,8 +265,6 @@ block-increment-diskseq-on-all-media-change-events.patch sunrpc-fix-uaf-in-svc_tcp_listen_data_ready.patch w1-w1_therm-fix-locking-behavior-in-convert_t.patch w1-fix-loop-in-w1_fini.patch -f2fs-introduce-f2fs_ipu_honor_opu_write-ipu-policy.patch -f2fs-do-not-allow-to-defragment-files-have-fi_compre.patch sh-j2-use-ioremap-to-translate-device-tree-address-i.patch usb-dwc2-platform-improve-error-reporting-for-proble.patch usb-dwc2-fix-some-error-handling-paths.patch diff --git a/queue-5.15/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch b/queue-5.15/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch deleted file mode 100644 index f047f20130a..00000000000 --- a/queue-5.15/wifi-move-from-strlcpy-with-unused-retval-to-strscpy.patch +++ /dev/null @@ -1,413 +0,0 @@ -From b6a205272571445ac1ce647ffdd2feb1f1470724 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 30 Aug 2022 22:14:53 +0200 -Subject: wifi: move from strlcpy with unused retval to strscpy - -From: Wolfram Sang - -[ Upstream commit bf99f11df4de45fcba6f6c441b411a16bccaccf6 ] - -Follow the advice of the below link and prefer 'strscpy' in this -subsystem. Conversion is 1:1 because the return value is not used. -Generated by a coccinelle script. - -Link: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw@mail.gmail.com/ -Signed-off-by: Wolfram Sang -Signed-off-by: Kalle Valo -Link: https://lore.kernel.org/r/20220830201457.7984-2-wsa+renesas@sang-engineering.com -Stable-dep-of: 391af06a02e7 ("wifi: wl3501_cs: Fix an error handling path in wl3501_probe()") -Signed-off-by: Sasha Levin ---- - drivers/net/wireless/ath/ath6kl/init.c | 2 +- - drivers/net/wireless/ath/carl9170/fw.c | 2 +- - drivers/net/wireless/ath/wil6210/main.c | 2 +- - drivers/net/wireless/ath/wil6210/netdev.c | 2 +- - drivers/net/wireless/ath/wil6210/wmi.c | 2 +- - drivers/net/wireless/atmel/atmel.c | 2 +- - drivers/net/wireless/broadcom/b43/leds.c | 2 +- - drivers/net/wireless/broadcom/b43legacy/leds.c | 2 +- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 8 ++++---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 8 ++++---- - .../net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 2 +- - .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 2 +- - drivers/net/wireless/intel/ipw2x00/ipw2100.c | 6 +++--- - drivers/net/wireless/intel/ipw2x00/ipw2200.c | 6 +++--- - drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- - drivers/net/wireless/intersil/hostap/hostap_ioctl.c | 2 +- - drivers/net/wireless/marvell/libertas/ethtool.c | 4 ++-- - drivers/net/wireless/microchip/wilc1000/mon.c | 2 +- - drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- - drivers/net/wireless/quantenna/qtnfmac/commands.c | 2 +- - drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c | 2 +- - drivers/net/wireless/wl3501_cs.c | 8 ++++---- - 22 files changed, 36 insertions(+), 36 deletions(-) - -diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c -index 9b5c7d8f2b95e..201e455540706 100644 ---- a/drivers/net/wireless/ath/ath6kl/init.c -+++ b/drivers/net/wireless/ath/ath6kl/init.c -@@ -1014,7 +1014,7 @@ static int ath6kl_fetch_fw_apin(struct ath6kl *ar, const char *name) - - switch (ie_id) { - case ATH6KL_FW_IE_FW_VERSION: -- strlcpy(ar->wiphy->fw_version, data, -+ strscpy(ar->wiphy->fw_version, data, - min(sizeof(ar->wiphy->fw_version), ie_len+1)); - - ath6kl_dbg(ATH6KL_DBG_BOOT, -diff --git a/drivers/net/wireless/ath/carl9170/fw.c b/drivers/net/wireless/ath/carl9170/fw.c -index 1ab09e1c9ec57..4c1aecd1163ce 100644 ---- a/drivers/net/wireless/ath/carl9170/fw.c -+++ b/drivers/net/wireless/ath/carl9170/fw.c -@@ -105,7 +105,7 @@ static void carl9170_fw_info(struct ar9170 *ar) - CARL9170FW_GET_MONTH(fw_date), - CARL9170FW_GET_DAY(fw_date)); - -- strlcpy(ar->hw->wiphy->fw_version, motd_desc->release, -+ strscpy(ar->hw->wiphy->fw_version, motd_desc->release, - sizeof(ar->hw->wiphy->fw_version)); - } - } -diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c -index 3ba5b2550a8c1..bb532c6866beb 100644 ---- a/drivers/net/wireless/ath/wil6210/main.c -+++ b/drivers/net/wireless/ath/wil6210/main.c -@@ -1305,7 +1305,7 @@ void wil_get_board_file(struct wil6210_priv *wil, char *buf, size_t len) - board_file = WIL_BOARD_FILE_NAME; - } - -- strlcpy(buf, board_file, len); -+ strscpy(buf, board_file, len); - } - - static int wil_get_bl_info(struct wil6210_priv *wil) -diff --git a/drivers/net/wireless/ath/wil6210/netdev.c b/drivers/net/wireless/ath/wil6210/netdev.c -index 0913f0bf60e79..960e97cedcdf2 100644 ---- a/drivers/net/wireless/ath/wil6210/netdev.c -+++ b/drivers/net/wireless/ath/wil6210/netdev.c -@@ -445,7 +445,7 @@ int wil_if_add(struct wil6210_priv *wil) - - wil_dbg_misc(wil, "entered"); - -- strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); -+ strscpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); - - rc = wiphy_register(wiphy); - if (rc < 0) { -diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c -index 2dc8406736f48..e3a94983faf1c 100644 ---- a/drivers/net/wireless/ath/wil6210/wmi.c -+++ b/drivers/net/wireless/ath/wil6210/wmi.c -@@ -780,7 +780,7 @@ static void wmi_evt_ready(struct wil6210_vif *vif, int id, void *d, int len) - return; /* FW load will fail after timeout */ - } - /* ignore MAC address, we already have it from the boot loader */ -- strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); -+ strscpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); - - if (len > offsetof(struct wmi_ready_event, rfc_read_calib_result)) { - wil_dbg_wmi(wil, "rfc calibration result %d\n", -diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/net/wireless/atmel/atmel.c -index febce4e8b3dd3..2a40fda28a89b 100644 ---- a/drivers/net/wireless/atmel/atmel.c -+++ b/drivers/net/wireless/atmel/atmel.c -@@ -1518,7 +1518,7 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port, - priv->firmware = NULL; - priv->firmware_type = fw_type; - if (firmware) /* module parameter */ -- strlcpy(priv->firmware_id, firmware, sizeof(priv->firmware_id)); -+ strscpy(priv->firmware_id, firmware, sizeof(priv->firmware_id)); - priv->bus_type = card_present ? BUS_TYPE_PCCARD : BUS_TYPE_PCI; - priv->station_state = STATION_STATE_DOWN; - priv->do_rx_crc = 0; -diff --git a/drivers/net/wireless/broadcom/b43/leds.c b/drivers/net/wireless/broadcom/b43/leds.c -index 982a772a9d879..bfe1be345844d 100644 ---- a/drivers/net/wireless/broadcom/b43/leds.c -+++ b/drivers/net/wireless/broadcom/b43/leds.c -@@ -118,7 +118,7 @@ static int b43_register_led(struct b43_wldev *dev, struct b43_led *led, - led->wl = dev->wl; - led->index = led_index; - led->activelow = activelow; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - atomic_set(&led->state, 0); - - led->led_dev.name = led->name; -diff --git a/drivers/net/wireless/broadcom/b43legacy/leds.c b/drivers/net/wireless/broadcom/b43legacy/leds.c -index 38b5be3a84e2c..79e6fd205bfb7 100644 ---- a/drivers/net/wireless/broadcom/b43legacy/leds.c -+++ b/drivers/net/wireless/broadcom/b43legacy/leds.c -@@ -88,7 +88,7 @@ static int b43legacy_register_led(struct b43legacy_wldev *dev, - led->dev = dev; - led->index = led_index; - led->activelow = activelow; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - - led->led_dev.name = led->name; - led->led_dev.default_trigger = default_trigger; -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index f29de630908d7..a964f9f0c4435 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -@@ -219,7 +219,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) - &revinfo, sizeof(revinfo)); - if (err < 0) { - bphy_err(drvr, "retrieving revision info failed, %d\n", err); -- strlcpy(ri->chipname, "UNKNOWN", sizeof(ri->chipname)); -+ strscpy(ri->chipname, "UNKNOWN", sizeof(ri->chipname)); - } else { - ri->vendorid = le32_to_cpu(revinfo.vendorid); - ri->deviceid = le32_to_cpu(revinfo.deviceid); -@@ -273,7 +273,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) - - /* locate firmware version number for ethtool */ - ptr = strrchr(buf, ' ') + 1; -- strlcpy(ifp->drvr->fwver, ptr, sizeof(ifp->drvr->fwver)); -+ strscpy(ifp->drvr->fwver, ptr, sizeof(ifp->drvr->fwver)); - - /* Query for 'clmver' to get CLM version info from firmware */ - memset(buf, 0, sizeof(buf)); -@@ -385,11 +385,11 @@ static void brcmf_mp_attach(void) - * if not set then if available use the platform data version. To make - * sure it gets initialized at all, always copy the module param version - */ -- strlcpy(brcmf_mp_global.firmware_path, brcmf_firmware_path, -+ strscpy(brcmf_mp_global.firmware_path, brcmf_firmware_path, - BRCMF_FW_ALTPATH_LEN); - if ((brcmfmac_pdata) && (brcmfmac_pdata->fw_alternative_path) && - (brcmf_mp_global.firmware_path[0] == '\0')) { -- strlcpy(brcmf_mp_global.firmware_path, -+ strscpy(brcmf_mp_global.firmware_path, - brcmfmac_pdata->fw_alternative_path, - BRCMF_FW_ALTPATH_LEN); - } -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -index f03fc6f1f8333..bdf1e494414bf 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -574,10 +574,10 @@ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, - - if (drvr->revinfo.result == 0) - brcmu_dotrev_str(drvr->revinfo.driverrev, drev); -- strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); -- strlcpy(info->version, drev, sizeof(info->version)); -- strlcpy(info->fw_version, drvr->fwver, sizeof(info->fw_version)); -- strlcpy(info->bus_info, dev_name(drvr->bus_if->dev), -+ strscpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); -+ strscpy(info->version, drev, sizeof(info->version)); -+ strscpy(info->fw_version, drvr->fwver, sizeof(info->fw_version)); -+ strscpy(info->bus_info, dev_name(drvr->bus_if->dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -index c54d8722e755c..7b2911f49cce3 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -@@ -783,7 +783,7 @@ brcmf_fw_alloc_request(u32 chip, u32 chiprev, - fwnames[j].path[0] = '\0'; - /* check if firmware path is provided by module parameter */ - if (brcmf_mp_global.firmware_path[0] != '\0') { -- strlcpy(fwnames[j].path, mp_path, -+ strscpy(fwnames[j].path, mp_path, - BRCMF_FW_NAME_LEN); - - if (end != '/') { -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -index 19b0f318f93ed..50b4da0e9e15d 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -@@ -688,7 +688,7 @@ static void brcmf_fws_macdesc_set_name(struct brcmf_fws_info *fws, - struct brcmf_fws_mac_descriptor *desc) - { - if (desc == &fws->desc.other) -- strlcpy(desc->name, "MAC-OTHER", sizeof(desc->name)); -+ strscpy(desc->name, "MAC-OTHER", sizeof(desc->name)); - else if (desc->mac_handle) - scnprintf(desc->name, sizeof(desc->name), "MAC-%d:%d", - desc->mac_handle, desc->interface_id); -diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -index 47eb89b773cf7..4d5c1e142af11 100644 ---- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -@@ -5907,8 +5907,8 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - struct ipw2100_priv *priv = libipw_priv(dev); - char fw_ver[64], ucode_ver[64]; - -- strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); -- strlcpy(info->version, DRV_VERSION, sizeof(info->version)); -+ strscpy(info->driver, DRV_NAME, sizeof(info->driver)); -+ strscpy(info->version, DRV_VERSION, sizeof(info->version)); - - ipw2100_get_fwversion(priv, fw_ver, sizeof(fw_ver)); - ipw2100_get_ucodeversion(priv, ucode_ver, sizeof(ucode_ver)); -@@ -5916,7 +5916,7 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - snprintf(info->fw_version, sizeof(info->fw_version), "%s:%d:%s", - fw_ver, priv->eeprom_version, ucode_ver); - -- strlcpy(info->bus_info, pci_name(priv->pci_dev), -+ strscpy(info->bus_info, pci_name(priv->pci_dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -index bb728fb24b8a4..706cd36a43055 100644 ---- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -@@ -10427,8 +10427,8 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - char date[32]; - u32 len; - -- strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); -- strlcpy(info->version, DRV_VERSION, sizeof(info->version)); -+ strscpy(info->driver, DRV_NAME, sizeof(info->driver)); -+ strscpy(info->version, DRV_VERSION, sizeof(info->version)); - - len = sizeof(vers); - ipw_get_ordinal(p, IPW_ORD_STAT_FW_VERSION, vers, &len); -@@ -10437,7 +10437,7 @@ static void ipw_ethtool_get_drvinfo(struct net_device *dev, - - snprintf(info->fw_version, sizeof(info->fw_version), "%s (%s)", - vers, date); -- strlcpy(info->bus_info, pci_name(p->pci_dev), -+ strscpy(info->bus_info, pci_name(p->pci_dev), - sizeof(info->bus_info)); - } - -diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c -index 04c149ff745e9..00fa3c80a46f6 100644 ---- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c -+++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c -@@ -3254,7 +3254,7 @@ il3945_store_measurement(struct device *d, struct device_attribute *attr, - - if (count) { - char *p = buffer; -- strlcpy(buffer, buf, sizeof(buffer)); -+ strscpy(buffer, buf, sizeof(buffer)); - channel = simple_strtoul(p, NULL, 0); - if (channel) - params.channel = channel; -diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -index 0a376f112db9f..4e0a0c8816979 100644 ---- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -+++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c -@@ -3848,7 +3848,7 @@ static void prism2_get_drvinfo(struct net_device *dev, - iface = netdev_priv(dev); - local = iface->local; - -- strlcpy(info->driver, "hostap", sizeof(info->driver)); -+ strscpy(info->driver, "hostap", sizeof(info->driver)); - snprintf(info->fw_version, sizeof(info->fw_version), - "%d.%d.%d", (local->sta_fw_ver >> 16) & 0xff, - (local->sta_fw_ver >> 8) & 0xff, -diff --git a/drivers/net/wireless/marvell/libertas/ethtool.c b/drivers/net/wireless/marvell/libertas/ethtool.c -index d8e4f29b690d1..9f53308a99357 100644 ---- a/drivers/net/wireless/marvell/libertas/ethtool.c -+++ b/drivers/net/wireless/marvell/libertas/ethtool.c -@@ -20,8 +20,8 @@ static void lbs_ethtool_get_drvinfo(struct net_device *dev, - priv->fwrelease >> 16 & 0xff, - priv->fwrelease >> 8 & 0xff, - priv->fwrelease & 0xff); -- strlcpy(info->driver, "libertas", sizeof(info->driver)); -- strlcpy(info->version, lbs_driver_version, sizeof(info->version)); -+ strscpy(info->driver, "libertas", sizeof(info->driver)); -+ strscpy(info->version, lbs_driver_version, sizeof(info->version)); - } - - /* -diff --git a/drivers/net/wireless/microchip/wilc1000/mon.c b/drivers/net/wireless/microchip/wilc1000/mon.c -index b5a1b65c087ca..03b7229a0ff5a 100644 ---- a/drivers/net/wireless/microchip/wilc1000/mon.c -+++ b/drivers/net/wireless/microchip/wilc1000/mon.c -@@ -229,7 +229,7 @@ struct net_device *wilc_wfi_init_mon_interface(struct wilc *wl, - return NULL; - - wl->monitor_dev->type = ARPHRD_IEEE80211_RADIOTAP; -- strlcpy(wl->monitor_dev->name, name, IFNAMSIZ); -+ strscpy(wl->monitor_dev->name, name, IFNAMSIZ); - wl->monitor_dev->netdev_ops = &wilc_wfi_netdev_ops; - wl->monitor_dev->needs_free_netdev = true; - -diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -index 84b15a655eab1..45ef582880d2c 100644 ---- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c -@@ -1221,7 +1221,7 @@ int qtnf_wiphy_register(struct qtnf_hw_info *hw_info, struct qtnf_wmac *mac) - mac->macinfo.extended_capabilities_len; - } - -- strlcpy(wiphy->fw_version, hw_info->fw_version, -+ strscpy(wiphy->fw_version, hw_info->fw_version, - sizeof(wiphy->fw_version)); - wiphy->hw_version = hw_info->hw_version; - -diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c -index c68563c830981..e0ebe19ee2d8c 100644 ---- a/drivers/net/wireless/quantenna/qtnfmac/commands.c -+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c -@@ -965,7 +965,7 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus, - hwinfo->total_rx_chain, hwinfo->total_tx_chain, - hwinfo->fw_ver); - -- strlcpy(hwinfo->fw_version, bld_label, sizeof(hwinfo->fw_version)); -+ strscpy(hwinfo->fw_version, bld_label, sizeof(hwinfo->fw_version)); - hwinfo->hw_version = hw_ver; - - return 0; -diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -index 49421d10e22bc..f7d95c9624a01 100644 ---- a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -+++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c -@@ -143,7 +143,7 @@ static int rtl8187_register_led(struct ieee80211_hw *dev, - led->dev = dev; - led->ledpin = ledpin; - led->is_radio = is_radio; -- strlcpy(led->name, name, sizeof(led->name)); -+ strscpy(led->name, name, sizeof(led->name)); - - led->led_dev.name = led->name; - led->led_dev.default_trigger = default_trigger; -diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c -index 7351a2c127adc..7fb2f95134760 100644 ---- a/drivers/net/wireless/wl3501_cs.c -+++ b/drivers/net/wireless/wl3501_cs.c -@@ -1441,7 +1441,7 @@ static void wl3501_detach(struct pcmcia_device *link) - static int wl3501_get_name(struct net_device *dev, struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) - { -- strlcpy(wrqu->name, "IEEE 802.11-DS", sizeof(wrqu->name)); -+ strscpy(wrqu->name, "IEEE 802.11-DS", sizeof(wrqu->name)); - return 0; - } - -@@ -1652,7 +1652,7 @@ static int wl3501_set_nick(struct net_device *dev, struct iw_request_info *info, - - if (wrqu->data.length > sizeof(this->nick)) - return -E2BIG; -- strlcpy(this->nick, extra, wrqu->data.length); -+ strscpy(this->nick, extra, wrqu->data.length); - return 0; - } - -@@ -1661,7 +1661,7 @@ static int wl3501_get_nick(struct net_device *dev, struct iw_request_info *info, - { - struct wl3501_card *this = netdev_priv(dev); - -- strlcpy(extra, this->nick, 32); -+ strscpy(extra, this->nick, 32); - wrqu->data.length = strlen(extra); - return 0; - } -@@ -1965,7 +1965,7 @@ static int wl3501_config(struct pcmcia_device *link) - this->firmware_date[0] = '\0'; - this->rssi = 255; - this->chan = iw_default_channel(this->reg_domain); -- strlcpy(this->nick, "Planet WL3501", sizeof(this->nick)); -+ strscpy(this->nick, "Planet WL3501", sizeof(this->nick)); - spin_lock_init(&this->lock); - init_waitqueue_head(&this->wait); - netif_start_queue(dev); --- -2.39.2 - diff --git a/queue-5.15/wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch b/queue-5.15/wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch index d1a695578cd..6323e179bc9 100644 --- a/queue-5.15/wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch +++ b/queue-5.15/wifi-wl3501_cs-fix-an-error-handling-path-in-wl3501_.patch @@ -17,14 +17,12 @@ Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/7cc9c9316489b7d69b36aeb0edd3123538500b41.1684569865.git.christophe.jaillet@wanadoo.fr Signed-off-by: Sasha Levin --- - drivers/net/wireless/wl3501_cs.c | 16 +++++++++++----- + drivers/net/wireless/wl3501_cs.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) -diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c -index 7fb2f95134760..c45c4b7cbbaf1 100644 --- a/drivers/net/wireless/wl3501_cs.c +++ b/drivers/net/wireless/wl3501_cs.c -@@ -1862,6 +1862,7 @@ static int wl3501_probe(struct pcmcia_device *p_dev) +@@ -1862,6 +1862,7 @@ static int wl3501_probe(struct pcmcia_de { struct net_device *dev; struct wl3501_card *this; @@ -32,7 +30,7 @@ index 7fb2f95134760..c45c4b7cbbaf1 100644 /* The io structure describes IO port mapping */ p_dev->resource[0]->end = 16; -@@ -1873,8 +1874,7 @@ static int wl3501_probe(struct pcmcia_device *p_dev) +@@ -1873,8 +1874,7 @@ static int wl3501_probe(struct pcmcia_de dev = alloc_etherdev(sizeof(struct wl3501_card)); if (!dev) @@ -42,7 +40,7 @@ index 7fb2f95134760..c45c4b7cbbaf1 100644 dev->netdev_ops = &wl3501_netdev_ops; dev->watchdog_timeo = 5 * HZ; -@@ -1887,9 +1887,15 @@ static int wl3501_probe(struct pcmcia_device *p_dev) +@@ -1887,9 +1887,15 @@ static int wl3501_probe(struct pcmcia_de netif_stop_queue(dev); p_dev->priv = dev; @@ -61,6 +59,3 @@ index 7fb2f95134760..c45c4b7cbbaf1 100644 } static int wl3501_config(struct pcmcia_device *link) --- -2.39.2 -