Linux 5.15.142
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.142 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/parisc/include/uapi/asm/errno.h | 2 arch/powerpc/kernel/fpu.S | 13 ++ arch/powerpc/kernel/vector.S | 2 drivers/cpufreq/imx6q-cpufreq.c | 32 +++---- drivers/firewire/core-device.c | 11 -- drivers/input/joystick/xpad.c | 2 drivers/iommu/intel/dmar.c | 18 ++++ drivers/iommu/intel/iommu.c | 6 - drivers/md/bcache/btree.c | 2 drivers/md/dm-verity-fec.c | 3 drivers/md/dm-verity-target.c | 4 drivers/md/dm-verity.h | 6 - drivers/mmc/core/block.c | 2 drivers/mmc/core/core.c | 9 +- drivers/mmc/core/regulator.c | 41 +++++++++ drivers/mmc/host/cqhci-core.c | 44 ++++----- drivers/mmc/host/sdhci-sprd.c | 25 +++++ drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 8 - drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 2 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 7 + drivers/net/ethernet/realtek/r8169_main.c | 23 ++++- drivers/net/ethernet/renesas/ravb_main.c | 30 +++++- drivers/net/ethernet/stmicro/stmmac/mmc_core.c | 4 drivers/net/hyperv/netvsc_drv.c | 25 +++-- drivers/pinctrl/core.c | 6 - drivers/usb/core/config.c | 85 +++++++++---------- drivers/video/fbdev/sticore.h | 2 fs/btrfs/disk-io.c | 1 fs/btrfs/ref-verify.c | 2 fs/btrfs/send.c | 2 fs/btrfs/super.c | 5 - fs/btrfs/volumes.c | 9 +- fs/cifs/cifsfs.c | 1 fs/cifs/xattr.c | 5 - fs/inode.c | 16 +++ fs/iomap/direct-io.c | 22 ++-- include/linux/fs.h | 45 +++++++++- include/linux/mmc/host.h | 3 include/linux/platform_data/x86/soc.h | 65 ++++++++++++++ include/linux/workqueue.h | 1 include/uapi/linux/stddef.h | 2 kernel/rcu/tree_plugin.h | 8 - kernel/workqueue.c | 9 ++ lib/errname.c | 6 - net/8021q/vlan.h | 2 net/8021q/vlan_dev.c | 15 ++- net/8021q/vlan_netlink.c | 7 - net/ipv4/igmp.c | 6 - sound/pci/hda/hda_intel.c | 2 sound/pci/hda/patch_realtek.c | 12 ++ sound/soc/intel/common/soc-intel-quirks.h | 51 ----------- sound/soc/sof/sof-pci-dev.c | 62 ++++++++++--- tools/arch/parisc/include/uapi/asm/errno.h | 2 tools/perf/util/intel-pt.c | 2 tools/testing/selftests/net/ipsec.c | 4 tools/testing/selftests/resctrl/Makefile | 4 tools/testing/selftests/resctrl/resctrl.h | 1 59 files changed, 549 insertions(+), 243 deletions(-)
Abdul Halim, Mohd Syazwan (1):
iommu/vt-d: Add MTL to quirk list to skip TE disabling
Adrian Hunter (7):
mmc: cqhci: Increase recovery halt timeout
mmc: cqhci: Warn of halt or task clear failure
mmc: cqhci: Fix task clearing in CQE error recovery
mmc: block: Retry commands in CQE error recovery
mmc: block: Do not lose cache flush during CQE error recovery
mmc: block: Be sure to wait while busy in CQE error recovery perf intel-pt: Fix async branch flags
Alan Stern (1):
USB: core: Change configuration warnings to notices
Andrey Grodzovsky (1):
Revert "workqueue: remove unused cancel_work()"
Bragatheswaran Manickavel (1):
btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod()
Christoph Hellwig (1):
iomap: update ki_pos a little later in iomap_dio_complete
Christoph Niedermaier (2):
cpufreq: imx6q: don't warn for disabling a non-existing frequency
cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
Claudiu Beznea (4):
net: ravb: Check return value of reset_control_deassert()
net: ravb: Use pm_runtime_resume_and_get()
net: ravb: Start TX queues after HW initialization succeeded
net: ravb: Stop DMA in case of failures on ravb_open()
Dmitry Antipov (1):
uapi: propagate __struct_group() attributes to the container union
Elena Salomatkina (1):
octeontx2-af: Fix possible buffer overflow
Filipe Manana (2):
btrfs: fix off-by-one when checking chunk map includes logical address
btrfs: make error messages more clear when getting a chunk map
Furong Xu (1):
net: stmmac: xgmac: Disable FPE MMC interrupts
Geetha sowjanya (1):
octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64
Greg Kroah-Hartman (1):
Linux 5.15.142
Haiyang Zhang (1):
hv_netvsc: fix race of netvsc and VF register_netdevice
Hans de Goede (1):
ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header
Heiner Kallweit (4):
r8169: prevent potential deadlock in rtl8169_close
mmc: core: add helpers mmc_regulator_enable/disable_vqmmc
r8169: disable ASPM in case of tx timeout
r8169: fix deadlock on RTL8125 in jumbo mtu mode
Helge Deller (2):
parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes
fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
Ilpo Järvinen (1):
selftests/resctrl: Move _GNU_SOURCE define into Makefile
Ioana Ciornei (1):
dpaa2-eth: increase the needed headroom to account for alignment
Jann Horn (1):
btrfs: send: ensure send_fd is writable
Jeff Layton (1):
fs: add ctime accessors infrastructure
Kailang Yang (2):
ALSA: hda/realtek: Headset Mic VREF to 100%
ALSA: hda/realtek: Add supported ALC257 for ChromeOS
Lu Baolu (2):
iommu/vt-d: Omit devTLB invalidation requests when TES=0 iommu/vt-d: Make context clearing consistent with context mapping
Maria Yu (1):
pinctrl: avoid reload of p state in list iteration
Mark Hasemeyer (1):
ASoC: SOF: sof-pci-dev: Fix community key quirk detection
Markus Weippert (1):
bcache: revert replacing IS_ERR_OR_NULL with IS_ERR
Max Nguyen (1):
Input: xpad - add HyperX Clutch Gladiate Support
Mikulas Patocka (1):
dm-verity: align struct dm_verity_fec_io properly
Niklas Neronin (1):
usb: config: fix iteration issue in 'usb_get_bos_descriptor()'
Patrick Wang (1):
rcu: Avoid tracing a few functions executed in stop machine
Pierre-Louis Bossart (3):
ASoC: SOF: sof-pci-dev: use community key on all Up boards
ASoC: SOF: sof-pci-dev: add parameter to override topology filename
ASoC: SOF: sof-pci-dev: don't use the community key on APL Chromebooks
Qu Wenruo (1):
btrfs: add dmesg output for first mount and last unmount of a filesystem
Shaopeng Tan (1):
selftests/resctrl: Add missing SPDX license to Makefile
Steve French (2):
smb3: fix touch -h of symlink
smb3: fix caching of ctime on setxattr
Takashi Iwai (1):
ALSA: hda: Disable power-save on KONTRON SinglePC
Timothy Pearson (1):
powerpc: Don't clobber f0/vs0 during fp|altivec register save
Wenchao Chen (1):
mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled
Willem de Bruijn (1):
selftests/net: ipsec: fix constant out of range
Wu Bo (1):
dm verity: don't perform FEC for failed readahead IO
Xin Long (2):
vlan: introduce vlan_dev_free_egress_priority
vlan: move dev_put into vlan_dev_uninit
Yang Yingliang (1):
firewire: core: fix possible memory leak in create_units()
Yoshihiro Shimoda (1):
ravb: Fix races between ravb_tx_timeout_work() and net related ops
Zhengchao Shao (1):
ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 141 +SUBLEVEL = 142 EXTRAVERSION = NAME = Trick or Treat
arch/parisc/include/uapi/asm/errno.h +0 -2
@@ -75,7 +75,6 @@/* We now return you to your regularly scheduled HPUX. */ -#define ENOSYM 215/* symbol does not exist in executable */ #define ENOTSOCK 216/* Socket operation on non-socket */ #define EDESTADDRREQ 217/* Destination address required */ #define EMSGSIZE 218/* Message too long */
@@ -101,7 +100,6 @@#define ETIMEDOUT 238/* Connection timed out */ #define ECONNREFUSED 239/* Connection refused */ #define EREFUSED ECONNREFUSED/* for HP's NFS apparently */ -#define EREMOTERELEASE 240/* Remote peer released connection */ #define EHOSTDOWN 241/* Host is down */ #define EHOSTUNREACH 242/* No route to host */
arch/powerpc/kernel/fpu.S +13 -0
@@ -23,6 +23,15 @@ #include <asm/feature-fixups.h> #ifdef CONFIG_VSX +#define __REST_1FPVSR(n,c,base) \ +BEGIN_FTR_SECTION \ + b 2f; \ +END_FTR_SECTION_IFSET(CPU_FTR_VSX); \ + REST_FPR(n,base); \ + b 3f; \ +2: REST_VSR(n,c,base); \ +3: + #define __REST_32FPVSRS(n,c,base) \ BEGIN_FTR_SECTION \ b 2f; \
@@ -41,9 +50,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX); \ 2: SAVE_32VSRS(n,c,base); \ 3: #else +#define __REST_1FPVSR(n,b,base) REST_FPR(n, base) #define __REST_32FPVSRS(n,b,base) REST_32FPRS(n, base) #define __SAVE_32FPVSRS(n,b,base) SAVE_32FPRS(n, base) #endif +#define REST_1FPVSR(n,c,base) __REST_1FPVSR(n,__REG_##c,__REG_##base) #define REST_32FPVSRS(n,c,base) __REST_32FPVSRS(n,__REG_##c,__REG_##base) #define SAVE_32FPVSRS(n,c,base) __SAVE_32FPVSRS(n,__REG_##c,__REG_##base)
@@ -67,6 +78,7 @@ _GLOBAL(store_fp_state) SAVE_32FPVSRS(0, R4, R3) mffs fr0 stfd fr0,FPSTATE_FPSCR(r3) + REST_1FPVSR(0, R4, R3) blr EXPORT_SYMBOL(store_fp_state)
@@ -133,4 +145,5 @@ _GLOBAL(save_fpu) 2: SAVE_32FPVSRS(0, R4, R6) mffs fr0 stfd fr0,FPSTATE_FPSCR(r6) + REST_1FPVSR(0, R4, R6) blr
arch/powerpc/kernel/vector.S +2 -0
@@ -32,6 +32,7 @@ _GLOBAL(store_vr_state) mfvscr v0 li r4, VRSTATE_VSCR stvx v0, r4, r3 + lvx v0, 0, r3 blr EXPORT_SYMBOL(store_vr_state)
@@ -104,6 +105,7 @@ _GLOBAL(save_altivec) mfvscr v0 li r4,VRSTATE_VSCR stvx v0,r4,r7 + lvx v0,0,r7 blr #ifdef CONFIG_VSX
drivers/cpufreq/imx6q-cpufreq.c +17 -15
@@ -209,6 +209,14 @@ static struct cpufreq_driver imx6q_cpufreq_driver = { .suspend = cpufreq_generic_suspend, }; +static void imx6x_disable_freq_in_opp (struct device *dev,unsigned long freq) +{ +int ret =dev_pm_opp_disable (dev, freq); + +if (ret <0 && ret != -ENODEV ) +dev_warn (dev,"failed to disable %ldMHz OPP\n" , freq /1000000 ); +} +#define OCOTP_CFG3 0x440#define OCOTP_CFG3_SPEED_SHIFT 16#define OCOTP_CFG3_SPEED_1P2GHZ 0x3
@@ -254,17 +262,15 @@ static int imx6q_opp_check_speed_grading(struct device *dev) val &=0x3 ;if (val <OCOTP_CFG3_SPEED_996MHZ ) -if (dev_pm_opp_disable (dev,996000000 )) -dev_warn (dev,"failed to disable 996MHz OPP\n" ); +imx6x_disable_freq_in_opp (dev,996000000 );if (of_machine_is_compatible ("fsl,imx6q" ) ||of_machine_is_compatible ("fsl,imx6qp" )) {if (val !=OCOTP_CFG3_SPEED_852MHZ ) -if (dev_pm_opp_disable (dev,852000000 )) -dev_warn (dev,"failed to disable 852MHz OPP\n" ); +imx6x_disable_freq_in_opp (dev,852000000 ); +if (val !=OCOTP_CFG3_SPEED_1P2GHZ ) -if (dev_pm_opp_disable (dev,1200000000 )) -dev_warn (dev,"failed to disable 1.2GHz OPP\n" ); +imx6x_disable_freq_in_opp (dev,1200000000 ); }return 0 ;
@@ -316,20 +322,16 @@ static int imx6ul_opp_check_speed_grading(struct device *dev) val >>=OCOTP_CFG3_SPEED_SHIFT ; val &=0x3 ; -if (of_machine_is_compatible ("fsl,imx6ul" )) { +if (of_machine_is_compatible ("fsl,imx6ul" ))if (val !=OCOTP_CFG3_6UL_SPEED_696MHZ ) -if (dev_pm_opp_disable (dev,696000000 )) -dev_warn (dev,"failed to disable 696MHz OPP\n" ); - } +imx6x_disable_freq_in_opp (dev,696000000 );if (of_machine_is_compatible ("fsl,imx6ull" )) { -if (val !=OCOTP_CFG3_6ULL_SPEED_792MHZ ) -if (dev_pm_opp_disable (dev,792000000 )) -dev_warn (dev,"failed to disable 792MHz OPP\n" ); +if (val <OCOTP_CFG3_6ULL_SPEED_792MHZ ) +imx6x_disable_freq_in_opp (dev,792000000 );if (val !=OCOTP_CFG3_6ULL_SPEED_900MHZ ) -if (dev_pm_opp_disable (dev,900000000 )) -dev_warn (dev,"failed to disable 900MHz OPP\n" ); +imx6x_disable_freq_in_opp (dev,900000000 ); }return ret;
drivers/firewire/core-device.c +4 -7
@@ -719,14 +719,11 @@ static void create_units(struct fw_device *device) fw_unit_attributes, &unit->attribute_group); -if (device_register (&unit->device) <0 ) - goto skip_unit; -fw_device_get (device); -continue ; - - skip_unit: -kfree (unit); +if (device_register (&unit->device) <0 ) { +put_device (&unit->device); +continue ; + } } }
drivers/input/joystick/xpad.c +2 -0
@@ -120,6 +120,7 @@ static const struct xpad_device { { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX }, { 0x044f, 0x0f10, "Thrustmaster Modena GT Wheel", 0, XTYPE_XBOX }, { 0x044f, 0xb326, "Thrustmaster Gamepad GP XID", 0, XTYPE_XBOX360 }, + { 0x03f0, 0x0495, "HyperX Clutch Gladiate", 0, XTYPE_XBOXONE }, { 0x045e, 0x0202, "Microsoft X-Box pad v1 (US)", 0, XTYPE_XBOX }, { 0x045e, 0x0285, "Microsoft X-Box pad (Japan)", 0, XTYPE_XBOX }, { 0x045e, 0x0287, "Microsoft Xbox Controller S", 0, XTYPE_XBOX },
@@ -434,6 +435,7 @@ static const struct usb_device_id xpad_table[] = {XPAD_XBOX360_VENDOR (0x0079 ),/* GPD Win 2 Controller */ XPAD_XBOX360_VENDOR (0x03eb ),/* Wooting Keyboards (Legacy) */ XPAD_XBOX360_VENDOR (0x044f ),/* Thrustmaster X-Box 360 controllers */ +XPAD_XBOXONE_VENDOR (0x03f0 ),/* HP HyperX Xbox One Controllers */ XPAD_XBOX360_VENDOR (0x045e ),/* Microsoft X-Box 360 controllers */ XPAD_XBOXONE_VENDOR (0x045e ),/* Microsoft X-Box One controllers */ XPAD_XBOX360_VENDOR(0x046d), /* Logitech X-Box 360 style controllers */
drivers/iommu/intel/dmar.c +18 -0
@@ -1518,6 +1518,15 @@ void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 pfsid, {struct qi_desc desc; +/* +* VT-d spec, section 4.3: +* +* Software is recommended to not submit any Device-TLB invalidation +* requests while address remapping hardware is disabled. +*/ +if (!(iommu->gcmd &DMA_GCMD_TE )) +return ; +if (mask) { addr |= (1ULL << (VTD_PAGE_SHIFT + mask -1 )) -1 ; desc.qw1 =QI_DEV_IOTLB_ADDR (addr) |QI_DEV_IOTLB_SIZE ;
@@ -1583,6 +1592,15 @@ void qi_flush_dev_iotlb_pasid(struct intel_iommu *iommu, u16 sid, u16 pfsid,unsigned long mask =1UL << (VTD_PAGE_SHIFT + size_order -1 );struct qi_desc desc = {.qw1 =0 , .qw2 =0 , .qw3 =0 }; +/* +* VT-d spec, section 4.3: +* +* Software is recommended to not submit any Device-TLB invalidation +* requests while address remapping hardware is disabled. +*/ +if (!(iommu->gcmd &DMA_GCMD_TE )) +return ; + desc.qw0 =QI_DEV_EIOTLB_PASID (pasid) |QI_DEV_EIOTLB_SID (sid) |QI_DEV_EIOTLB_QDEP (qdep) |QI_DEIOTLB_TYPE |QI_DEV_IOTLB_PFSID (pfsid);
drivers/iommu/intel/iommu.c +3 -3
@@ -4465,8 +4465,8 @@ static int domain_context_clear_one_cb(struct pci_dev *pdev, u16 alias, void *op*/ static void domain_context_clear (struct device_domain_info *info) { -if (!info->iommu || !info->dev || !dev_is_pci (info->dev)) -return ; +if (!dev_is_pci (info->dev)) +domain_context_clear_one (info, info->bus, info->devfn);pci_for_each_dma_alias (to_pci_dev (info->dev), &domain_context_clear_one_cb, info);
@@ -5749,7 +5749,7 @@ static void quirk_igfx_skip_te_disable(struct pci_dev *dev) ver = (dev->device >>8 ) &0xff ;if (ver !=0x45 && ver !=0x46 && ver !=0x4c && ver !=0x4e && ver !=0x8a && ver !=0x98 && - ver !=0x9a && ver !=0xa7 ) + ver !=0x9a && ver !=0xa7 && ver !=0x7d )return ;if (risky_device (dev))
drivers/md/bcache/btree.c +1 -1
@@ -1489,7 +1489,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,bch_keylist_free (&keylist);for (i =0 ; i < nodes; i++) -if (!IS_ERR (new_nodes[i])) { +if (!IS_ERR_OR_NULL (new_nodes[i])) {btree_node_free (new_nodes[i]);rw_unlock (true, new_nodes[i]); }
drivers/md/dm-verity-fec.c +2 -1
@@ -24,7 +24,8 @@ bool verity_fec_is_enabled(struct dm_verity *v)*/ static inline struct dm_verity_fec_io *fec_io (struct dm_verity_io *io) { -return (struct dm_verity_fec_io *)verity_io_digest_end (io->v, io); +return (struct dm_verity_fec_io *) + ((char *)io + io->v->ti->per_io_data_size -sizeof (struct dm_verity_fec_io )); }/*
drivers/md/dm-verity-target.c +3 -1
@@ -583,7 +583,9 @@ static void verity_end_io(struct bio *bio)struct dm_verity_io *io = bio->bi_private;if (bio->bi_status && - (!verity_fec_is_enabled (io->v) ||verity_is_system_shutting_down ())) { + (!verity_fec_is_enabled (io->v) || +verity_is_system_shutting_down () || + (bio->bi_opf &REQ_RAHEAD ))) {verity_finish_io (io, bio->bi_status);return ; }
drivers/md/dm-verity.h +0 -6
@@ -111,12 +111,6 @@ static inline u8 *verity_io_want_digest(struct dm_verity *v,return (u8 *)(io +1 ) + v->ahash_reqsize + v->digest_size; } -static inline u8 *verity_io_digest_end (struct dm_verity *v, -struct dm_verity_io *io) -{ -return verity_io_want_digest (v, io) + v->digest_size; -} - extern int verity_for_bv_block(struct dm_verity *v, struct dm_verity_io *io, struct bvec_iter *iter, int (*process)(struct dm_verity *v,
drivers/mmc/core/block.c +2 -0
@@ -1465,6 +1465,8 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)blk_mq_requeue_request (req, true); else__blk_mq_end_request (req ,BLK_STS_OK ); + }else if (mq->in_recovery) { +blk_mq_requeue_request (req, true); }else {blk_mq_end_request (req,BLK_STS_OK ); }
drivers/mmc/core/core.c +7 -2
@@ -552,7 +552,9 @@ int mmc_cqe_recovery(struct mmc_host *host) cmd.flags =MMC_RSP_R1B |MMC_CMD_AC ; cmd.flags &= ~MMC_RSP_CRC ;/* Ignore CRC */ cmd.busy_timeout =MMC_CQE_RECOVERY_TIMEOUT ; -mmc_wait_for_cmd (host, &cmd,0 ); +mmc_wait_for_cmd (host, &cmd,MMC_CMD_RETRIES ); + +mmc_poll_for_busy (host->card,MMC_CQE_RECOVERY_TIMEOUT , true,MMC_BUSY_IO );memset (&cmd,0 ,sizeof (cmd)); cmd.opcode =MMC_CMDQ_TASK_MGMT ;
@@ -560,10 +562,13 @@ int mmc_cqe_recovery(struct mmc_host *host) cmd.flags =MMC_RSP_R1B |MMC_CMD_AC ; cmd.flags &= ~MMC_RSP_CRC ;/* Ignore CRC */ cmd.busy_timeout =MMC_CQE_RECOVERY_TIMEOUT ; - err =mmc_wait_for_cmd (host, &cmd,0 ); + err =mmc_wait_for_cmd (host, &cmd,MMC_CMD_RETRIES ); host->cqe_ops->cqe_recovery_finish (host); +if (err) + err =mmc_wait_for_cmd (host, &cmd,MMC_CMD_RETRIES ); +mmc_retune_release (host);return err;
drivers/mmc/core/regulator.c +41 -0
44 lines not on this page · raw message
drivers/mmc/host/cqhci-core.c +22 -22
75 lines not on this page · raw message
drivers/mmc/host/sdhci-sprd.c +25 -0
@@ -392,12 +392,33 @@ static void sdhci_sprd_request_done(struct sdhci_host *host,mmc_request_done (host->mmc, mrq); } +static void sdhci_sprd_set_power (struct sdhci_host *host,unsigned char mode, +unsigned short vdd) +{ +struct mmc_host *mmc = host->mmc; + +switch (mode) { +case MMC_POWER_OFF : +mmc_regulator_set_ocr (host->mmc, mmc->supply.vmmc,0 ); + +mmc_regulator_disable_vqmmc (mmc); +break ; +case MMC_POWER_ON : +mmc_regulator_enable_vqmmc (mmc); +break ; +case MMC_POWER_UP : +mmc_regulator_set_ocr (host->mmc, mmc->supply.vmmc, vdd); +break ; + } +} +static struct sdhci_ops sdhci_sprd_ops = { .read_l = sdhci_sprd_readl, .write_l = sdhci_sprd_writel, .write_w = sdhci_sprd_writew, .write_b = sdhci_sprd_writeb, .set_clock = sdhci_sprd_set_clock, + .set_power = sdhci_sprd_set_power, .get_max_clock = sdhci_sprd_get_max_clock, .get_min_clock = sdhci_sprd_get_min_clock, .set_bus_width = sdhci_set_bus_width,
@@ -663,6 +684,10 @@ static int sdhci_sprd_probe(struct platform_device *pdev) host->caps1 &= ~(SDHCI_SUPPORT_SDR50 |SDHCI_SUPPORT_SDR104 |SDHCI_SUPPORT_DDR50 ); + ret =mmc_regulator_get_supply (host->mmc); +if (ret) + goto pm_runtime_disable; + ret =sdhci_setup_host (host);if (ret) goto pm_runtime_disable;
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +4 -4
@@ -952,14 +952,12 @@ static int dpaa2_eth_build_single_fd(struct dpaa2_eth_priv *priv,dma_addr_t addr; buffer_start = skb->data -dpaa2_eth_needed_headroom (skb); - -/* If there's enough room to align the FD address, do it. -* It will help hardware optimize accesses. -*/ aligned_start =PTR_ALIGN (buffer_start -DPAA2_ETH_TX_BUF_ALIGN ,DPAA2_ETH_TX_BUF_ALIGN );if (aligned_start >= skb->head) buffer_start = aligned_start; +else +return -ENOMEM ;/* Store a backpointer to the skb at the beginning of the buffer * (in the private data area) such that we can release it
@@ -4446,6 +4444,8 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)if (err) goto err_dl_port_add; + net_dev->needed_headroom =DPAA2_ETH_SWA_SIZE +DPAA2_ETH_TX_BUF_ALIGN ; + err =register_netdev (net_dev);if (err <0 ) {dev_err (dev,"register_netdev() failed\n" );
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +1 -1
@@ -670,7 +670,7 @@ static inline bool dpaa2_eth_rx_pause_enabled(u64 link_options)static inline unsigned int dpaa2_eth_needed_headroom (struct sk_buff *skb) { -unsigned int headroom =DPAA2_ETH_SWA_SIZE ; +unsigned int headroom =DPAA2_ETH_SWA_SIZE +DPAA2_ETH_TX_BUF_ALIGN ;/* If we don't have an skb (e.g. XDP buffer), we only need space for * the software annotation area
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -2
@@ -5045,6 +5045,8 @@ int rvu_mbox_handler_nix_bandprof_free(struct rvu *rvu, ipolicer = &nix_hw->ipolicer[layer];for (idx =0 ; idx < req->prof_count[layer]; idx++) { +if (idx ==MAX_BANDPROF_PER_PFFUNC ) +break ; prof_idx = req->prof_idx[layer][idx];if (prof_idx >= ipolicer->band_prof.max || ipolicer->pfvf_map[prof_idx] != pcifunc)
@@ -5058,8 +5060,6 @@ int rvu_mbox_handler_nix_bandprof_free(struct rvu *rvu, ipolicer->pfvf_map[prof_idx] =0x00 ; ipolicer->match_id[prof_idx] =0 ;rvu_free_rsrc (&ipolicer->band_prof, prof_idx); -if (idx ==MAX_BANDPROF_PER_PFFUNC ) -break ; } }mutex_unlock (&rvu->rsrc_lock);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +5 -2
@@ -557,7 +557,9 @@ static irqreturn_t otx2_pfvf_mbox_intr_handler(int irq, void *pf_irq)otx2_write64 (pf,RVU_PF_VFPF_MBOX_INTX (1 ), intr);otx2_queue_work (mbox, pf->mbox_pfvf_wq,64 , vfs, intr,TYPE_PFVF ); - vfs -=64 ; +if (intr) +trace_otx2_msg_interrupt (mbox->mbox.pdev,"VF(s) to PF" , intr); + vfs =64 ; } intr =otx2_read64 (pf,RVU_PF_VFPF_MBOX_INTX (0 ));
@@ -565,7 +567,8 @@ static irqreturn_t otx2_pfvf_mbox_intr_handler(int irq, void *pf_irq)otx2_queue_work (mbox, pf->mbox_pfvf_wq,0 , vfs, intr,TYPE_PFVF ); -trace_otx2_msg_interrupt (mbox->mbox.pdev,"VF(s) to PF" , intr); +if (intr) +trace_otx2_msg_interrupt (mbox->mbox.pdev,"VF(s) to PF" , intr);return IRQ_HANDLED ; }
drivers/net/ethernet/realtek/r8169_main.c +20 -3
@@ -588,6 +588,8 @@ struct rtl8169_tc_offsets {enum rtl_flag {RTL_FLAG_TASK_ENABLED =0 ,RTL_FLAG_TASK_RESET_PENDING , +RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE , +RTL_FLAG_TASK_TX_TIMEOUT ,RTL_FLAG_MAX };
@@ -4029,7 +4031,7 @@ static void rtl8169_tx_timeout(struct net_device *dev, unsigned int txqueue) {struct rtl8169_private *tp =netdev_priv (dev); -rtl_schedule_task (tp,RTL_FLAG_TASK_RESET_PENDING ); +rtl_schedule_task (tp,RTL_FLAG_TASK_TX_TIMEOUT ); } static int rtl8169_tx_map(struct rtl8169_private *tp, const u32 *opts, u32 len,
@@ -4624,6 +4626,7 @@ static void rtl_task(struct work_struct *work) {struct rtl8169_private *tp = container_of(work, struct rtl8169_private, wk.work); +int ret;rtnl_lock ();
@@ -4631,9 +4634,21 @@ static void rtl_task(struct work_struct *work) !test_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags)) goto out_unlock; +if (test_and_clear_bit (RTL_FLAG_TASK_TX_TIMEOUT , tp->wk.flags)) { +/* ASPM compatibility issues are a typical reason for tx timeouts */ + ret =pci_disable_link_state (tp->pci_dev,PCIE_LINK_STATE_L1 | +PCIE_LINK_STATE_L0S ); +if (!ret) +netdev_warn_once (tp->dev,"ASPM disabled on Tx timeout\n" ); + goto reset; + } +if (test_and_clear_bit (RTL_FLAG_TASK_RESET_PENDING , tp->wk.flags)) { +reset:rtl_reset_work (tp);netif_wake_queue (tp->dev); + }else if (test_and_clear_bit (RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE , tp->wk.flags)) { +rtl_reset_work (tp); } out_unlock:rtnl_unlock ();
@@ -4667,7 +4682,7 @@ static void r8169_phylink_handler(struct net_device *ndev) }else {/* In few cases rx is broken after link-down otherwise */ if (rtl_is_8125 (tp)) -rtl_reset_work (tp); +rtl_schedule_task (tp,RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE );pm_runtime_idle (d); }
@@ -4744,7 +4759,7 @@ static int rtl8169_close(struct net_device *dev)rtl8169_down (tp);rtl8169_rx_clear (tp); -cancel_work_sync (&tp->wk.work); +cancel_work (&tp->wk.work);free_irq (pci_irq_vector (pdev,0 ), tp);
@@ -5000,6 +5015,8 @@ static void rtl_remove_one(struct pci_dev *pdev)if (pci_dev_run_wake (pdev))pm_runtime_get_noresume (&pdev->dev); +cancel_work_sync (&tp->wk.work); +unregister_netdev (tp->dev);if (tp->dash_type !=RTL_DASH_NONE )
drivers/net/ethernet/renesas/ravb_main.c +23 -7
@@ -1448,19 +1448,20 @@ static int ravb_open(struct net_device *ndev)if (info->gptp)ravb_ptp_init (ndev, priv->pdev); -netif_tx_start_all_queues (ndev); -/* PHY control start */ error =ravb_phy_start (ndev);if (error) goto out_ptp_stop; +netif_tx_start_all_queues (ndev); +return 0 ; out_ptp_stop:/* Stop PTP Clock driver */ if (info->gptp)ravb_ptp_stop (ndev); +ravb_stop_dma (ndev); out_free_irq_nc_tx:if (!info->multi_irqs) goto out_free_irq;
@@ -1504,6 +1505,12 @@ static void ravb_tx_timeout_work(struct work_struct *work)struct net_device *ndev = priv->ndev;int error; +if (!rtnl_trylock ()) { +usleep_range (1000 ,2000 ); +schedule_work (&priv->work); +return ; + } +netif_tx_stop_all_queues (ndev);/* Stop PTP Clock driver */
@@ -1536,7 +1543,7 @@ static void ravb_tx_timeout_work(struct work_struct *work)*/ netdev_err (ndev,"%s: ravb_dmac_init() failed, error %d\n" , __func__, error); -return ; + goto out_unlock; }ravb_emac_init (ndev);
@@ -1546,6 +1553,9 @@ static void ravb_tx_timeout_work(struct work_struct *work)ravb_ptp_init (ndev, priv->pdev);netif_tx_start_all_queues (ndev); + +out_unlock: +rtnl_unlock (); }/* Packet transmit function for Ethernet AVB */
@@ -2179,9 +2189,14 @@ static int ravb_probe(struct platform_device *pdev) ndev->features = info->net_features; ndev->hw_features = info->net_hw_features; -reset_control_deassert (rstc); + error =reset_control_deassert (rstc); +if (error) + goto out_free_netdev; +pm_runtime_enable (&pdev->dev); -pm_runtime_get_sync (&pdev->dev); + error =pm_runtime_resume_and_get (&pdev->dev); +if (error <0 ) + goto out_rpm_disable;if (info->multi_irqs) irq =platform_get_irq_byname (pdev,"ch22" );
@@ -2364,11 +2379,12 @@ static int ravb_probe(struct platform_device *pdev) out_disable_refclk:clk_disable_unprepare (priv->refclk); out_release: -free_netdev (ndev); -pm_runtime_put (&pdev->dev); +out_rpm_disable:pm_runtime_disable (&pdev->dev);reset_control_assert (rstc); +out_free_netdev: +free_netdev (ndev);return error; }
drivers/net/ethernet/stmicro/stmmac/mmc_core.c +4 -0
@@ -177,8 +177,10 @@#define MMC_XGMAC_RX_DISCARD_OCT_GB 0x1b4#define MMC_XGMAC_RX_ALIGN_ERR_PKT 0x1bc +#define MMC_XGMAC_TX_FPE_INTR_MASK 0x204#define MMC_XGMAC_TX_FPE_FRAG 0x208#define MMC_XGMAC_TX_HOLD_REQ 0x20c +#define MMC_XGMAC_RX_FPE_INTR_MASK 0x224#define MMC_XGMAC_RX_PKT_ASSEMBLY_ERR 0x228#define MMC_XGMAC_RX_PKT_SMD_ERR 0x22c#define MMC_XGMAC_RX_PKT_ASSEMBLY_OK 0x230
@@ -352,6 +354,8 @@ static void dwxgmac_mmc_intr_all_mask(void __iomem *mmcaddr) {writel (0x0 , mmcaddr +MMC_RX_INTR_MASK );writel (0x0 , mmcaddr +MMC_TX_INTR_MASK ); +writel (MMC_DEFAULT_MASK , mmcaddr +MMC_XGMAC_TX_FPE_INTR_MASK ); +writel (MMC_DEFAULT_MASK , mmcaddr +MMC_XGMAC_RX_FPE_INTR_MASK );writel (MMC_DEFAULT_MASK , mmcaddr +MMC_XGMAC_RX_IPC_INTR_MASK ); }
drivers/net/hyperv/netvsc_drv.c +15 -10
@@ -2563,15 +2563,6 @@ static int netvsc_probe(struct hv_device *dev, goto devinfo_failed; } - nvdev =rndis_filter_device_add (dev, device_info); -if (IS_ERR (nvdev)) { - ret =PTR_ERR (nvdev); -netdev_err (net,"unable to add netvsc device (ret %d)\n" , ret); - goto rndis_failed; - } - -memcpy (net->dev_addr, device_info->mac_adr,ETH_ALEN ); -/* We must get rtnl lock before scheduling nvdev->subchan_work, * otherwise netvsc_subchan_work() can get rtnl lock first and wait * all subchannels to show up, but that may not happen because
@@ -2579,9 +2570,23 @@ static int netvsc_probe(struct hv_device *dev,* -> ... -> device_add() -> ... -> __device_attach() can't get * the device lock, so all the subchannels can't be processed -- * finally netvsc_subchan_work() hangs forever. +* +* The rtnl lock also needs to be held before rndis_filter_device_add() +* which advertises nvsp_2_vsc_capability / sriov bit, and triggers +* VF NIC offering and registering. If VF NIC finished register_netdev() +* earlier it may cause name based config failure. */ rtnl_lock (); + nvdev =rndis_filter_device_add (dev, device_info); +if (IS_ERR (nvdev)) { + ret =PTR_ERR (nvdev); +netdev_err (net,"unable to add netvsc device (ret %d)\n" , ret); + goto rndis_failed; + } + +memcpy (net->dev_addr, device_info->mac_adr,ETH_ALEN ); +if (nvdev->num_chn >1 )schedule_work (&nvdev->subchan_work);
@@ -2615,9 +2620,9 @@ static int netvsc_probe(struct hv_device *dev,return 0 ; register_failed: -rtnl_unlock ();rndis_filter_device_remove (dev, nvdev); rndis_failed: +rtnl_unlock ();netvsc_devinfo_put (device_info); devinfo_failed:free_percpu (net_device_ctx->vf_stats);
drivers/pinctrl/core.c +3 -3
@@ -1239,17 +1239,17 @@ static void pinctrl_link_add(struct pinctrl_dev *pctldev,static int pinctrl_commit_state (struct pinctrl *p,struct pinctrl_state *state) {struct pinctrl_setting *setting, *setting2; -struct pinctrl_state *old_state = p->state; +struct pinctrl_state *old_state =READ_ONCE (p->state);int ret; -if (p->state) { +if (old_state) {/* * For each pinmux setting in the old state, forget SW's record * of mux owner for that pingroup. Any pingroups which are * still owned by the new state will be re-acquired by the call * to pinmux_enable_setting() in the loop below. */ -list_for_each_entry (setting, &p->state->settings, node) { +list_for_each_entry (setting, &old_state->settings, node) {if (setting->type !=PIN_MAP_TYPE_MUX_GROUP )continue ;pinmux_disable_setting (setting);
drivers/usb/core/config.c +43 -42
333 lines not on this page · raw message
drivers/video/fbdev/sticore.h +1 -1
@@ -231,7 +231,7 @@ struct sti_rom_font {u8 height;u8 font_type;/* language type */ u8 bytes_per_char; -u32 next_font; +s32 next_font;/* note: signed int */ u8 underline_height;u8 underline_pos;u8 res008[2 ];
fs/btrfs/disk-io.c +1 -0
@@ -3204,6 +3204,7 @@ int __cold open_ctree(struct super_block *sb, struct btrfs_fs_devices *fs_device goto fail_alloc; } +btrfs_info (fs_info,"first mount of filesystem %pU" , disk_super->fsid);/* * Verify the type first, if that or the checksum value are * corrupted, we'll find out
fs/btrfs/ref-verify.c +2 -0
@@ -788,6 +788,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,dump_ref_action (fs_info, ra);kfree (ref);kfree (ra); +kfree (re); goto out_unlock; }else if (be->num_refs ==0 ) { btrfs_err(fs_info,
@@ -797,6 +798,7 @@ int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,dump_ref_action (fs_info, ra);kfree (ref);kfree (ra); +kfree (re); goto out_unlock; }
fs/btrfs/send.c +1 -1
@@ -7576,7 +7576,7 @@ long btrfs_ioctl_send(struct file *mnt_file, struct btrfs_ioctl_send_args *arg) sctx->flags = arg->flags; sctx->send_filp =fget (arg->send_fd); -if (!sctx->send_filp) { +if (!sctx->send_filp || !(sctx->send_filp->f_mode &FMODE_WRITE )) { ret = -EBADF ; goto out; }
fs/btrfs/super.c +4 -1
@@ -337,7 +337,10 @@ void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,static void btrfs_put_super (struct super_block *sb) { -close_ctree (btrfs_sb (sb)); +struct btrfs_fs_info *fs_info =btrfs_sb (sb); + +btrfs_info (fs_info,"last unmount of filesystem %pU" , fs_info->fs_devices->fsid); +close_ctree (fs_info); }enum {
fs/btrfs/volumes.c +5 -4
@@ -3064,15 +3064,16 @@ struct extent_map *btrfs_get_chunk_map(struct btrfs_fs_info *fs_info,read_unlock (&em_tree->lock);if (!em) { -btrfs_crit (fs_info,"unable to find logical %llu length %llu" , +btrfs_crit (fs_info, +"unable to find chunk map for logical %llu length %llu" , logical, length);return ERR_PTR (-EINVAL ); } -if (em->start > logical || em->start + em->len < logical) { +if (em->start > logical || em->start + em->len <= logical) {btrfs_crit (fs_info, -"found a bad mapping, wanted %llu-%llu, found %llu-%llu" , - logical, length, em->start, em->start + em->len); +"found a bad chunk map, wanted %llu-%llu, found %llu-%llu" , + logical, logical + length, em->start, em->start + em->len);free_extent_map (em);return ERR_PTR (-EINVAL ); }
fs/cifs/cifsfs.c +1 -0
@@ -1127,6 +1127,7 @@ const struct inode_operations cifs_file_inode_ops = {const struct inode_operations cifs_symlink_inode_ops = { .get_link = cifs_get_link, + .setattr = cifs_setattr, .permission = cifs_permission, .listxattr = cifs_listxattr, };
fs/cifs/xattr.c +4 -1
@@ -150,10 +150,13 @@ static int cifs_xattr_set(const struct xattr_handler *handler,if (cifs_sb->mnt_cifs_flags &CIFS_MOUNT_NO_XATTR ) goto out; -if (pTcon->ses->server->ops->set_EA) +if (pTcon->ses->server->ops->set_EA) { rc = pTcon->ses->server->ops->set_EA (xid, pTcon, full_path, name, value, (__u16 )size, cifs_sb->local_nls, cifs_sb); +if (rc ==0 ) +inode_set_ctime_current (inode); + }break ;case XATTR_CIFS_ACL :
fs/inode.c +16 -0
@@ -2335,6 +2335,22 @@ struct timespec64 current_time(struct inode *inode) }EXPORT_SYMBOL (current_time); +/** +* inode_set_ctime_current - set the ctime to current_time +* @inode: inode +* +* Set the inode->i_ctime to the current value for the inode. Returns +* the current value that was assigned to i_ctime. +*/ +struct timespec64 inode_set_ctime_current (struct inode *inode) +{ +struct timespec64 now =current_time (inode); + +inode_set_ctime (inode, now.tv_sec, now.tv_nsec); +return now; +} +EXPORT_SYMBOL (inode_set_ctime_current); +/** * in_group_or_capable - check whether caller is CAP_FSETID privileged * @mnt_userns: user namespace of the mount @inode was found from
fs/iomap/direct-io.c +11 -11
@@ -92,7 +92,6 @@ ssize_t iomap_dio_complete(struct iomap_dio *dio)if (offset + ret > dio->i_size && !(dio->flags &IOMAP_DIO_WRITE )) ret = dio->i_size - offset; - iocb->ki_pos += ret; }/*
@@ -118,18 +117,19 @@ ssize_t iomap_dio_complete(struct iomap_dio *dio) }inode_dio_end (file_inode (iocb->ki_filp)); -/* -* If this is a DSYNC write, make sure we push it to stable storage now -* that we've written data. -*/ -if (ret >0 && (dio->flags &IOMAP_DIO_NEED_SYNC )) - ret =generic_write_sync (iocb, ret); - -if (ret >0 ) - ret += dio->done_before; +if (ret >0 ) { + iocb->ki_pos += ret; +/* +* If this is a DSYNC write, make sure we push it to stable +* storage now that we've written data. +*/ +if (dio->flags &IOMAP_DIO_NEED_SYNC ) + ret =generic_write_sync (iocb, ret); +if (ret >0 ) + ret += dio->done_before; + }kfree (dio); -return ret; }EXPORT_SYMBOL_GPL (iomap_dio_complete);
include/linux/fs.h +44 -1
51 lines not on this page · raw message
include/linux/mmc/host.h +3 -0
@@ -428,6 +428,7 @@ struct mmc_host { unsigned int retune_paused:1; /* re-tuning is temporarily disabled */ unsigned int retune_crc_disable:1; /* don't trigger retune upon crc */ unsigned int can_dma_map_merge:1; /* merging can be used */ + unsigned int vqmmc_enabled:1; /* vqmmc regulator is enabled */int rescan_disable;/* disable card detection */ int rescan_entered;/* used with nonremovable devices */
@@ -574,6 +575,8 @@ static inline int mmc_regulator_set_vqmmc(struct mmc_host *mmc,#endif int mmc_regulator_get_supply (struct mmc_host *mmc); +int mmc_regulator_enable_vqmmc (struct mmc_host *mmc); +void mmc_regulator_disable_vqmmc (struct mmc_host *mmc);static inline int mmc_card_is_removable (struct mmc_host *host) {
include/linux/platform_data/x86/soc.h new file +65 -0
65 lines not on this page · raw message
include/linux/workqueue.h +1 -0
@@ -462,6 +462,7 @@ extern int schedule_on_each_cpu(work_func_t func);int execute_in_process_context (work_func_t fn,struct execute_work *);extern bool flush_work (struct work_struct *work); +extern bool cancel_work (struct work_struct *work);extern bool cancel_work_sync (struct work_struct *work);extern bool flush_delayed_work (struct delayed_work *dwork);
include/uapi/linux/stddef.h +1 -1
@@ -27,7 +27,7 @@ union { \ struct { MEMBERS } ATTRS; \ struct TAG { MEMBERS } ATTRS NAME; \ - } + } ATTRS /** * __DECLARE_FLEX_ARRAY() - Declare a flexible array usable in a union
kernel/rcu/tree_plugin.h +4 -4
@@ -458,7 +458,7 @@ static bool rcu_preempt_has_tasks(struct rcu_node *rnp)* be quite short, for example, in the case of the call from * rcu_read_unlock_special(). */ -static void +static notrace voidrcu_preempt_deferred_qs_irqrestore (struct task_struct *t,unsigned long flags) {bool empty_exp;
@@ -578,7 +578,7 @@ rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags)* is disabled. This function cannot be expected to understand these * nuances, so the caller must handle them. */ -static bool rcu_preempt_need_deferred_qs (struct task_struct *t) +static notrace bool rcu_preempt_need_deferred_qs(struct task_struct *t) {return (__this_cpu_read (rcu_data.exp_deferred_qs) || READ_ONCE(t->rcu_read_unlock_special.s)) &&
@@ -592,7 +592,7 @@ static bool rcu_preempt_need_deferred_qs(struct task_struct *t)* evaluate safety in terms of interrupt, softirq, and preemption * disabling. */ -static void rcu_preempt_deferred_qs (struct task_struct *t) +static notrace void rcu_preempt_deferred_qs(struct task_struct *t) {unsigned long flags;
@@ -923,7 +923,7 @@ static bool rcu_preempt_has_tasks(struct rcu_node *rnp)* Because there is no preemptible RCU, there can be no deferred quiescent * states. */ -static bool rcu_preempt_need_deferred_qs (struct task_struct *t) +static notrace bool rcu_preempt_need_deferred_qs(struct task_struct *t) {return false; }
kernel/workqueue.c +9 -0
@@ -3277,6 +3277,15 @@ static bool __cancel_work(struct work_struct *work, bool is_dwork)return ret; } +/* +* See cancel_delayed_work() +*/ +bool cancel_work (struct work_struct *work) +{ +return __cancel_work (work, false); +} +EXPORT_SYMBOL (cancel_work); +/** * cancel_delayed_work - cancel a delayed work * @dwork: delayed_work to cancel
lib/errname.c +0 -6
@@ -111,9 +111,6 @@ static const char *names_0[] = {E (ENOSPC ),E (ENOSR ),E (ENOSTR ), -#ifdef ENOSYM -E (ENOSYM ), -#endifE (ENOSYS ),E (ENOTBLK ), E(ENOTCONN),
@@ -144,9 +141,6 @@ static const char *names_0[] = {#endif E (EREMOTE ),E (EREMOTEIO ), -#ifdef EREMOTERELEASE -E (EREMOTERELEASE ), -#endifE (ERESTART ),E (ERFKILL ), E(EROFS),
net/8021q/vlan.h +1 -1
@@ -129,6 +129,7 @@ void vlan_dev_set_ingress_priority(const struct net_device *dev, u32 skb_prio, u16 vlan_prio);int vlan_dev_set_egress_priority (const struct net_device *dev,u32 skb_prio,u16 vlan_prio); +void vlan_dev_free_egress_priority (const struct net_device *dev);int vlan_dev_change_flags (const struct net_device *dev,u32 flag,u32 mask);void vlan_dev_get_realdev_name (const struct net_device *dev,char *result,size_t size);
@@ -139,7 +140,6 @@ int vlan_check_real_dev(struct net_device *real_dev,void vlan_setup (struct net_device *dev);int register_vlan_dev (struct net_device *dev,struct netlink_ext_ack *extack);void unregister_vlan_dev (struct net_device *dev,struct list_head *head); -void vlan_dev_uninit (struct net_device *dev);bool vlan_dev_inherit_address (struct net_device *dev,struct net_device *real_dev);
net/8021q/vlan_dev.c +11 -4
@@ -622,7 +622,7 @@ static int vlan_dev_init(struct net_device *dev) }/* Note: this function might be called multiple times for the same device. */ -void vlan_dev_uninit (struct net_device *dev) +void vlan_dev_free_egress_priority (const struct net_device *dev) {struct vlan_priority_tci_mapping *pm;struct vlan_dev_priv *vlan =vlan_dev_priv (dev);
@@ -636,6 +636,16 @@ void vlan_dev_uninit(struct net_device *dev) } } +static void vlan_dev_uninit (struct net_device *dev) +{ +struct vlan_dev_priv *vlan =vlan_dev_priv (dev); + +vlan_dev_free_egress_priority (dev); + +/* Get rid of the vlan's reference to real_dev */ +dev_put (vlan->real_dev); +} +static netdev_features_t vlan_dev_fix_features (struct net_device *dev,netdev_features_t features) {
@@ -846,9 +856,6 @@ static void vlan_dev_free(struct net_device *dev)free_percpu (vlan->vlan_pcpu_stats); vlan->vlan_pcpu_stats =NULL ; - -/* Get rid of the vlan's reference to real_dev */ -dev_put (vlan->real_dev); }void vlan_setup (struct net_device *dev)
net/8021q/vlan_netlink.c +4 -3
@@ -183,10 +183,11 @@ static int vlan_newlink(struct net *src_net, struct net_device *dev,return -EINVAL ; err =vlan_changelink (dev, tb, data, extack); -if (!err) - err =register_vlan_dev (dev, extack);if (err) -vlan_dev_uninit (dev); +return err; + err =register_vlan_dev (dev, extack); +if (err) +vlan_dev_free_egress_priority (dev);return err; }
net/ipv4/igmp.c +4 -2
@@ -216,8 +216,10 @@ static void igmp_start_timer(struct ip_mc_list *im, int max_delay)int tv =prandom_u32 () % max_delay; im->tm_running =1 ; -if (!mod_timer (&im->timer, jiffies+tv+2 )) -refcount_inc (&im->refcnt); +if (refcount_inc_not_zero (&im->refcnt)) { +if (mod_timer (&im->timer, jiffies + tv +2 )) +ip_ma_put (im); + } }static void igmp_gq_start_timer (struct in_device *in_dev)
sound/pci/hda/hda_intel.c +2 -0
@@ -2210,6 +2210,8 @@ static const struct snd_pci_quirk power_save_denylist[] = {SND_PCI_QUIRK (0x17aa ,0x36a7 ,"Lenovo C50 All in one" ,0 ),/* https://bugs.launchpad.net/bugs/1821663 */ SND_PCI_QUIRK (0x1631 ,0xe017 ,"Packard Bell NEC IMEDIA 5204" ,0 ), +/* KONTRON SinglePC may cause a stall at runtime resume */ + SND_PCI_QUIRK(0x1734, 0x1232, "KONTRON SinglePC", 0), {} };#endif /* CONFIG_PM */
sound/pci/hda/patch_realtek.c +12 -0
@@ -1980,6 +1980,7 @@ enum {ALC887_FIXUP_ASUS_AUDIO ,ALC887_FIXUP_ASUS_HMIC ,ALCS1200A_FIXUP_MIC_VREF , + ALC888VD_FIXUP_MIC_100VREF, }; static void alc889_fixup_coef(struct hda_codec *codec,
@@ -2533,6 +2534,13 @@ static const struct hda_fixup alc882_fixups[] = { {} } }, + [ALC888VD_FIXUP_MIC_100VREF ] = { + .type =HDA_FIXUP_PINCTLS , + .v.pins = (const struct hda_pintbl []) { + {0x18 ,PIN_VREF100 },/* headset mic */ + {} + } + }, };static const struct snd_pci_quirk alc882_fixup_tbl[] = {
@@ -2602,6 +2610,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {SND_PCI_QUIRK (0x106b ,0x4a00 ,"Macbook 5,2" ,ALC889_FIXUP_MBA11_VREF ),SND_PCI_QUIRK (0x1071 ,0x8258 ,"Evesham Voyaeger" ,ALC882_FIXUP_EAPD ), +SND_PCI_QUIRK (0x10ec ,0x12d8 ,"iBase Elo Touch" ,ALC888VD_FIXUP_MIC_100VREF ),SND_PCI_QUIRK (0x13fe ,0x1009 ,"Advantech MIT-W101" ,ALC886_FIXUP_EAPD ),SND_PCI_QUIRK (0x1458 ,0xa002 ,"Gigabyte EP45-DS3/Z87X-UD3H" ,ALC889_FIXUP_FRONT_HP_NO_PRESENCE ), SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
@@ -3249,6 +3258,7 @@ static void alc_disable_headset_jack_key(struct hda_codec *codec)case 0x10ec0230 :case 0x10ec0236 :case 0x10ec0256 : +case 0x10ec0257 :case 0x19e58326 :alc_write_coef_idx (codec,0x48 ,0x0 );alc_update_coef_idx (codec,0x49 ,0x0045 ,0x0 );
@@ -3278,6 +3288,7 @@ static void alc_enable_headset_jack_key(struct hda_codec *codec)case 0x10ec0230 :case 0x10ec0236 :case 0x10ec0256 : +case 0x10ec0257 :case 0x19e58326 :alc_write_coef_idx (codec,0x48 ,0xd011 );alc_update_coef_idx (codec,0x49 ,0x007f ,0x0045 );
@@ -6472,6 +6483,7 @@ static void alc_combo_jack_hp_jd_restart(struct hda_codec *codec)case 0x10ec0236 :case 0x10ec0255 :case 0x10ec0256 : +case 0x10ec0257 :case 0x19e58326 :alc_update_coef_idx (codec,0x1b ,0x8000 ,1 <<15 );/* Reset HP JD */ alc_update_coef_idx (codec,0x1b ,0x8000 ,0 <<15 );
sound/soc/intel/common/soc-intel-quirks.h +3 -48
67 lines not on this page · raw message
sound/soc/sof/sof-pci-dev.c +49 -13
113 lines not on this page · raw message
tools/arch/parisc/include/uapi/asm/errno.h +0 -2
@@ -75,7 +75,6 @@/* We now return you to your regularly scheduled HPUX. */ -#define ENOSYM 215/* symbol does not exist in executable */ #define ENOTSOCK 216/* Socket operation on non-socket */ #define EDESTADDRREQ 217/* Destination address required */ #define EMSGSIZE 218/* Message too long */
@@ -101,7 +100,6 @@#define ETIMEDOUT 238/* Connection timed out */ #define ECONNREFUSED 239/* Connection refused */ #define EREFUSED ECONNREFUSED/* for HP's NFS apparently */ -#define EREMOTERELEASE 240/* Remote peer released connection */ #define EHOSTDOWN 241/* Host is down */ #define EHOSTUNREACH 242/* No route to host */
tools/perf/util/intel-pt.c +2 -0
@@ -1346,9 +1346,11 @@ static void intel_pt_sample_flags(struct intel_pt_queue *ptq) }else if (ptq->state->flags &INTEL_PT_ASYNC ) {if (!ptq->state->to_ip) ptq->flags =PERF_IP_FLAG_BRANCH | +PERF_IP_FLAG_ASYNC |PERF_IP_FLAG_TRACE_END ;else if (ptq->state->from_nr && !ptq->state->to_nr) ptq->flags =PERF_IP_FLAG_BRANCH |PERF_IP_FLAG_CALL | +PERF_IP_FLAG_ASYNC |PERF_IP_FLAG_VMEXIT ;else ptq->flags = PERF_IP_FLAG_BRANCH | PERF_IP_FLAG_CALL |
tools/testing/selftests/net/ipsec.c +2 -2
@@ -2278,7 +2278,7 @@ static int check_results(void)int main (int argc,char **argv) { -unsigned int nr_process =1 ; +long nr_process =1 ;int route_sock =-1 , ret =KSFT_SKIP ;int test_desc_fd[2 ];uint32_t route_seq;
@@ -2299,7 +2299,7 @@ int main(int argc, char **argv)exit_usage (argv); } -if (nr_process >MAX_PROCESSES || !nr_process) { +if (nr_process >MAX_PROCESSES || nr_process <1 ) {printk ("nr_process should be between [1; %u]" ,MAX_PROCESSES );exit_usage (argv);
tools/testing/selftests/resctrl/Makefile +3 -1
@@ -1,4 +1,6 @@ -CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2 +# SPDX-License-Identifier: GPL-2.0 + +CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE CFLAGS += $(KHDR_INCLUDES) TEST_GEN_PROGS := resctrl_tests
tools/testing/selftests/resctrl/resctrl.h +0 -1
@@ -1,5 +1,4 @@/* SPDX-License-Identifier: GPL-2.0 */ -#define _GNU_SOURCE#ifndef RESCTRL_H #define RESCTRL_H #include <stdio.h>