Linux 4.19.316
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.316 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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
------------
Documentation/devicetree/bindings/sound/rt5645.txt | 6 Makefile | 2 arch/arm64/boot/dts/hisilicon/hi3798cv200.dtsi | 2 arch/arm64/boot/dts/nvidia/tegra132-norrin.dts | 4 arch/arm64/boot/dts/nvidia/tegra132.dtsi | 2 arch/arm64/include/asm/asm-bug.h | 1 arch/arm64/kvm/guest.c | 1 arch/m68k/kernel/entry.S | 4 arch/m68k/mac/misc.c | 46 - arch/microblaze/kernel/Makefile | 1 arch/microblaze/kernel/cpu/cpuinfo-static.c | 2 arch/parisc/kernel/parisc_ksyms.c | 1 arch/powerpc/include/asm/hvcall.h | 2 arch/powerpc/platforms/pseries/lpar.c | 6 arch/powerpc/platforms/pseries/lparcfg.c | 6 arch/powerpc/sysdev/fsl_msi.c | 2 arch/sh/kernel/kprobes.c | 7 arch/sh/lib/checksum.S | 67 -- arch/sparc/include/asm/smp_64.h | 2 arch/sparc/include/uapi/asm/termbits.h | 10 arch/sparc/include/uapi/asm/termios.h | 9 arch/sparc/kernel/prom_64.c | 4 arch/sparc/kernel/setup_64.c | 1 arch/sparc/kernel/smp_64.c | 14 arch/um/drivers/line.c | 14 arch/um/drivers/ubd_kern.c | 4 arch/um/include/asm/mmu.h | 2 arch/um/include/shared/skas/mm_id.h | 2 arch/x86/Kconfig.debug | 5 arch/x86/kernel/apic/vector.c | 9 arch/x86/kernel/tsc_sync.c | 6 arch/x86/lib/x86-opcode-map.txt | 2 arch/x86/purgatory/Makefile | 3 arch/x86/tools/relocs.c | 9 drivers/acpi/acpica/Makefile | 1 drivers/android/binder.c | 4 drivers/ata/pata_legacy.c | 8 drivers/block/null_blk_main.c | 3 drivers/char/ppdev.c | 21 drivers/crypto/bcm/spu2.c | 2 drivers/crypto/ccp/sp-platform.c | 59 - drivers/crypto/qat/qat_common/adf_aer.c | 19 drivers/dma-buf/sync_debug.c | 4 drivers/dma/idma64.c | 4 drivers/extcon/Kconfig | 3 drivers/firmware/dmi-id.c | 7 drivers/firmware/raspberrypi.c | 7 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c | 5 drivers/gpu/drm/arm/malidp_mw.c | 5 drivers/gpu/drm/mediatek/mtk_drm_gem.c | 3 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 12 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 9 drivers/hwtracing/intel_th/pci.c | 5 drivers/hwtracing/stm/core.c | 11 drivers/infiniband/hw/hns/hns_roce_hem.h | 12 drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 8 drivers/input/misc/ims-pcu.c | 4 drivers/input/misc/pm8xxx-vibrator.c | 7 drivers/irqchip/irq-alpine-msi.c | 2 drivers/macintosh/adb-iop.c | 48 - drivers/macintosh/via-macii.c | 328 ++++------ drivers/md/md-bitmap.c | 6 drivers/md/raid5.c | 15 drivers/media/cec/cec-adap.c | 3 drivers/media/cec/cec-api.c | 3 drivers/media/dvb-frontends/mxl5xx.c | 22 drivers/media/pci/ngene/ngene-core.c | 4 drivers/media/radio/radio-shark2.c | 2 drivers/media/usb/stk1160/stk1160-video.c | 20 drivers/media/v4l2-core/v4l2-dev.c | 3 drivers/mmc/core/host.c | 3 drivers/mtd/nand/raw/nand_hynix.c | 2 drivers/net/ethernet/cisco/enic/enic_main.c | 12 drivers/net/ethernet/cortina/gemini.c | 12 drivers/net/ethernet/freescale/fec_main.c | 10 drivers/net/ethernet/freescale/fec_ptp.c | 14 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 drivers/net/ethernet/qlogic/qed/qed_main.c | 9 drivers/net/ethernet/smsc/smc91x.h | 4 drivers/net/ipvlan/ipvlan_core.c | 4 drivers/net/usb/qmi_wwan.c | 3 drivers/net/usb/smsc95xx.c | 122 +-- drivers/net/usb/sr9700.c | 10 drivers/net/vxlan.c | 4 drivers/net/wireless/ath/ar5523/ar5523.c | 14 drivers/net/wireless/ath/ath10k/core.c | 3 drivers/net/wireless/ath/ath10k/debugfs_sta.c | 2 drivers/net/wireless/ath/ath10k/hw.h | 1 drivers/net/wireless/ath/ath10k/targaddrs.h | 3 drivers/net/wireless/ath/ath10k/wmi.c | 26 drivers/net/wireless/ath/carl9170/usb.c | 32 + drivers/net/wireless/marvell/mwl8k.c | 2 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 26 drivers/nvme/target/configfs.c | 8 drivers/power/supply/cros_usbpd-charger.c | 11 drivers/s390/cio/trace.h | 2 drivers/s390/crypto/ap_bus.c | 2 drivers/scsi/bfa/bfad_debugfs.c | 4 drivers/scsi/hpsa.c | 2 drivers/scsi/libsas/sas_expander.c | 3 drivers/scsi/qedf/qedf_debugfs.c | 2 drivers/scsi/ufs/ufs-qcom.h | 12 drivers/scsi/ufs/ufs.h | 30 drivers/scsi/ufs/ufshcd.c | 185 ++--- drivers/scsi/ufs/ufshci.h | 25 drivers/spi/spi.c | 4 drivers/staging/greybus/arche-apb-ctrl.c | 1 drivers/staging/greybus/arche-platform.c | 9 drivers/staging/greybus/light.c | 8 drivers/staging/speakup/main.c | 2 drivers/tty/n_gsm.c | 8 drivers/tty/serial/max3100.c | 22 drivers/tty/serial/sh-sci.c | 24 drivers/usb/gadget/function/u_audio.c | 2 drivers/video/fbdev/Kconfig | 4 drivers/video/fbdev/savage/savagefb_driver.c | 5 drivers/video/fbdev/sh_mobile_lcdcfb.c | 2 drivers/video/fbdev/sis/init301.c | 3 drivers/virtio/virtio_pci_common.c | 4 fs/ecryptfs/keystore.c | 4 fs/ext4/namei.c | 2 fs/ext4/xattr.c | 4 fs/f2fs/node.c | 2 fs/f2fs/segment.c | 6 fs/f2fs/super.c | 4 fs/jffs2/xattr.c | 3 fs/nfs/internal.h | 4 fs/nfsd/nfs4state.c | 11 fs/nilfs2/ioctl.c | 2 fs/nilfs2/segment.c | 63 +- include/linux/moduleparam.h | 2 include/net/dst_ops.h | 2 include/net/neighbour.h | 2 include/net/netfilter/nf_tables.h | 132 +--- include/net/sock.h | 13 include/trace/events/asoc.h | 2 include/uapi/linux/netfilter/nf_tables.h | 1 kernel/cgroup/cpuset.c | 2 kernel/debug/kdb/kdb_io.c | 99 +-- kernel/irq/cpuhotplug.c | 16 kernel/params.c | 18 kernel/sched/topology.c | 9 kernel/trace/ring_buffer.c | 9 net/9p/client.c | 2 net/ipv4/route.c | 22 net/ipv4/tcp_dctcp.c | 13 net/ipv6/route.c | 29 net/ipv6/seg6.c | 5 net/ipv6/seg6_hmac.c | 42 - net/netfilter/nf_tables_api.c | 529 ++++++++++++++--- net/netfilter/nfnetlink_queue.c | 2 net/netfilter/nft_chain_filter.c | 3 net/netfilter/nft_compat.c | 32 + net/netfilter/nft_dynset.c | 24 net/netfilter/nft_exthdr.c | 14 net/netfilter/nft_flow_offload.c | 5 net/netfilter/nft_nat.c | 5 net/netfilter/nft_rt.c | 5 net/netfilter/nft_set_bitmap.c | 5 net/netfilter/nft_set_hash.c | 111 ++- net/netfilter/nft_set_rbtree.c | 387 ++++++++++-- net/netfilter/nft_socket.c | 5 net/netfilter/nft_tproxy.c | 5 net/netrom/nr_route.c | 19 net/nfc/nci/core.c | 17 net/openvswitch/actions.c | 6 net/openvswitch/flow.c | 3 net/packet/af_packet.c | 3 net/sunrpc/auth_gss/svcauth_gss.c | 12 net/sunrpc/xprtsock.c | 18 net/unix/af_unix.c | 2 net/wireless/trace.h | 4 net/xfrm/xfrm_policy.c | 11 scripts/kconfig/symbol.c | 6 sound/core/timer.c | 10 sound/soc/codecs/da7219-aad.c | 6 sound/soc/codecs/rt5645.c | 25 tools/lib/subcmd/parse-options.c | 8 tools/objtool/arch/x86/lib/x86-opcode-map.txt | 2 tools/testing/selftests/kcmp/kcmp_test.c | 8 181 files changed, 2155 insertions(+), 1304 deletions(-)
Aaron Conole (1):
openvswitch: Set the skbuff pkt_type for proper pmtud support.
Adrian Hunter (1):
x86/insn: Fix PUSH instruction in x86 instruction decoder opcode map
Al Viro (1):
parisc: add missing export of __cmpxchg_u8()
Aleksandr Burakov (1):
media: ngene: Add dvb_ca_en50221_init return value check
Aleksandr Mishin (1):
crypto: bcm - Fix pointer arithmetic
Alexander Shishkin (1):
intel_th: pci: Add Meteor Lake-S CPU support
Andre Edich (2):
smsc95xx: remove redundant function arguments
smsc95xx: use usbnet->driver_priv
Andrew Halaney (3):
scsi: ufs: qcom: Perform read back after writing reset bit
scsi: ufs: core: Perform read back after disabling interrupts
scsi: ufs: core: Perform read back after disabling UIC_COMMAND_COMPL
Andy Shevchenko (4):
serial: max3100: Lock port->lock when calling uart_handle_cts_change()
serial: max3100: Update uart_driver_registered on driver removal
serial: max3100: Fix bitwise types
spi: Don't mark message DMA mapped when no transfer in it is
Ard Biesheuvel (1):
x86/purgatory: Switch to the position-independent small code model
Arnd Bergmann (10):
nilfs2: fix out-of-range warning
crypto: ccp - drop platform ifdef checks
qed: avoid truncating work queue length
ACPI: disable -Wstringop-truncation
fbdev: shmobile: fix snprintf truncation powerpc/fsl-soc: hide unused const variable
fbdev: sisfb: hide unused variables
firmware: dmi-id: add a release callback function
greybus: arche-ctrl: move device table to its right location
Input: ims-pcu - fix printf string overflow
Baochen Qiang (1):
wifi: ath10k: poll service ready message before failing
Baokun Li (1):
ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find()
Bitterblue Smith (1):
wifi: rtl8xxxu: Fix the TX power of RTL8192CU, RTL8723AU
Breno Leitao (1):
af_unix: Fix data races in unix_release_sock/unix_stream_sendmsg
Brian Kubisiak (1):
ecryptfs: Fix buffer size for tag 66 packet
Bui Quang Minh (2):
scsi: bfa: Ensure the copied buf is NUL terminated
scsi: qedf: Ensure the copied buf is NUL terminated
Cai Xinchen (1):
fbdev: savage: Handle err return when savagefb_check_var failed
Carlos Llamas (1):
binder: fix max_thread type inconsistency
Carolina Jubran (1):
net/mlx5e: Use rx_missed_errors instead of rx_dropped for reporting buffer exhaustion
Chao Yu (1):
f2fs: fix to release node block count in error path of f2fs_new_node_page()
Chen Ni (1):
dmaengine: idma64: Add check for dma_set_max_seg_size
Chengchang Tang (1):
RDMA/hns: Use complete parentheses in macros
Chris Wulff (1):
usb: gadget: u_audio: Clear uac pointer when freed.
Christoph Hellwig (2):
scsi: ufs: cleanup struct utp_task_req_desc
scsi: ufs: add a low-level __ufshcd_issue_tm_cmd helper
Christophe JAILLET (1):
ppdev: Remove usage of the deprecated ida_simple_xx() API
Chuck Lever (2):
SUNRPC: Fix gss_free_in_token_pages()
SUNRPC: Fix loop termination condition in gss_free_in_token_pages()
Dan Carpenter (4):
speakup: Fix sizeof() vs ARRAY_SIZE() bug
wifi: mwl8k: initialize cmd->addr[] properly
stm class: Fix a double free in stm_register_device()
media: stk1160: fix bounds checking in stk1160_copy_video()
Daniel Borkmann (1):
vxlan: Fix regression when dropping packets due to invalid src addresses
Daniel J Blueman (1):
x86/tsc: Trust initial offset in architectural TSC-adjust MSRs
Daniel Starke (1):
tty: n_gsm: fix possible out-of-bounds in gsm0_receive()
Daniel Thompson (5):
kdb: Fix buffer overflow during tab-complete
kdb: Use format-strings rather than '\0' injection in kdb_read()
kdb: Fix console handling when editing and tab-completing commands
kdb: Merge identical case statements in kdb_read()
kdb: Use format-specifiers rather than memset() for padding in kdb_read()
Daniele Palmas (1):
net: usb: qmi_wwan: add Telit FN920C04 compositions
Derek Fang (2):
ASoC: rt5645: Fix the electric noise due to the CBJ contacts floating
ASoC: dt-bindings: rt5645: add cbj sleeve gpio property
Dmitry Baryshkov (1):
wifi: ath10k: populate board data for WCN3990
Dongli Zhang (1):
genirq/cpuhotplug, x86/vector: Prevent vector leak during CPU offline
Duoming Zhou (1):
um: Fix return value in ubd_init()
Edward Liaw (1):
selftests/kcmp: remove unused open mode
Eric Dumazet (6):
net: usb: sr9700: stop lying about skb->truesize
net: usb: smsc95xx: stop lying about skb->truesize
netrom: fix possible dead-lock in nr_rt_ioctl()
af_packet: do not call packet_read_pending() from tpacket_destruct_skb()
netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu()
net: fix __dst_negative_advice() race
Fenglin Wu (1):
Input: pm8xxx-vibrator - correct VIB_MAX_LEVELS calculation
Finn Thain (5):
macintosh/via-macii: Remove BUG_ON assertions macintosh/via-macii, macintosh/adb-iop: Clean up whitespace macintosh/via-macii: Fix "BUG: sleeping function called from invalid context" m68k/mac: Use '030 reset method on SE/30
m68k: mac: Fix reboot hang on Mac IIci
Florian Westphal (4):
netfilter: nf_tables: defer gc run if previous batch is still pending
netfilter: nftables: exthdr: fix 4-byte stack OOB write
netfilter: nf_tables: mark newset as dead on transaction abort
netfilter: nf_tables: set dormant flag on hook register failure
Gautam Menghani (1):
selftests/kcmp: Make the test output consistent and clear
Geert Uytterhoeven (2):
sh: kprobes: Merge arch_copy_kprobe() into arch_prepare_kprobe()
serial: sh-sci: Extract sci_dma_rx_chan_invalidate()
Greg Kroah-Hartman (1):
Linux 4.19.316
Guenter Roeck (1):
Revert "sh: Handle calling csum_partial with misaligned data"
Guixiong Wei (1):
x86/boot: Ignore relocations in .notes sections in walk_relocs() too
Hangbin Liu (4):
ipv6: sr: add missing seg6_local_exit
ipv6: sr: fix incorrect unregister order
ipv6: sr: fix invalid unregister error path
ipv6: sr: fix memleak in seg6_hmac_init_algo
Hans Verkuil (3):
media: cec: cec-adap: always cancel work in cec_transmit_msg_fh
media: cec: cec-api: add locking in cec_release()
media: v4l2-core: hold videodev_lock until dev reg, finishes
Harald Freudenberger (1):
s390/ap: Fix crash in AP internal function modify_bitmap()
Herbert Xu (1):
crypto: qat - Fix ADF_DEV_RESET_SYNC memory leak
Huai-Yuan Liu (2):
drm/arm/malidp: fix a possible null pointer dereference
ppdev: Add an error check in register_device
Ian Rogers (1):
libsubcmd: Fix parse-options memory leak
Ignat Korchagin (1):
netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate()
Igor Artemiev (1):
wifi: cfg80211: fix the order of arguments for trace events of the tx_rx_evt class
Ilya Denisyev (1):
jffs2: prevent xattr node from overflowing the eraseblock
Ilya Maximets (1):
net: openvswitch: fix overwriting ct original tuple for ICMPv6
Jan Kara (1):
ext4: avoid excessive credit estimate in ext4_tmpfile()
Jeykumar Sankaran (1):
drm/msm/dpu: use kms stored hw mdp block
Jiangfeng Xiao (1):
arm64: asm-bug: Add .align 2 to the end of __BUG_ENTRY
Jiri Pirko (1):
virtio: delete vq in vp_find_vqs_msix() when request_irq() fails
Jorge Ramirez-Ortiz (1):
mmc: core: Do not force a retune before RPMB switch
Joshua Ashton (1):
drm/amd/display: Set color_mgmt_changed to true on unsuspend
Justin Green (1):
drm/mediatek: Add 0 size check to mtk_drm_gem_obj
Krzysztof Kozlowski (1):
arm64: tegra: Correct Tegra132 I2C alias
Kuniyuki Iwashima (1):
tcp: Fix shift-out-of-bounds in dctcp_update_alpha().
Laurent Pinchart (1):
firmware: raspberrypi: Use correct device for DMA mappings
Leon Romanovsky (1):
RDMA/IPoIB: Fix format truncation compilation errors
Linus Walleij (1):
net: ethernet: cortina: Locking fixes
Marc Zyngier (1):
KVM: arm64: Allow AArch32 PSTATE.M to be restored as System mode
Masahiro Yamada (2):
x86/kconfig: Select ARCH_WANT_FRAME_POINTERS again when UNWINDER_FRAME_POINTER=y
kconfig: fix comparison to constant symbols, 'm', 'n'
Maxim Korotkov (1):
mtd: rawnand: hynix: fixed typo
Michael Schmitz (1):
m68k: Fix spinlock race in kernel thread creation
Michal Simek (2):
microblaze: Remove gcc flag for non existing early_printk.c file
microblaze: Remove early printk call from cpuinfo-static.c
Mike Gilbert (1):
sparc: move struct termio to asm/termios.h
Nathan Chancellor (2):
crypto: ccp - Remove forward declaration
media: mxl5xx: Move xpt structures off stack
NeilBrown (1):
nfsd: drop st_mutex before calling move_to_close_lru()
Nikita Zhandarovich (3):
wifi: carl9170: add a proper sanity check for endpoints
wifi: ar5523: enable proper endpoint verification net/9p: fix uninit-value in p9_client_rpc()
Pablo Neira Ayuso (34):
netfilter: nf_tables: pass context to nft_set_destroy()
netfilter: nftables: rename set element data activation/deactivation functions
netfilter: nf_tables: drop map element references from preparation phase
netfilter: nft_set_rbtree: allow loose matching of closing element in interval
netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
netfilter: nft_set_rbtree: fix null deref on element insertion
netfilter: nft_set_rbtree: fix overlap expiration walk
netfilter: nf_tables: don't skip expired elements during walk
netfilter: nf_tables: GC transaction API to avoid race with control plane
netfilter: nf_tables: adapt set backend to use GC transaction API
netfilter: nf_tables: remove busy mark and gc batch API
netfilter: nf_tables: fix GC transaction races with netns and netlink event exit path
netfilter: nf_tables: GC transaction race with netns dismantle
netfilter: nf_tables: GC transaction race with abort path
netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction
netfilter: nft_set_rbtree: use read spinlock to avoid datapath contention
netfilter: nft_set_hash: try later when GC hits EAGAIN on iteration
netfilter: nf_tables: fix memleak when more than 255 elements expired
netfilter: nf_tables: unregister flowtable hooks on netns exit
netfilter: nf_tables: double hook unregistration in netns path
netfilter: nftables: update table flags from the commit phase
netfilter: nf_tables: fix table flag updates
netfilter: nf_tables: disable toggling dormant table state more than once
netfilter: nf_tables: bogus EBUSY when deleting flowtable after flush (for 4.19)
netfilter: nft_dynset: fix timeouts later than 23 days
netfilter: nft_dynset: report EOPNOTSUPP on missing set feature
netfilter: nft_dynset: relax superfluous check on set updates
netfilter: nf_tables: skip dead set elements in netlink dump
netfilter: nf_tables: validate NFPROTO_* family
netfilter: nft_set_rbtree: skip end interval element from gc
netfilter: nf_tables: do not compare internal table flags on updates
netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout
netfilter: nf_tables: reject new basechain after table flag update
netfilter: nf_tables: discard table flag update with pending basechain deletion
Parthiban Veerasooran (1):
net: usb: smsc95xx: fix changing LED_SEL bit value updated from EEPROM
Peter Oberparleiter (1):
s390/cio: fix tracepoint subchannel type field
Petr Pavlu (1):
ring-buffer: Fix a race between readers and resize checks
Phil Sutter (1):
netfilter: nft_set_rbtree: Add missing expired checks
Pierre-Louis Bossart (1):
ASoC: da7219-aad: fix usage of device_get_named_child_node()
Qingfang DENG (1):
neighbour: fix unaligned access to pneigh_entry
Randy Dunlap (2):
fbdev: sh7760fb: allow modular build
extcon: max8997: select IRQ_DOMAIN instead of depending on it
Ricardo Ribalda (1):
media: radio-shark2: Avoid led_names truncations
Roberto Sassu (1):
um: Add winch to winch_handlers before registering winch IRQ
Roded Zats (1):
enic: Validate length of nl attributes in enic_set_vf_port
Rui Miguel Silva (1):
greybus: lights: check return of get_channel_from_mode
Ryosuke Yasuoka (2):
nfc: nci: Fix uninit-value in nci_rx_work
nfc: nci: Fix handling of zero-length payload packets in nci_rx_work()
Ryusuke Konishi (3):
nilfs2: fix unexpected freezing of nilfs_segctor_sync()
nilfs2: fix potential hang in nilfs_detach_log_writer()
nilfs2: fix use-after-free of timer for log writer thread
Sagi Grimberg (2):
params: lift param_set_uint_minmax to common code
nvmet: fix ns enable/disable possible hang
Sahitya Tummala (1):
f2fs: add error prints for debugging mount failure
Sam Ravnborg (1):
sparc64: Fix number of online CPUs
Sergey Shtylyov (2):
ata: pata_legacy: make legacy_exit() work again
nfs: fix undefined behavior in nfs_block_bits()
Shrikanth Hegde (1):
powerpc/pseries: Add failure related checks for h_get_mpp and h_get_ppp
Srinivasan Shanmugam (1):
drm/amd/display: Fix potential index out of bounds in color transformation function
Steven Rostedt (1):
ASoC: tracing: Export SND_SOC_DAPM_DIR_OUT to its value
Su Hui (1):
wifi: ath10k: Fix an error code problem in ath10k_dbg_sta_write_peer_debug_trigger()
Takashi Iwai (1):
ALSA: timer: Set lower bound of start tick time
Tetsuo Handa (2):
nfc: nci: Fix kcov check in nci_rx_work() dma-buf/sw-sync: don't enable IRQ from sync_print_obj()
Thorsten Blum (1):
net: smc91x: Fix m68k kernel compilation for ColdFire CPU
Tiwei Bie (1):
um: Fix the -Wmissing-prototypes warning for __switch_mm
Tzung-Bi Shih (1):
power: supply: cros_usbpd: provide ID table for avoiding fallback match
Valentin Schneider (1):
sched/topology: Don't set SD_BALANCE_WAKE on cpuset domain relax
Vitalii Bursov (1):
sched/fair: Allow disabling sched_balance_newidle with sched_relax_domain_level
Wei Fang (1):
net: fec: avoid lock evasion when reading pps_enable
Wolfram Sang (1):
serial: sh-sci: protect invalidating RXDMA on shutdown
Xiaolei Wang (1):
net:fec: Add fec_enet_deinit()
Xingui Yang (1):
scsi: libsas: Fix the failure of adding phy with zero-address to port
Yang Xiwen (1):
arm64: dts: hi3798cv200: fix the size of GICR
Yu Kuai (2):
md: fix resync softlockup when bitmap size is less than array size md/raid5: fix deadlock that raid5d() wait for itself to clear MD_SB_CHANGE_PENDING
Yue Haibing (1):
ipvlan: Dont Use skb->sk in ipvlan_process_v{4,6}_outboundYuri Karpov (1):
scsi: hpsa: Fix allocation size for Scsi_Host private data
Zenghui Yu (1):
irqchip/alpine-msi: Fix off-by-one in allocation error path
Zhu Yanjun (2):
null_blk: Fix missing mutex_destroy() at module removal
null_blk: Fix the WARNING: modpost: missing MODULE_DESCRIPTION()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/sound/rt5645.txt +6 -0
@@ -16,6 +16,11 @@ Optional properties: a GPIO spec for the external headphone detect pin. If jd-mode = 0, we will get the JD status by getting the value of hp-detect-gpios. +- cbj-sleeve-gpios: + a GPIO spec to control the external combo jack circuit to tie the sleeve/ring2 + contacts to the ground or floating. It could avoid some electric noise from the + active speaker jacks. + - realtek,in2-differential Boolean. Indicate MIC2 input are differential, rather than single-ended.
@@ -64,6 +69,7 @@ codec: rt5650@1a { compatible = "realtek,rt5650"; reg = <0x1a>; hp-detect-gpios = <&gpio 19 0>; + cbj-sleeve-gpios = <&gpio 20 0>; interrupt-parent = <&gpio>; interrupts = <7 IRQ_TYPE_EDGE_FALLING>; realtek,dmic-en = "true";
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 315 +SUBLEVEL = 316 EXTRAVERSION = NAME = "People's Front"
arch/arm64/boot/dts/hisilicon/hi3798cv200.dtsi +1 -1
@@ -60,7 +60,7 @@ gic: interrupt-controller@f1001000 { compatible = "arm,gic-400"; reg = <0x0 0xf1001000 0x0 0x1000>, /* GICD */ - <0x0 0xf1002000 0x0 0x100>; /* GICC */ + <0x0 0xf1002000 0x0 0x2000>; /* GICC */ #address-cells = <0>; #interrupt-cells = <3>; interrupt-controller;
arch/arm64/boot/dts/nvidia/tegra132-norrin.dts +2 -2
@@ -9,8 +9,8 @@ compatible = "nvidia,norrin", "nvidia,tegra132", "nvidia,tegra124"; aliases { - rtc0 = "/i2c@7000d000/as3722@40"; - rtc1 = "/rtc@7000e000"; + rtc0 = &as3722; + rtc1 = &tegra_rtc; serial0 = &uarta; };
arch/arm64/boot/dts/nvidia/tegra132.dtsi +1 -1
@@ -569,7 +569,7 @@ status = "disabled"; }; - rtc@7000e000 { + tegra_rtc: rtc@7000e000 { compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc"; reg = <0x0 0x7000e000 0x0 0x100>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
arch/arm64/include/asm/asm-bug.h +1 -0
@@ -39,6 +39,7 @@ 14470: .long 14471f - 14470b; \_BUGVERBOSE_LOCATION (__FILE__, __LINE__) \ .short flags; \ + .align 2; \ .popsection; \ 14471:#else
arch/arm64/kvm/guest.c +1 -0
@@ -175,6 +175,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)case PSR_AA32_MODE_SVC :case PSR_AA32_MODE_ABT :case PSR_AA32_MODE_UND : +case PSR_AA32_MODE_SYS :if (!vcpu_el1_is_32bit (vcpu))return -EINVAL ;break ;
arch/m68k/kernel/entry.S +3 -1
@@ -425,7 +425,9 @@ resume: movec %a0,%dfc /* restore status register */ - movew %a1@(TASK_THREAD+THREAD_SR),%sr + movew %a1@(TASK_THREAD+THREAD_SR),%d0 + oriw #0x0700,%d0 + movew %d0,%sr rts
arch/m68k/mac/misc.c +18 -28
64 lines not on this page · raw message
arch/microblaze/kernel/Makefile +0 -1
@@ -7,7 +7,6 @@ ifdef CONFIG_FUNCTION_TRACER # Do not trace early boot code and low level code CFLAGS_REMOVE_timer.o = -pg CFLAGS_REMOVE_intc.o = -pg -CFLAGS_REMOVE_early_printk.o = -pg CFLAGS_REMOVE_ftrace.o = -pg CFLAGS_REMOVE_process.o = -pg endif
arch/microblaze/kernel/cpu/cpuinfo-static.c +1 -1
@@ -18,7 +18,7 @@ static const char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;static const char cpu_ver_string[] =CONFIG_XILINX_MICROBLAZE0_HW_VER ;#define err_printk (x) \ - early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n"); + pr_err("ERROR: Microblaze " x "-different for kernel and DTS\n");void __init set_cpuinfo_static (struct cpuinfo *ci,struct device_node *cpu) {
arch/parisc/kernel/parisc_ksyms.c +1 -0
@@ -34,6 +34,7 @@ EXPORT_SYMBOL(memset);#include <linux/atomic.h> EXPORT_SYMBOL (__xchg8);EXPORT_SYMBOL (__xchg32); +EXPORT_SYMBOL (__cmpxchg_u8);EXPORT_SYMBOL (__cmpxchg_u32);EXPORT_SYMBOL (__cmpxchg_u64);#ifdef CONFIG_SMP
arch/powerpc/include/asm/hvcall.h +1 -1
@@ -424,7 +424,7 @@ struct hvcall_mpp_data {unsigned long backing_mem; }; -int h_get_mpp (struct hvcall_mpp_data *); +long h_get_mpp (struct hvcall_mpp_data *mpp_data);struct hvcall_mpp_x_data {unsigned long coalesced_bytes;
arch/powerpc/platforms/pseries/lpar.c +3 -3
@@ -933,10 +933,10 @@ void __trace_hcall_exit(long opcode, long retval, unsigned long *retbuf)* h_get_mpp * H_GET_MPP hcall returns info in 7 parms */ -int h_get_mpp (struct hvcall_mpp_data *mpp_data) +long h_get_mpp (struct hvcall_mpp_data *mpp_data) { -int rc; -unsigned long retbuf[PLPAR_HCALL9_BUFSIZE ]; +unsigned long retbuf[PLPAR_HCALL9_BUFSIZE ] = {0 }; +long rc; rc =plpar_hcall9 (H_GET_MPP , retbuf);
arch/powerpc/platforms/pseries/lparcfg.c +3 -3
@@ -114,8 +114,8 @@ struct hvcall_ppp_data {*/ static unsigned int h_get_ppp (struct hvcall_ppp_data *ppp_data) { -unsigned long rc; -unsigned long retbuf[PLPAR_HCALL9_BUFSIZE ]; +unsigned long retbuf[PLPAR_HCALL9_BUFSIZE ] = {0 }; +long rc; rc =plpar_hcall9 (H_GET_PPP , retbuf);
@@ -161,7 +161,7 @@ static void parse_ppp_data(struct seq_file *m)struct hvcall_ppp_data ppp_data;struct device_node *root;const __be32 *perf_level; -int rc; +long rc; rc =h_get_ppp (&ppp_data);if (rc)
arch/powerpc/sysdev/fsl_msi.c +2 -0
@@ -578,10 +578,12 @@ static const struct fsl_msi_feature ipic_msi_feature = { .msiir_offset = 0x38, }; +#ifdef CONFIG_EPAPR_PARAVIRT static const struct fsl_msi_feature vmpic_msi_feature = { .fsl_pic_ip =FSL_PIC_IP_VMPIC , .msiir_offset =0 , }; +#endif static const struct of_device_id fsl_of_msi_ids[] = { {
arch/sh/kernel/kprobes.c +1 -6
@@ -47,17 +47,12 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)if (OPCODE_RTE (opcode))return -EFAULT ;/* Bad breakpoint */ +memcpy (p->ainsn.insn, p->addr,MAX_INSN_SIZE *sizeof (kprobe_opcode_t)); p->opcode = opcode;return 0 ; } -void __kprobes arch_copy_kprobe (struct kprobe *p) -{ -memcpy (p->ainsn.insn, p->addr,MAX_INSN_SIZE *sizeof (kprobe_opcode_t)); - p->opcode = *p->addr; -} -void __kprobes arch_arm_kprobe (struct kprobe *p) { *p->addr =BREAKPOINT_INSTRUCTION ;
arch/sh/lib/checksum.S +18 -49
120 lines not on this page · raw message
arch/sparc/include/asm/smp_64.h +0 -2
@@ -47,7 +47,6 @@ void arch_send_call_function_ipi_mask(const struct cpumask *mask);int hard_smp_processor_id (void );#define raw_smp_processor_id () (current_thread_info()->cpu) -void smp_fill_in_cpu_possible_map (void );void smp_fill_in_sib_core_maps (void );void cpu_play_dead (void );
@@ -77,7 +76,6 @@ void __cpu_die(unsigned int cpu);#define smp_fill_in_sib_core_maps () do { } while (0)#define smp_fetch_global_regs () do { } while (0)#define smp_fetch_global_pmu () do { } while (0) -#define smp_fill_in_cpu_possible_map () do { } while (0)#define smp_init_cpu_poke () do { } while (0)#define scheduler_poke () do { } while (0)
arch/sparc/include/uapi/asm/termbits.h +0 -10
@@ -13,16 +13,6 @@ typedef unsigned int tcflag_t;typedef unsigned long tcflag_t ;#endif -#define NCC 8 -struct termio { -unsigned short c_iflag;/* input mode flags */ -unsigned short c_oflag;/* output mode flags */ -unsigned short c_cflag;/* control mode flags */ -unsigned short c_lflag;/* local mode flags */ -unsigned char c_line;/* line discipline */ -unsigned char c_cc[NCC ];/* control characters */ -}; -#define NCCS 17struct termios {tcflag_t c_iflag;/* input mode flags */
arch/sparc/include/uapi/asm/termios.h +9 -0
@@ -40,5 +40,14 @@ struct winsize { unsigned short ws_ypixel; }; +#define NCC 8 +struct termio { +unsigned short c_iflag;/* input mode flags */ +unsigned short c_oflag;/* output mode flags */ +unsigned short c_cflag;/* control mode flags */ +unsigned short c_lflag;/* local mode flags */ +unsigned char c_line;/* line discipline */ +unsigned char c_cc[NCC ];/* control characters */ +};#endif /* _UAPI_SPARC_TERMIOS_H */
arch/sparc/kernel/prom_64.c +3 -1
@@ -479,7 +479,9 @@ static void *record_one_cpu(struct device_node *dp, int cpuid, int arg) ncpus_probed++;#ifdef CONFIG_SMP set_cpu_present (cpuid, true); -set_cpu_possible (cpuid, true); + +if (num_possible_cpus () < nr_cpu_ids) +set_cpu_possible (cpuid, true);#endif return NULL ; }
arch/sparc/kernel/setup_64.c +0 -1
@@ -690,7 +690,6 @@ void __init setup_arch(char **cmdline_p)paging_init ();init_sparc64_elf_hwcap (); -smp_fill_in_cpu_possible_map ();/* * Once the OF device tree and MDESC have been setup and nr_cpus has * been parsed, we know the list of possible cpus. Therefore we can
arch/sparc/kernel/smp_64.c +0 -14
@@ -1213,20 +1213,6 @@ void __init smp_setup_processor_id(void) xcall_deliver_impl = hypervisor_xcall_deliver; } -void __init smp_fill_in_cpu_possible_map (void ) -{ -int possible_cpus =num_possible_cpus (); -int i; - -if (possible_cpus > nr_cpu_ids) - possible_cpus = nr_cpu_ids; - -for (i =0 ; i < possible_cpus; i++) -set_cpu_possible (i, true); -for (; i <NR_CPUS ; i++) -set_cpu_possible (i, false); -} -void smp_fill_in_sib_core_maps (void ) {unsigned int i;
arch/um/drivers/line.c +8 -6
@@ -683,24 +683,26 @@ void register_winch_irq(int fd, int tty_fd, int pid, struct tty_port *port, goto cleanup; } - *winch = ((struct winch ) { .list =LIST_HEAD_INIT (winch->list), - .fd = fd, + *winch = ((struct winch ) { .fd = fd, .tty_fd = tty_fd, .pid = pid, .port = port, .stack = stack }); +spin_lock (&winch_handler_lock); +list_add (&winch->list, &winch_handlers); +spin_unlock (&winch_handler_lock); +if (um_request_irq (WINCH_IRQ , fd,IRQ_READ , winch_interrupt,IRQF_SHARED ,"winch" , winch) <0 ) {printk (KERN_ERR "register_winch_irq - failed to register " "IRQ\n" ); +spin_lock (&winch_handler_lock); +list_del (&winch->list); +spin_unlock (&winch_handler_lock); goto out_free; } -spin_lock (&winch_handler_lock); -list_add (&winch->list, &winch_handlers); -spin_unlock (&winch_handler_lock); -return ; out_free:
arch/um/drivers/ubd_kern.c +2 -2
@@ -1135,7 +1135,7 @@ static int __init ubd_init(void)if (irq_req_buffer ==NULL ) {printk (KERN_ERR "Failed to initialize ubd buffering\n" ); -return -1 ; +return -ENOMEM ; } io_req_buffer = kmalloc_array(UBD_REQ_BUFFER_SIZE, sizeof(struct io_thread_req *),
@@ -1146,7 +1146,7 @@ static int __init ubd_init(void)if (io_req_buffer ==NULL ) {printk (KERN_ERR "Failed to initialize ubd buffering\n" ); -return -1 ; +return -ENOMEM ; }platform_driver_register (&ubd_driver);mutex_lock (&ubd_lock);
arch/um/include/asm/mmu.h +0 -2
@@ -15,8 +15,6 @@ typedef struct mm_context {struct page *stub_pages[2 ]; } mm_context_t; -extern void __switch_mm (struct mm_id * mm_idp); -/* Avoid tangled inclusion with asm/ldt.h */ extern long init_new_ldt (struct mm_context *to_mm,struct mm_context *from_mm);extern void free_ldt (struct mm_context *mm);
arch/um/include/shared/skas/mm_id.h +2 -0
@@ -14,4 +14,6 @@ struct mm_id { unsigned long stack; }; +void __switch_mm (struct mm_id *mm_idp); +#endif
arch/x86/Kconfig.debug +1 -4
@@ -376,6 +376,7 @@ config UNWINDER_ORC config UNWINDER_FRAME_POINTER bool "Frame pointer unwinder" + select ARCH_WANT_FRAME_POINTERS select FRAME_POINTER ---help--- This option enables the frame pointer unwinder for unwinding kernel
@@ -403,7 +404,3 @@ config UNWINDER_GUESS overhead. endchoice - -config FRAME_POINTER - depends on !UNWINDER_ORC && !UNWINDER_GUESS - bool
arch/x86/kernel/apic/vector.c +6 -3
@@ -915,7 +915,8 @@ static void __send_cleanup_vector(struct apic_chip_data *apicd)hlist_add_head (&apicd->clist,per_cpu_ptr (&cleanup_list, cpu)); apic->send_IPI (cpu,IRQ_MOVE_CLEANUP_VECTOR ); }else { - apicd->prev_vector =0 ; +pr_warn ("IRQ %u schedule cleanup for offline CPU %u\n" , apicd->irq, cpu); +free_moved_vector (apicd); }raw_spin_unlock (&vector_lock); }
@@ -951,6 +952,7 @@ void irq_complete_move(struct irq_cfg *cfg)*/ void irq_force_complete_move (struct irq_desc *desc) { +unsigned int cpu =smp_processor_id ();struct apic_chip_data *apicd;struct irq_data *irqd;unsigned int vector;
@@ -975,10 +977,11 @@ void irq_force_complete_move(struct irq_desc *desc) goto unlock;/* -* If prev_vector is empty, no action required. +* If prev_vector is empty or the descriptor is neither currently +* nor previously on the outgoing CPU no action required. */ vector = apicd->prev_vector; -if (!vector) +if (!vector || (apicd->cpu != cpu && apicd->prev_cpu != cpu)) goto unlock;/*
arch/x86/kernel/tsc_sync.c +2 -4
@@ -151,11 +151,9 @@ bool tsc_store_and_check_tsc_adjust(bool bootcpu) cur->warned = false;/* -* If a non-zero TSC value for socket 0 may be valid then the default -* adjusted value cannot assumed to be zero either. +* The default adjust value cannot be assumed to be zero on any socket. */ -if (tsc_async_resets) - cur->adjusted = bootval; + cur->adjusted = bootval;/* * Check whether this CPU is the first in a package to come up. In
arch/x86/lib/x86-opcode-map.txt +1 -1
@@ -148,7 +148,7 @@ AVXcode: 65: SEG=GS (Prefix) 66: Operand-Size (Prefix) 67: Address-Size (Prefix) -68: PUSH Iz (d64) +68: PUSH Iz 69: IMUL Gv,Ev,Iz 6a: PUSH Ib (d64) 6b: IMUL Gv,Ev,Ib
arch/x86/purgatory/Makefile +2 -1
@@ -30,7 +30,8 @@ KCOV_INSTRUMENT := n # make up the standalone purgatory.ro PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel -PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss -g0 +PURGATORY_CFLAGS := -mcmodel=small -ffreestanding -fno-zero-initialized-in-bss -g0 +PURGATORY_CFLAGS += -fpic -fvisibility=hidden PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
arch/x86/tools/relocs.c +9 -0
@@ -672,6 +672,15 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel,if (!(sec_applies->shdr.sh_flags &SHF_ALLOC )) {continue ; } + +/* +* Do not perform relocations in .notes sections; any +* values there are meant for pre-boot consumption (e.g. +* startup_xen). +*/ +if (sec_applies->shdr.sh_type ==SHT_NOTE ) +continue ; + sh_symtab = sec_symtab->symtab; sym_strtab = sec_symtab->link->strtab;for (j =0 ; j < sec->shdr.sh_size/sizeof (Elf_Rel); j++) {
drivers/acpi/acpica/Makefile +1 -0
@@ -5,6 +5,7 @@ ccflags-y := -D_LINUX -DBUILDING_ACPICA ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT +CFLAGS_tbfind.o += $(call cc-disable-warning, stringop-truncation) # use acpi.o to put all files here into acpi.o modparam namespace obj-y += acpi.o
drivers/android/binder.c +2 -2
@@ -540,7 +540,7 @@ struct binder_proc {struct list_head todo;struct binder_stats stats;struct list_head delivered_death; -int max_threads; +u32 max_threads;int requested_threads;int requested_threads_started;int tmp_ref;
@@ -4658,7 +4658,7 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) goto err;break ;case BINDER_SET_MAX_THREADS : { -int max_threads; +u32 max_threads;if (copy_from_user (&max_threads, ubuf,sizeof (max_threads))) {
drivers/ata/pata_legacy.c +4 -4
@@ -128,8 +128,6 @@ static int legacy_port[NR_HOST] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 };static struct legacy_probe probe_list[NR_HOST ];static struct legacy_data legacy_data[NR_HOST ];static struct ata_host *legacy_host[NR_HOST ]; -static int nr_legacy_host; -static int probe_all;/* Set to check all ISA port ranges */ static int ht6560a;/* HT 6560A on primary 1, second 2, both 3 */
@@ -1253,9 +1251,11 @@ static __exit void legacy_exit(void) {int i; -for (i =0 ; i < nr_legacy_host; i++) { +for (i =0 ; i <NR_HOST ; i++) {struct legacy_data *ld = &legacy_data[i]; -ata_host_detach (legacy_host[i]); + +if (legacy_host[i]) +ata_host_detach (legacy_host[i]);platform_device_unregister (ld->platform_dev); } }
drivers/block/null_blk_main.c +3 -0
@@ -1967,10 +1967,13 @@ static void __exit null_exit(void)if (g_queue_mode ==NULL_Q_MQ && shared_tags)blk_mq_free_tag_set (&tag_set); + +mutex_destroy (&lock); }module_init (null_init);module_exit (null_exit);MODULE_AUTHOR ("Jens Axboe <[email protected]>" ); +MODULE_DESCRIPTION ("multi queue aware block test driver" );MODULE_LICENSE ("GPL" );
drivers/char/ppdev.c +14 -7
@@ -300,28 +300,35 @@ static int register_device(int minor, struct pp_struct *pp)if (!port) {pr_warn ("%s: no associated port!\n" , name); rc = -ENXIO ; - goto err; + goto err_free_name; + } + + index =ida_alloc (&ida_index,GFP_KERNEL ); +if (index <0 ) { +pr_warn ("%s: failed to get index!\n" , name); + rc = index; + goto err_put_port; } - index =ida_simple_get (&ida_index,0 ,0 ,GFP_KERNEL );memset (&ppdev_cb,0 ,sizeof (ppdev_cb)); ppdev_cb.irq_func = pp_irq; ppdev_cb.flags = (pp->flags &PP_EXCL ) ?PARPORT_FLAG_EXCL :0 ; ppdev_cb.private = pp; pdev =parport_register_dev_model (port, name, &ppdev_cb, index); -parport_put_port (port);if (!pdev) {pr_warn ("%s: failed to register device!\n" , name); rc = -ENXIO ; -ida_simple_remove (&ida_index, index); - goto err; +ida_free (&ida_index, index); + goto err_put_port; } pp->pdev = pdev; pp->index = index;dev_dbg (&pdev->dev,"registered pardevice\n" ); -err: +err_put_port: +parport_put_port (port); +err_free_name:kfree (name);return rc; }
@@ -766,7 +773,7 @@ static int pp_release(struct inode *inode, struct file *file)if (pp->pdev) {parport_unregister_device (pp->pdev); -ida_simple_remove (&ida_index, pp->index); +ida_free (&ida_index, pp->index); pp->pdev =NULL ;pr_debug (CHRDEV "%x: unregistered pardevice\n" , minor); }
drivers/crypto/bcm/spu2.c +1 -1
@@ -506,7 +506,7 @@ static void spu2_dump_omd(u8 *omd, u16 hash_key_len, u16 ciph_key_len,if (hash_iv_len) {packet_log (" Hash IV Length %u bytes\n" , hash_iv_len);packet_dump (" hash IV: " , ptr, hash_iv_len); - ptr += ciph_key_len; + ptr += hash_iv_len; }if (ciph_iv_len) {
drivers/crypto/ccp/sp-platform.c +23 -36
94 lines not on this page · raw message
drivers/crypto/qat/qat_common/adf_aer.c +5 -14
@@ -139,8 +139,7 @@ static void adf_device_reset_worker(struct work_struct *work)if (adf_dev_init (accel_dev) ||adf_dev_start (accel_dev)) {/* The device hanged and we can't restart it so stop here */ dev_err (&GET_DEV (accel_dev),"Restart device failed\n" ); -if (reset_data->mode ==ADF_DEV_RESET_ASYNC || -completion_done (&reset_data->compl)) +if (reset_data->mode ==ADF_DEV_RESET_ASYNC )kfree (reset_data);WARN (1 ,"QAT: device restart failed. Device is unusable\n" );return ;
@@ -148,16 +147,8 @@ static void adf_device_reset_worker(struct work_struct *work)adf_dev_restarted_notify (accel_dev);clear_bit (ADF_STATUS_RESTARTING , &accel_dev->status); -/* -* The dev is back alive. Notify the caller if in sync mode -* -* If device restart will take a more time than expected, -* the schedule_reset() function can timeout and exit. This can be -* detected by calling the completion_done() function. In this case -* the reset_data structure needs to be freed here. -*/ -if (reset_data->mode ==ADF_DEV_RESET_ASYNC || -completion_done (&reset_data->compl)) +/* The dev is back alive. Notify the caller if in sync mode */ +if (reset_data->mode ==ADF_DEV_RESET_ASYNC )kfree (reset_data);else complete (&reset_data->compl);
@@ -192,10 +183,10 @@ static int adf_dev_aer_schedule_reset(struct adf_accel_dev *accel_dev,if (!timeout) {dev_err (&GET_DEV (accel_dev),"Reset device timeout expired\n" ); +cancel_work_sync (&reset_data->reset_work); ret = -EFAULT ; - }else { -kfree (reset_data); } +kfree (reset_data);return ret; }return 0 ;
drivers/dma-buf/sync_debug.c +2 -2
@@ -119,12 +119,12 @@ static void sync_print_obj(struct seq_file *s, struct sync_timeline *obj)seq_printf (s,"%s: %d\n" , obj->name, obj->value); -spin_lock_irq (&obj->lock); +spin_lock (&obj->lock);/* Caller already disabled IRQ. */ list_for_each (pos, &obj->pt_list) { struct sync_pt *pt = container_of(pos, struct sync_pt, link);sync_print_fence (s, &pt->base, false); } -spin_unlock_irq (&obj->lock); +spin_unlock (&obj->lock); } static void sync_print_sync_file(struct seq_file *s,
drivers/dma/idma64.c +3 -1
@@ -603,7 +603,9 @@ static int idma64_probe(struct idma64_chip *chip) idma64->dma.dev = chip->sysdev; -dma_set_max_seg_size (idma64->dma.dev,IDMA64C_CTLH_BLOCK_TS_MASK ); + ret =dma_set_max_seg_size (idma64->dma.dev,IDMA64C_CTLH_BLOCK_TS_MASK ); +if (ret) +return ret; ret =dma_async_device_register (&idma64->dma);if (ret)
drivers/extcon/Kconfig +2 -1
@@ -101,7 +101,8 @@ config EXTCON_MAX77843 config EXTCON_MAX8997 tristate "Maxim MAX8997 EXTCON Support" - depends on MFD_MAX8997 && IRQ_DOMAIN + depends on MFD_MAX8997 + select IRQ_DOMAIN help If you say yes here you get support for the MUIC device of Maxim MAX8997 PMIC. The MAX8997 MUIC is a USB port accessory
drivers/firmware/dmi-id.c +6 -1
@@ -161,9 +161,14 @@ static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)return 0 ; } +static void dmi_dev_release (struct device *dev) +{ +kfree (dev); +} +static struct class dmi_class = { .name ="dmi" , - .dev_release = (void (*)(struct device *)) kfree, + .dev_release = dmi_dev_release, .dev_uevent = dmi_dev_uevent, };
drivers/firmware/raspberrypi.c +4 -3
@@ -11,6 +11,7 @@#include <linux/dma-mapping.h> #include <linux/mailbox_client.h> +#include <linux/mailbox_controller.h> #include <linux/module.h> #include <linux/of_platform.h> #include <linux/platform_device.h>
@@ -91,8 +92,8 @@ int rpi_firmware_property_list(struct rpi_firmware *fw,if (size &3 )return -EINVAL ; - buf =dma_alloc_coherent (fw->cl.dev,PAGE_ALIGN (size), &bus_addr, -GFP_ATOMIC ); + buf =dma_alloc_coherent (fw->chan->mbox->dev,PAGE_ALIGN (size), + &bus_addr,GFP_ATOMIC );if (!buf)return -ENOMEM ;
@@ -120,7 +121,7 @@ int rpi_firmware_property_list(struct rpi_firmware *fw, ret = -EINVAL ; } -dma_free_coherent (fw->cl.dev,PAGE_ALIGN (size), buf, bus_addr); +dma_free_coherent (fw->chan->mbox->dev,PAGE_ALIGN (size), buf, bus_addr);return ret; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -0
@@ -816,6 +816,7 @@ static int dm_resume(void *handle)dc_stream_release (dm_new_crtc_state->stream); dm_new_crtc_state->stream =NULL ; } + dm_new_crtc_state->base.color_mgmt_changed = true; }for_each_new_plane_in_state (dm->cached_state, plane, new_plane_state, i) {
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c +5 -0
@@ -315,6 +315,11 @@ bool cm_helper_translate_curve_to_hw_format( i += increment) {if (j == hw_points -1 )break ; +if (i >=TRANSFER_FUNC_POINTS ) { +DC_LOG_ERROR ("Index out of bounds: i=%d, TRANSFER_FUNC_POINTS=%d\n" , + i,TRANSFER_FUNC_POINTS ); +return false; + } rgb_resulted[j].red = output_tf->tf_pts.red[i]; rgb_resulted[j].green = output_tf->tf_pts.green[i]; rgb_resulted[j].blue = output_tf->tf_pts.blue[i];
drivers/gpu/drm/arm/malidp_mw.c +4 -1
@@ -69,7 +69,10 @@ static void malidp_mw_connector_reset(struct drm_connector *connector)__drm_atomic_helper_connector_destroy_state (connector->state);kfree (connector->state); -__drm_atomic_helper_connector_reset (connector, &mw_state->base); + connector->state =NULL ; + +if (mw_state) +__drm_atomic_helper_connector_reset (connector, &mw_state->base); } static enum drm_connector_status
drivers/gpu/drm/mediatek/mtk_drm_gem.c +3 -0
@@ -26,6 +26,9 @@ static struct mtk_drm_gem_obj *mtk_drm_gem_init(struct drm_device *dev, size =round_up (size,PAGE_SIZE ); +if (size ==0 ) +return ERR_PTR (-EINVAL ); + mtk_gem_obj =kzalloc (sizeof (*mtk_gem_obj),GFP_KERNEL );if (!mtk_gem_obj)return ERR_PTR (-ENOMEM );
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c +1 -11
@@ -823,7 +823,6 @@ struct dpu_encoder_phys *dpu_encoder_phys_cmd_init( {struct dpu_encoder_phys *phys_enc =NULL ;struct dpu_encoder_phys_cmd *cmd_enc =NULL ; -struct dpu_hw_mdp *hw_mdp;struct dpu_encoder_irq *irq;int i, ret =0 ;
@@ -836,14 +835,7 @@ struct dpu_encoder_phys *dpu_encoder_phys_cmd_init( goto fail; } phys_enc = &cmd_enc->base; - - hw_mdp =dpu_rm_get_mdp (&p->dpu_kms->rm); -if (IS_ERR_OR_NULL (hw_mdp)) { - ret =PTR_ERR (hw_mdp); -DPU_ERROR ("failed to get mdptop\n" ); - goto fail_mdp_init; - } - phys_enc->hw_mdptop = hw_mdp; + phys_enc->hw_mdptop = p->dpu_kms->hw_mdp; phys_enc->intf_idx = p->intf_idx;dpu_encoder_phys_cmd_init_ops (&phys_enc->ops);
@@ -898,8 +890,6 @@ struct dpu_encoder_phys *dpu_encoder_phys_cmd_init(return phys_enc; -fail_mdp_init: -kfree (cmd_enc); fail:return ERR_PTR (ret); }
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c +1 -8
@@ -829,7 +829,6 @@ struct dpu_encoder_phys *dpu_encoder_phys_vid_init(struct dpu_encoder_phys *phys_enc =NULL ;struct dpu_encoder_phys_vid *vid_enc =NULL ;struct dpu_rm_hw_iter iter; -struct dpu_hw_mdp *hw_mdp;struct dpu_encoder_irq *irq;int i, ret =0 ;
@@ -846,13 +845,7 @@ struct dpu_encoder_phys *dpu_encoder_phys_vid_init( phys_enc = &vid_enc->base; - hw_mdp =dpu_rm_get_mdp (&p->dpu_kms->rm); -if (IS_ERR_OR_NULL (hw_mdp)) { - ret =PTR_ERR (hw_mdp); -DPU_ERROR ("failed to get mdptop\n" ); - goto fail; - } - phys_enc->hw_mdptop = hw_mdp; + phys_enc->hw_mdptop = p->dpu_kms->hw_mdp; phys_enc->intf_idx = p->intf_idx;/**
drivers/hwtracing/intel_th/pci.c +5 -0
@@ -250,6 +250,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa76f), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { +/* Meteor Lake-S CPU */ +PCI_DEVICE (PCI_VENDOR_ID_INTEL ,0xae24 ), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, {/* Raptor Lake-S */ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7a26),
drivers/hwtracing/stm/core.c +6 -5
@@ -701,8 +701,11 @@ int stm_register_device(struct device *parent, struct stm_data *stm_data,return -ENOMEM ; stm->major =register_chrdev (0 , stm_data->name, &stm_fops); -if (stm->major <0 ) - goto err_free; +if (stm->major <0 ) { + err = stm->major; +vfree (stm); +return err; + }device_initialize (&stm->dev); stm->dev.devt =MKDEV (stm->major,0 );
@@ -746,10 +749,8 @@ int stm_register_device(struct device *parent, struct stm_data *stm_data, err_device:unregister_chrdev (stm->major, stm_data->name); -/* matches device_initialize() above */ +/* calls stm_device_release() */ put_device (&stm->dev); -err_free: -vfree (stm);return err; }
drivers/infiniband/hw/hns/hns_roce_hem.h +6 -6
@@ -57,16 +57,16 @@ enum { (sizeof(struct scatterlist) + sizeof(void *)))#define check_whether_bt_num_3 (type, hop_num) \ - (type < HEM_TYPE_MTT && hop_num == 2) + ((type) < HEM_TYPE_MTT && (hop_num) == 2)#define check_whether_bt_num_2 (type, hop_num) \ - ((type < HEM_TYPE_MTT && hop_num == 1) || \ - (type >= HEM_TYPE_MTT && hop_num == 2)) + (((type) < HEM_TYPE_MTT && (hop_num) == 1) || \ + ((type) >= HEM_TYPE_MTT && (hop_num) == 2))#define check_whether_bt_num_1 (type, hop_num) \ - ((type < HEM_TYPE_MTT && hop_num == HNS_ROCE_HOP_NUM_0) || \ - (type >= HEM_TYPE_MTT && hop_num == 1) || \ - (type >= HEM_TYPE_MTT && hop_num == HNS_ROCE_HOP_NUM_0)) + (((type) < HEM_TYPE_MTT && (hop_num) == HNS_ROCE_HOP_NUM_0) || \ + ((type) >= HEM_TYPE_MTT && (hop_num) == 1) || \ + ((type) >= HEM_TYPE_MTT && (hop_num) == HNS_ROCE_HOP_NUM_0))enum {HNS_ROCE_HEM_PAGE_SHIFT =12 ,
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +6 -2
@@ -179,8 +179,12 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey) ppriv =ipoib_priv (pdev); -snprintf (intf_name,sizeof (intf_name),"%s.%04x" , - ppriv->dev->name, pkey); +/* If you increase IFNAMSIZ, update snprintf below +* to allow longer names. +*/ +BUILD_BUG_ON (IFNAMSIZ !=16 ); +snprintf (intf_name,sizeof (intf_name),"%.10s.%04x" , ppriv->dev->name, + pkey); priv =ipoib_intf_alloc (ppriv->ca, ppriv->port, intf_name);if (!priv) {
drivers/input/misc/ims-pcu.c +2 -2
@@ -47,8 +47,8 @@ struct ims_pcu_backlight {#define IMS_PCU_PART_NUMBER_LEN 15#define IMS_PCU_SERIAL_NUMBER_LEN 8#define IMS_PCU_DOM_LEN 8 -#define IMS_PCU_FW_VERSION_LEN (9 + 1) -#define IMS_PCU_BL_VERSION_LEN (9 + 1) +#define IMS_PCU_FW_VERSION_LEN 16 +#define IMS_PCU_BL_VERSION_LEN 16#define IMS_PCU_BL_RESET_REASON_LEN (2 + 1)#define IMS_PCU_PCU_B_DEVICE_ID 5
drivers/input/misc/pm8xxx-vibrator.c +4 -3
@@ -22,7 +22,8 @@#define VIB_MAX_LEVEL_mV (3100)#define VIB_MIN_LEVEL_mV (1200) -#define VIB_MAX_LEVELS (VIB_MAX_LEVEL_mV - VIB_MIN_LEVEL_mV) +#define VIB_PER_STEP_mV (100) +#define VIB_MAX_LEVELS (VIB_MAX_LEVEL_mV - VIB_MIN_LEVEL_mV + VIB_PER_STEP_mV)#define MAX_FF_SPEED 0xff
@@ -126,10 +127,10 @@ static void pm8xxx_work_handler(struct work_struct *work) vib->active = true; vib->level = ((VIB_MAX_LEVELS * vib->speed) /MAX_FF_SPEED ) + VIB_MIN_LEVEL_mV; - vib->level /=100 ; + vib->level /= VIB_PER_STEP_mV; }else { vib->active = false; - vib->level = VIB_MIN_LEVEL_mV /100 ; + vib->level = VIB_MIN_LEVEL_mV / VIB_PER_STEP_mV; }pm8xxx_vib_set (vib, vib->active);
drivers/irqchip/irq-alpine-msi.c +1 -1
@@ -165,7 +165,7 @@ static int alpine_msix_middle_domain_alloc(struct irq_domain *domain,return 0 ; err_sgi: -irq_domain_free_irqs_parent (domain, virq, i -1 ); +irq_domain_free_irqs_parent (domain, virq, i);alpine_msix_free_sgi (priv, sgi, nr_irqs);return err; }
drivers/macintosh/adb-iop.c +28 -20
124 lines not on this page · raw message
drivers/macintosh/via-macii.c +147 -181
476 lines not on this page · raw message
drivers/md/md-bitmap.c +3 -3
@@ -1358,7 +1358,7 @@ __acquires(bitmap->lock)sector_t chunk = offset >> bitmap->chunkshift;unsigned long page = chunk >>PAGE_COUNTER_SHIFT ;unsigned long pageoff = (chunk &PAGE_COUNTER_MASK ) <<COUNTER_BYTE_SHIFT ; -sector_t csize; +sector_t csize = ((sector_t )1 ) << bitmap->chunkshift;int err;if (page >= bitmap->pages) {
@@ -1367,6 +1367,7 @@ __acquires(bitmap->lock)* End-of-device while looking for a whole page or * user set a huge number to sysfs bitmap_set_bits. */ + *blocks = csize - (offset & (csize -1 ));return NULL ; } err =md_bitmap_checkpage (bitmap, page, create,0 );
@@ -1375,8 +1376,7 @@ __acquires(bitmap->lock) bitmap->bp[page].map == NULL) csize = ((sector_t )1 ) << (bitmap->chunkshift +PAGE_COUNTER_SHIFT ); - else - csize = ((sector_t )1 ) << bitmap->chunkshift; + *blocks = csize - (offset & (csize -1 ));if (err <0 )
drivers/md/raid5.c +3 -12
@@ -44,7 +44,6 @@*/ #include <linux/blkdev.h> -#include <linux/delay.h> #include <linux/kthread.h> #include <linux/raid/pq.h> #include <linux/async_tx.h>
@@ -6294,6 +6293,9 @@ static void raid5d(struct md_thread *thread)int batch_size, released;unsigned int offset; +if (test_bit (MD_SB_CHANGE_PENDING , &mddev->sb_flags)) +break ; + released =release_stripe_list (conf, conf->temp_inactive_list);if (released)clear_bit (R5_DID_ALLOC , &conf->cache_state);
@@ -6330,18 +6332,7 @@ static void raid5d(struct md_thread *thread)spin_unlock_irq (&conf->device_lock);md_check_recovery (mddev);spin_lock_irq (&conf->device_lock); - -/* -* Waiting on MD_SB_CHANGE_PENDING below may deadlock -* seeing md_check_recovery() is needed to clear -* the flag when using mdmon. -*/ -continue ; } - -wait_event_lock_irq (mddev->sb_wait, - !test_bit (MD_SB_CHANGE_PENDING , &mddev->sb_flags), - conf->device_lock); }pr_debug ("%d stripes handled\n" , handled);
drivers/media/cec/cec-adap.c +1 -2
@@ -863,8 +863,7 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,*/ mutex_unlock (&adap->lock);wait_for_completion_killable (&data->c); -if (!data->completed) -cancel_delayed_work_sync (&data->work); +cancel_delayed_work_sync (&data->work);mutex_lock (&adap->lock);/* Cancel the transmit if it was interrupted */
drivers/media/cec/cec-api.c +3 -0
@@ -660,6 +660,8 @@ static int cec_release(struct inode *inode, struct file *filp)list_del (&data->xfer_list); }mutex_unlock (&adap->lock); + +mutex_lock (&fh->lock);while (!list_empty (&fh->msgs)) {struct cec_msg_entry *entry = list_first_entry(&fh->msgs, struct cec_msg_entry, list);
@@ -677,6 +679,7 @@ static int cec_release(struct inode *inode, struct file *filp)kfree (entry); } } +mutex_unlock (&fh->lock);kfree (fh);cec_put_device (devnode);
drivers/media/dvb-frontends/mxl5xx.c +11 -11
@@ -1390,57 +1390,57 @@ static int config_ts(struct mxl *state, enum MXL_HYDRA_DEMOD_ID_E demod_id,u32 nco_count_min =0 ;u32 clk_type =0 ; -struct MXL_REG_FIELD_T xpt_sync_polarity[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_sync_polarity[MXL_HYDRA_DEMOD_MAX ] = { {0x90700010 ,8 ,1 }, {0x90700010 ,9 ,1 }, {0x90700010 ,10 ,1 }, {0x90700010 ,11 ,1 }, {0x90700010 ,12 ,1 }, {0x90700010 ,13 ,1 }, {0x90700010 ,14 ,1 }, {0x90700010 ,15 ,1 } }; -struct MXL_REG_FIELD_T xpt_clock_polarity[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_clock_polarity[MXL_HYDRA_DEMOD_MAX ] = { {0x90700010 ,16 ,1 }, {0x90700010 ,17 ,1 }, {0x90700010 ,18 ,1 }, {0x90700010 ,19 ,1 }, {0x90700010 ,20 ,1 }, {0x90700010 ,21 ,1 }, {0x90700010 ,22 ,1 }, {0x90700010 ,23 ,1 } }; -struct MXL_REG_FIELD_T xpt_valid_polarity[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_valid_polarity[MXL_HYDRA_DEMOD_MAX ] = { {0x90700014 ,0 ,1 }, {0x90700014 ,1 ,1 }, {0x90700014 ,2 ,1 }, {0x90700014 ,3 ,1 }, {0x90700014 ,4 ,1 }, {0x90700014 ,5 ,1 }, {0x90700014 ,6 ,1 }, {0x90700014 ,7 ,1 } }; -struct MXL_REG_FIELD_T xpt_ts_clock_phase[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_ts_clock_phase[MXL_HYDRA_DEMOD_MAX ] = { {0x90700018 ,0 ,3 }, {0x90700018 ,4 ,3 }, {0x90700018 ,8 ,3 }, {0x90700018 ,12 ,3 }, {0x90700018 ,16 ,3 }, {0x90700018 ,20 ,3 }, {0x90700018 ,24 ,3 }, {0x90700018 ,28 ,3 } }; -struct MXL_REG_FIELD_T xpt_lsb_first[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_lsb_first[MXL_HYDRA_DEMOD_MAX ] = { {0x9070000C ,16 ,1 }, {0x9070000C ,17 ,1 }, {0x9070000C ,18 ,1 }, {0x9070000C ,19 ,1 }, {0x9070000C ,20 ,1 }, {0x9070000C ,21 ,1 }, {0x9070000C ,22 ,1 }, {0x9070000C ,23 ,1 } }; -struct MXL_REG_FIELD_T xpt_sync_byte[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_sync_byte[MXL_HYDRA_DEMOD_MAX ] = { {0x90700010 ,0 ,1 }, {0x90700010 ,1 ,1 }, {0x90700010 ,2 ,1 }, {0x90700010 ,3 ,1 }, {0x90700010 ,4 ,1 }, {0x90700010 ,5 ,1 }, {0x90700010 ,6 ,1 }, {0x90700010 ,7 ,1 } }; -struct MXL_REG_FIELD_T xpt_enable_output[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_enable_output[MXL_HYDRA_DEMOD_MAX ] = { {0x9070000C ,0 ,1 }, {0x9070000C ,1 ,1 }, {0x9070000C ,2 ,1 }, {0x9070000C ,3 ,1 }, {0x9070000C ,4 ,1 }, {0x9070000C ,5 ,1 }, {0x9070000C ,6 ,1 }, {0x9070000C ,7 ,1 } }; -struct MXL_REG_FIELD_T xpt_err_replace_sync[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_err_replace_sync[MXL_HYDRA_DEMOD_MAX ] = { {0x9070000C ,24 ,1 }, {0x9070000C ,25 ,1 }, {0x9070000C ,26 ,1 }, {0x9070000C ,27 ,1 }, {0x9070000C ,28 ,1 }, {0x9070000C ,29 ,1 }, {0x9070000C ,30 ,1 }, {0x9070000C ,31 ,1 } }; -struct MXL_REG_FIELD_T xpt_err_replace_valid[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_err_replace_valid[MXL_HYDRA_DEMOD_MAX ] = { {0x90700014 ,8 ,1 }, {0x90700014 ,9 ,1 }, {0x90700014 ,10 ,1 }, {0x90700014 ,11 ,1 }, {0x90700014 ,12 ,1 }, {0x90700014 ,13 ,1 }, {0x90700014 ,14 ,1 }, {0x90700014 ,15 ,1 } }; -struct MXL_REG_FIELD_T xpt_continuous_clock[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_continuous_clock[MXL_HYDRA_DEMOD_MAX ] = { {0x907001D4 ,0 ,1 }, {0x907001D4 ,1 ,1 }, {0x907001D4 ,2 ,1 }, {0x907001D4 ,3 ,1 }, {0x907001D4 ,4 ,1 }, {0x907001D4 ,5 ,1 }, {0x907001D4 ,6 ,1 }, {0x907001D4 ,7 ,1 } }; -struct MXL_REG_FIELD_T xpt_nco_clock_rate[MXL_HYDRA_DEMOD_MAX ] = { +static const struct MXL_REG_FIELD_T xpt_nco_clock_rate[MXL_HYDRA_DEMOD_MAX ] = { {0x90700044 ,16 ,80 }, {0x90700044 ,16 ,81 }, {0x90700044 ,16 ,82 }, {0x90700044 ,16 ,83 }, {0x90700044 ,16 ,84 }, {0x90700044 ,16 ,85 },
drivers/media/pci/ngene/ngene-core.c +3 -1
@@ -1505,7 +1505,9 @@ static int init_channel(struct ngene_channel *chan) }if (dev->ci.en && (io &NGENE_IO_TSOUT )) { -dvb_ca_en50221_init (adapter, dev->ci.en,0 ,1 ); + ret =dvb_ca_en50221_init (adapter, dev->ci.en,0 ,1 ); +if (ret !=0 ) + goto err;set_transfer (chan,1 ); chan->dev->channel[2 ].DataFormatFlags =DF_SWAP32 ;set_transfer (&chan->dev->channel[2 ],1 );
drivers/media/radio/radio-shark2.c +1 -1
@@ -62,7 +62,7 @@ struct shark_device {#ifdef SHARK_USE_LEDS struct work_struct led_work;struct led_classdev leds[NO_LEDS ]; -char led_names[NO_LEDS ][32 ]; +char led_names[NO_LEDS ][64 ];atomic_t brightness[NO_LEDS ];unsigned long brightness_new;#endif
drivers/media/usb/stk1160/stk1160-video.c +15 -5
@@ -109,7 +109,7 @@ void stk1160_buffer_done(struct stk1160 *dev)static inline void stk1160_copy_video (struct stk1160 *dev,u8 *src,int len) { -int linesdone, lineoff, lencopy; +int linesdone, lineoff, lencopy, offset;int bytesperline = dev->width *2 ;struct stk1160_buffer *buf = dev->isoc_ctl.buf;u8 *dst = buf->mem;
@@ -149,8 +149,13 @@ void stk1160_copy_video(struct stk1160 *dev, u8 *src, int len)* Check if we have enough space left in the buffer. * In that case, we force loop exit after copy. */ -if (lencopy > buf->bytesused - buf->length) { - lencopy = buf->bytesused - buf->length; + offset = dst - (u8 *)buf->mem; +if (offset > buf->length) { +dev_warn_ratelimited (dev->dev,"out of bounds offset\n" ); +return ; + } +if (lencopy > buf->length - offset) { + lencopy = buf->length - offset; remain = lencopy; }
@@ -192,8 +197,13 @@ void stk1160_copy_video(struct stk1160 *dev, u8 *src, int len)* Check if we have enough space left in the buffer. * In that case, we force loop exit after copy. */ -if (lencopy > buf->bytesused - buf->length) { - lencopy = buf->bytesused - buf->length; + offset = dst - (u8 *)buf->mem; +if (offset > buf->length) { +dev_warn_ratelimited (dev->dev,"offset out of bounds\n" ); +return ; + } +if (lencopy > buf->length - offset) { + lencopy = buf->length - offset; remain = lencopy; }
drivers/media/v4l2-core/v4l2-dev.c +3 -0
@@ -980,8 +980,10 @@ int __video_register_device(struct video_device *vdev, vdev->dev.devt =MKDEV (VIDEO_MAJOR , vdev->minor); vdev->dev.parent = vdev->dev_parent;dev_set_name (&vdev->dev,"%s%d" , name_base, vdev->num); +mutex_lock (&videodev_lock); ret =device_register (&vdev->dev);if (ret <0 ) { +mutex_unlock (&videodev_lock);pr_err ("%s: device_register failed\n" , __func__); goto cleanup; }
@@ -1001,6 +1003,7 @@ int __video_register_device(struct video_device *vdev,/* Part 6: Activate this minor. The char device can now be used. */ set_bit (V4L2_FL_REGISTERED , &vdev->flags); +mutex_unlock (&videodev_lock);return 0 ;
drivers/mmc/core/host.c +1 -2
@@ -68,13 +68,12 @@ void mmc_retune_enable(struct mmc_host *host)/* * Pause re-tuning for a small set of operations. The pause begins after the -* next command and after first doing re-tuning. +* next command. */ void mmc_retune_pause (struct mmc_host *host) {if (!host->retune_paused) { host->retune_paused =1 ; -mmc_retune_needed (host);mmc_retune_hold (host); } }
drivers/mtd/nand/raw/nand_hynix.c +1 -1
@@ -414,7 +414,7 @@ static int hynix_nand_rr_init(struct nand_chip *chip)if (ret)pr_warn ("failed to initialize read-retry infrastructure" ); -return 0 ; +return ret; } static void hynix_nand_extract_oobsize(struct nand_chip *chip,
drivers/net/ethernet/cisco/enic/enic_main.c +12 -0
@@ -1152,18 +1152,30 @@ static int enic_set_vf_port(struct net_device *netdev, int vf, pp->request =nla_get_u8 (port[IFLA_PORT_REQUEST ]);if (port[IFLA_PORT_PROFILE ]) { +if (nla_len (port[IFLA_PORT_PROFILE ]) !=PORT_PROFILE_MAX ) { +memcpy (pp, &prev_pp,sizeof (*pp)); +return -EINVAL ; + } pp->set |=ENIC_SET_NAME ;memcpy (pp->name,nla_data (port[IFLA_PORT_PROFILE ]),PORT_PROFILE_MAX ); }if (port[IFLA_PORT_INSTANCE_UUID ]) { +if (nla_len (port[IFLA_PORT_INSTANCE_UUID ]) !=PORT_UUID_MAX ) { +memcpy (pp, &prev_pp,sizeof (*pp)); +return -EINVAL ; + } pp->set |=ENIC_SET_INSTANCE ;memcpy (pp->instance_uuid,nla_data (port[IFLA_PORT_INSTANCE_UUID ]),PORT_UUID_MAX ); }if (port[IFLA_PORT_HOST_UUID ]) { +if (nla_len (port[IFLA_PORT_HOST_UUID ]) !=PORT_UUID_MAX ) { +memcpy (pp, &prev_pp,sizeof (*pp)); +return -EINVAL ; + } pp->set |=ENIC_SET_HOST ;memcpy (pp->host_uuid,nla_data (port[IFLA_PORT_HOST_UUID ]),PORT_UUID_MAX );
drivers/net/ethernet/cortina/gemini.c +10 -2
@@ -1116,10 +1116,13 @@ static void gmac_tx_irq_enable(struct net_device *netdev, {struct gemini_ethernet_port *port =netdev_priv (netdev);struct gemini_ethernet *geth = port->geth; +unsigned long flags;u32 val, mask;netdev_dbg (netdev,"%s device %d\n" , __func__, netdev->dev_id); +spin_lock_irqsave (&geth->irq_lock, flags); + mask =GMAC0_IRQ0_TXQ0_INTS << (6 * netdev->dev_id + txq);if (en)
@@ -1128,6 +1131,8 @@ static void gmac_tx_irq_enable(struct net_device *netdev, val =readl (geth->base +GLOBAL_INTERRUPT_ENABLE_0_REG ); val = en ? val | mask : val & ~mask;writel (val, geth->base +GLOBAL_INTERRUPT_ENABLE_0_REG ); + +spin_unlock_irqrestore (&geth->irq_lock, flags); }static void gmac_tx_irq (struct net_device *netdev,unsigned int txq_num)
@@ -1436,15 +1441,19 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)union gmac_rxdesc_3 word3;struct page *page =NULL ;unsigned int page_offs; +unsigned long flags;unsigned short r, w;union dma_rwptr rw;dma_addr_t mapping;int frag_nr =0 ; +spin_lock_irqsave (&geth->irq_lock, flags); rw.bits32 =readl (ptr_reg);/* Reset interrupt as all packages until here are taken into account */ writel (DEFAULT_Q0_INT_BIT << netdev->dev_id, geth->base +GLOBAL_INTERRUPT_STATUS_1_REG ); +spin_unlock_irqrestore (&geth->irq_lock, flags); + r = rw.bits.rptr; w = rw.bits.wptr;
@@ -1747,10 +1756,9 @@ static irqreturn_t gmac_irq(int irq, void *data)gmac_update_hw_stats (netdev);if (val & (GMAC0_RX_OVERRUN_INT_BIT << (netdev->dev_id *8 ))) { +spin_lock (&geth->irq_lock);writel (GMAC0_RXDERR_INT_BIT << (netdev->dev_id *8 ), geth->base +GLOBAL_INTERRUPT_STATUS_4_REG ); - -spin_lock (&geth->irq_lock);u64_stats_update_begin (&port->ir_stats_syncp); ++port->stats.rx_fifo_errors;u64_stats_update_end (&port->ir_stats_syncp);
drivers/net/ethernet/freescale/fec_main.c +10 -0
@@ -3320,6 +3320,14 @@ static int fec_enet_init(struct net_device *ndev)return ret; } +static void fec_enet_deinit (struct net_device *ndev) +{ +struct fec_enet_private *fep =netdev_priv (ndev); + +netif_napi_del (&fep->napi); +fec_enet_free_queue (ndev); +} +#ifdef CONFIG_OF static int fec_reset_phy (struct platform_device *pdev) {
@@ -3687,6 +3695,7 @@ fec_probe(struct platform_device *pdev)fec_enet_mii_remove (fep); failed_mii_init: failed_irq: +fec_enet_deinit (ndev); failed_init:fec_ptp_stop (pdev); failed_reset:
@@ -3748,6 +3757,7 @@ fec_drv_remove(struct platform_device *pdev)pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev); +fec_enet_deinit (ndev);free_netdev (ndev);return 0 ; }
drivers/net/ethernet/freescale/fec_ptp.c +8 -6
@@ -108,14 +108,13 @@ static int fec_ptp_enable_pps(struct fec_enet_private *fep, uint enable)return -EINVAL ; } -if (fep->pps_enable == enable) -return 0 ; - - fep->pps_channel =DEFAULT_PPS_CHANNEL ; - fep->reload_period =PPS_OUPUT_RELOAD_PERIOD ; -spin_lock_irqsave (&fep->tmreg_lock, flags); +if (fep->pps_enable == enable) { +spin_unlock_irqrestore (&fep->tmreg_lock, flags); +return 0 ; + } +if (enable) {/* clear capture or output compare interrupt status if have. */
@@ -446,6 +445,9 @@ static int fec_ptp_enable(struct ptp_clock_info *ptp,int ret =0 ;if (rq->type ==PTP_CLK_REQ_PPS ) { + fep->pps_channel =DEFAULT_PPS_CHANNEL ; + fep->reload_period =PPS_OUPUT_RELOAD_PERIOD ; + ret =fec_ptp_enable_pps (fep, on);return ret;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -1
@@ -3476,7 +3476,7 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) stats->tx_dropped = sstats->tx_queue_dropped; } - stats->rx_dropped = priv->stats.qcnt.rx_out_of_buffer; + stats->rx_missed_errors = priv->stats.qcnt.rx_out_of_buffer; stats->rx_length_errors = PPORT_802_3_GET(pstats, a_in_range_length_errors) +
drivers/net/ethernet/qlogic/qed/qed_main.c +4 -5
@@ -1007,7 +1007,6 @@ static void qed_slowpath_task(struct work_struct *work)static int qed_slowpath_wq_start (struct qed_dev *cdev) {struct qed_hwfn *hwfn; -char name[NAME_SIZE ];int i;if (IS_VF (cdev))
@@ -1016,11 +1015,11 @@ static int qed_slowpath_wq_start(struct qed_dev *cdev)for_each_hwfn (cdev, i) { hwfn = &cdev->hwfns[i]; -snprintf (name,NAME_SIZE ,"slowpath-%02x:%02x.%02x" , - cdev->pdev->bus->number, -PCI_SLOT (cdev->pdev->devfn), hwfn->abs_pf_id); + hwfn->slowpath_wq =alloc_workqueue ("slowpath-%02x:%02x.%02x" , +0 ,0 , cdev->pdev->bus->number, +PCI_SLOT (cdev->pdev->devfn), + hwfn->abs_pf_id); - hwfn->slowpath_wq =alloc_workqueue (name,0 ,0 );if (!hwfn->slowpath_wq) {DP_NOTICE (hwfn,"Cannot create slowpath workqueue\n" );return -ENOMEM ;
drivers/net/ethernet/smsc/smc91x.h +2 -2
@@ -186,8 +186,8 @@ static inline void mcf_outsw(void *a, unsigned char *p, int l)writew (*wp++, a); } -#define SMC_inw (a, r) _swapw(readw((a) + (r))) -#define SMC_outw (lp, v, a, r) writew(_swapw(v), (a) + (r)) +#define SMC_inw (a, r) ioread16be((a) + (r)) +#define SMC_outw (lp, v, a, r) iowrite16be(v, (a) + (r))#define SMC_insw (a, r, p, l) mcf_insw(a + r, p, l)#define SMC_outsw (a, r, p, l) mcf_outsw(a + r, p, l)
drivers/net/ipvlan/ipvlan_core.c +2 -2
@@ -446,7 +446,7 @@ static noinline_for_stack int ipvlan_process_v4_outbound(struct sk_buff *skb)memset (IPCB (skb),0 ,sizeof (*IPCB (skb))); - err =ip_local_out (net, skb->sk, skb); + err =ip_local_out (net,NULL , skb);if (unlikely (net_xmit_eval (err)))DEV_STATS_INC (dev, tx_errors);else
@@ -501,7 +501,7 @@ static int ipvlan_process_v6_outbound(struct sk_buff *skb)memset (IP6CB (skb),0 ,sizeof (*IP6CB (skb))); - err =ip6_local_out (dev_net (dev), skb->sk, skb); + err =ip6_local_out (dev_net (dev),NULL , skb);if (unlikely (net_xmit_eval (err)))DEV_STATS_INC (dev, tx_errors);else
drivers/net/usb/qmi_wwan.c +3 -0
@@ -1326,6 +1326,9 @@ static const struct usb_device_id products[] = { {QMI_QUIRK_SET_DTR(0x1bc7, 0x1060, 2)}, /* Telit LN920 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1070, 2)}, /* Telit FN990 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1080, 2)}, /* Telit FE990 */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x10a0, 0)}, /* Telit FN920C04 */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x10a4, 0)}, /* Telit FN920C04 */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x10a9, 0)}, /* Telit FN920C04 */ {QMI_FIXED_INTF(0x1bc7, 0x1100, 3)}, /* Telit ME910 */ {QMI_FIXED_INTF(0x1bc7, 0x1101, 3)}, /* Telit ME910 dual modem */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */
drivers/net/usb/smsc95xx.c +59 -63
345 lines not on this page · raw message
drivers/net/usb/sr9700.c +3 -7
@@ -418,19 +418,15 @@ static int sr9700_rx_fixup(struct usbnet *dev, struct sk_buff *skb)skb_pull (skb,3 ); skb->len = len;skb_set_tail_pointer (skb, len); - skb->truesize = len +sizeof (struct sk_buff );return 2 ; } -/* skb_clone is used for address align */ - sr_skb =skb_clone (skb,GFP_ATOMIC ); + sr_skb =netdev_alloc_skb_ip_align (dev->net, len);if (!sr_skb)return 0 ; - sr_skb->len = len; - sr_skb->data = skb->data +3 ; -skb_set_tail_pointer (sr_skb, len); - sr_skb->truesize = len +sizeof (struct sk_buff ); +skb_put (sr_skb, len); +memcpy (sr_skb->data, skb->data +3 , len);usbnet_skb_return (dev, sr_skb);skb_pull (skb, len +SR_RX_OVERHEAD );
drivers/net/vxlan.c +0 -4
@@ -1320,10 +1320,6 @@ static bool vxlan_set_mac(struct vxlan_dev *vxlan,if (ether_addr_equal (eth_hdr (skb)->h_source, vxlan->dev->dev_addr))return false; -/* Ignore packets from invalid src-address */ -if (!is_valid_ether_addr (eth_hdr (skb)->h_source)) -return false; -/* Get address from the outer IP header */ if (vxlan_get_sk_family (vs) ==AF_INET ) { saddr.sin.sin_addr.s_addr =ip_hdr (skb)->saddr;
drivers/net/wireless/ath/ar5523/ar5523.c +14 -0
@@ -1590,6 +1590,20 @@ static int ar5523_probe(struct usb_interface *intf,struct ar5523 *ar;int error = -ENOMEM ; +static const u8 bulk_ep_addr[] = { +AR5523_CMD_TX_PIPE |USB_DIR_OUT , +AR5523_DATA_TX_PIPE |USB_DIR_OUT , +AR5523_CMD_RX_PIPE |USB_DIR_IN , +AR5523_DATA_RX_PIPE |USB_DIR_IN , +0 }; + +if (!usb_check_bulk_endpoints (intf, bulk_ep_addr)) { +dev_err (&dev->dev, +"Could not find all expected endpoints\n" ); + error = -ENODEV ; + goto out; + } +/* * Load firmware if the device requires it. This will return * -ENXIO on success and we'll get called back afer the usb
drivers/net/wireless/ath/ath10k/core.c +3 -0
@@ -540,6 +540,9 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .max_spatial_stream = 4, .fw = { .dir = WCN3990_HW_1_0_FW_DIR, + .board = WCN3990_HW_1_0_BOARD_DATA_FILE, + .board_size = WCN3990_BOARD_DATA_SZ, + .board_ext_size = WCN3990_BOARD_EXT_DATA_SZ, }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &wcn3990_ops,
drivers/net/wireless/ath/ath10k/debugfs_sta.c +1 -1
@@ -449,7 +449,7 @@ ath10k_dbg_sta_write_peer_debug_trigger(struct file *file, } out:mutex_unlock (&ar->conf_mutex); -return count; +return ret ?: count; }static const struct file_operations fops_peer_debug_trigger = {
drivers/net/wireless/ath/ath10k/hw.h +1 -0
@@ -133,6 +133,7 @@ enum qca9377_chip_id_rev {/* WCN3990 1.0 definitions */ #define WCN3990_HW_1_0_DEV_VERSION ATH10K_HW_WCN3990#define WCN3990_HW_1_0_FW_DIR ATH10K_FW_DIR "/WCN3990/hw1.0" +#define WCN3990_HW_1_0_BOARD_DATA_FILE "board.bin"#define ATH10K_FW_FILE_BASE "firmware"#define ATH10K_FW_API_MAX 6
drivers/net/wireless/ath/ath10k/targaddrs.h +3 -0
@@ -487,4 +487,7 @@ struct host_interest {#define QCA4019_BOARD_DATA_SZ 12064#define QCA4019_BOARD_EXT_DATA_SZ 0 +#define WCN3990_BOARD_DATA_SZ 26328 +#define WCN3990_BOARD_EXT_DATA_SZ 0 +#endif /* __TARGADDRS_H__ */
drivers/net/wireless/ath/ath10k/wmi.c +23 -3
@@ -1697,12 +1697,32 @@ void ath10k_wmi_put_wmi_channel(struct wmi_channel *ch,int ath10k_wmi_wait_for_service_ready (struct ath10k *ar) { -unsigned long time_left; +unsigned long time_left, i; time_left =wait_for_completion_timeout (&ar->wmi.service_ready,WMI_SERVICE_READY_TIMEOUT_HZ ); -if (!time_left) -return -ETIMEDOUT ; +if (!time_left) { +/* Sometimes the PCI HIF doesn't receive interrupt +* for the service ready message even if the buffer +* was completed. PCIe sniffer shows that it's +* because the corresponding CE ring doesn't fires +* it. Workaround here by polling CE rings once. +*/ +ath10k_warn (ar,"failed to receive service ready completion, polling..\n" ); + +for (i =0 ; i <CE_COUNT ; i++) +ath10k_hif_send_complete_check (ar, i,1 ); + + time_left =wait_for_completion_timeout (&ar->wmi.service_ready, +WMI_SERVICE_READY_TIMEOUT_HZ ); +if (!time_left) { +ath10k_warn (ar,"polling timed out\n" ); +return -ETIMEDOUT ; + } + +ath10k_warn (ar,"service ready completion received, continuing normally\n" ); + } +return 0 ; }
drivers/net/wireless/ath/carl9170/usb.c +32 -0
@@ -1069,6 +1069,38 @@ static int carl9170_usb_probe(struct usb_interface *intf, ar->usb_ep_cmd_is_bulk = true; } +/* Verify that all expected endpoints are present */ +if (ar->usb_ep_cmd_is_bulk) { +u8 bulk_ep_addr[] = { +AR9170_USB_EP_RX |USB_DIR_IN , +AR9170_USB_EP_TX |USB_DIR_OUT , +AR9170_USB_EP_CMD |USB_DIR_OUT , +0 }; +u8 int_ep_addr[] = { +AR9170_USB_EP_IRQ |USB_DIR_IN , +0 }; +if (!usb_check_bulk_endpoints (intf, bulk_ep_addr) || + !usb_check_int_endpoints (intf, int_ep_addr)) + err = -ENODEV ; + }else { +u8 bulk_ep_addr[] = { +AR9170_USB_EP_RX |USB_DIR_IN , +AR9170_USB_EP_TX |USB_DIR_OUT , +0 }; +u8 int_ep_addr[] = { +AR9170_USB_EP_IRQ |USB_DIR_IN , +AR9170_USB_EP_CMD |USB_DIR_OUT , +0 }; +if (!usb_check_bulk_endpoints (intf, bulk_ep_addr) || + !usb_check_int_endpoints (intf, int_ep_addr)) + err = -ENODEV ; + } + +if (err) { +carl9170_free (ar); +return err; + } +usb_set_intfdata (intf, ar);SET_IEEE80211_DEV (ar->hw, &intf->dev);
drivers/net/wireless/marvell/mwl8k.c +1 -1
@@ -2711,7 +2711,7 @@ __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti, cmd->action |=cpu_to_le16 (MWL8K_ENABLE_RX_MULTICAST ); cmd->numaddr =cpu_to_le16 (mc_count);netdev_hw_addr_list_for_each (ha, mc_list) { -memcpy (cmd->addr[i], ha->addr,ETH_ALEN ); +memcpy (cmd->addr[i++], ha->addr,ETH_ALEN ); } }
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +11 -15
@@ -36,6 +36,7 @@#include <linux/wireless.h> #include <linux/firmware.h> #include <linux/moduleparam.h> +#include <linux/bitfield.h> #include <net/mac80211.h> #include "rtl8xxxu.h" #include "rtl8xxxu_regs.h"
@@ -1396,13 +1397,13 @@ rtl8xxxu_gen1_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)u8 cck[RTL8723A_MAX_RF_PATHS ], ofdm[RTL8723A_MAX_RF_PATHS ];u8 ofdmbase[RTL8723A_MAX_RF_PATHS ], mcsbase[RTL8723A_MAX_RF_PATHS ];u32 val32, ofdm_a, ofdm_b, mcs_a, mcs_b; -u8 val8; +u8 val8, base;int group, i; group =rtl8xxxu_gen1_channel_to_group (channel); - cck[0 ] = priv->cck_tx_power_index_A[group] -1 ; - cck[1 ] = priv->cck_tx_power_index_B[group] -1 ; + cck[0 ] = priv->cck_tx_power_index_A[group]; + cck[1 ] = priv->cck_tx_power_index_B[group];if (priv->hi_pa) {if (cck[0 ] >0x20 )
@@ -1413,10 +1414,6 @@ rtl8xxxu_gen1_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40) ofdm[0 ] = priv->ht40_1s_tx_power_index_A[group]; ofdm[1 ] = priv->ht40_1s_tx_power_index_B[group]; -if (ofdm[0 ]) - ofdm[0 ] -=1 ; -if (ofdm[1 ]) - ofdm[1 ] -=1 ; ofdmbase[0 ] = ofdm[0 ] + priv->ofdm_tx_power_index_diff[group].a; ofdmbase[1 ] = ofdm[1 ] + priv->ofdm_tx_power_index_diff[group].b;
@@ -1505,20 +1502,19 @@ rtl8xxxu_gen1_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)rtl8xxxu_write32 (priv,REG_TX_AGC_A_MCS15_MCS12 , mcs_a + power_base->reg_0e1c); + val8 =u32_get_bits (mcs_a + power_base->reg_0e1c,0xff000000 );for (i =0 ; i <3 ; i++) { -if (i !=2 ) - val8 = (mcsbase[0 ] >8 ) ? (mcsbase[0 ] -8 ) :0 ; -else - val8 = (mcsbase[0 ] >6 ) ? (mcsbase[0 ] -6 ) :0 ; + base = i !=2 ?8 :6 ; + val8 =max_t (int, val8 - base,0 );rtl8xxxu_write8 (priv,REG_OFDM0_XC_TX_IQ_IMBALANCE + i, val8); } +rtl8xxxu_write32 (priv,REG_TX_AGC_B_MCS15_MCS12 , mcs_b + power_base->reg_0868); + val8 =u32_get_bits (mcs_b + power_base->reg_0868,0xff000000 );for (i =0 ; i <3 ; i++) { -if (i !=2 ) - val8 = (mcsbase[1 ] >8 ) ? (mcsbase[1 ] -8 ) :0 ; -else - val8 = (mcsbase[1 ] >6 ) ? (mcsbase[1 ] -6 ) :0 ; + base = i !=2 ?8 :6 ; + val8 =max_t (int, val8 - base,0 );rtl8xxxu_write8 (priv,REG_OFDM0_XD_TX_IQ_IMBALANCE + i, val8); } }
drivers/nvme/target/configfs.c +8 -0
@@ -464,10 +464,18 @@ static ssize_t nvmet_ns_enable_store(struct config_item *item,if (strtobool (page, &enable))return -EINVAL ; +/* +* take a global nvmet_config_sem because the disable routine has a +* window where it releases the subsys-lock, giving a chance to +* a parallel enable to concurrently execute causing the disable to +* have a misaccounting of the ns percpu_ref. +*/ +down_write (&nvmet_config_sem);if (enable) ret =nvmet_ns_enable (ns);else nvmet_ns_disable (ns); +up_write (&nvmet_config_sem);return ret ? ret : count; }
drivers/power/supply/cros_usbpd-charger.c +9 -2
@@ -5,6 +5,7 @@* Copyright (c) 2014 - 2018 Google, Inc */ +#include <linux/mod_devicetable.h> #include <linux/module.h> #include <linux/mfd/cros_ec.h> #include <linux/mfd/cros_ec_commands.h>
@@ -530,16 +531,22 @@ static int cros_usbpd_charger_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(cros_usbpd_charger_pm_ops, NULL, cros_usbpd_charger_resume); +static const struct platform_device_id cros_usbpd_charger_id[] = { + {DRV_NAME ,0 }, + {} +}; +MODULE_DEVICE_TABLE (platform, cros_usbpd_charger_id); +static struct platform_driver cros_usbpd_charger_driver = { .driver = { .name =DRV_NAME , .pm = &cros_usbpd_charger_pm_ops, }, - .probe = cros_usbpd_charger_probe + .probe = cros_usbpd_charger_probe, + .id_table = cros_usbpd_charger_id, };module_platform_driver (cros_usbpd_charger_driver);MODULE_LICENSE ("GPL" );MODULE_DESCRIPTION ("ChromeOS EC USBPD charger" ); -MODULE_ALIAS ("platform:" DRV_NAME );
drivers/s390/cio/trace.h +1 -1
@@ -50,7 +50,7 @@ DECLARE_EVENT_CLASS(s390_class_schib, __entry->devno = schib->pmcw.dev; __entry->schib = *schib; __entry->pmcw_ena = schib->pmcw.ena; - __entry->pmcw_st = schib->pmcw.ena; + __entry->pmcw_st = schib->pmcw.st; __entry->pmcw_dnv = schib->pmcw.dnv; __entry->pmcw_dev = schib->pmcw.dev; __entry->pmcw_lpm = schib->pmcw.lpm;
drivers/s390/crypto/ap_bus.c +1 -1
@@ -916,7 +916,7 @@ static int hex2bitmap(const char *str, unsigned long *bitmap, int bits)*/ static int modify_bitmap (const char *str,unsigned long *bitmap,int bits) { -int a, i, z; +unsigned long a, i, z;char *np, sign;/* bits needs to be a multiple of 8 */
drivers/scsi/bfa/bfad_debugfs.c +2 -2
@@ -258,7 +258,7 @@ bfad_debugfs_write_regrd(struct file *file, const char __user *buf,unsigned long flags;void *kern_buf; - kern_buf =memdup_user (buf, nbytes); + kern_buf =memdup_user_nul (buf, nbytes);if (IS_ERR (kern_buf))return PTR_ERR (kern_buf);
@@ -325,7 +325,7 @@ bfad_debugfs_write_regwr(struct file *file, const char __user *buf,unsigned long flags;void *kern_buf; - kern_buf =memdup_user (buf, nbytes); + kern_buf =memdup_user_nul (buf, nbytes);if (IS_ERR (kern_buf))return PTR_ERR (kern_buf);
drivers/scsi/hpsa.c +1 -1
@@ -5771,7 +5771,7 @@ static int hpsa_scsi_host_alloc(struct ctlr_info *h) {struct Scsi_Host *sh; - sh =scsi_host_alloc (&hpsa_driver_template,sizeof (struct ctlr_info )); + sh =scsi_host_alloc (&hpsa_driver_template,sizeof (struct ctlr_info *));if (sh ==NULL ) {dev_err (&h->pdev->dev,"scsi_host_alloc failed\n" );return -ENOMEM ;
drivers/scsi/libsas/sas_expander.c +1 -2
@@ -269,8 +269,7 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, void *rsp)/* help some expanders that fail to zero sas_address in the 'no * device' case */ -if (phy->attached_dev_type ==SAS_PHY_UNUSED || - phy->linkrate <SAS_LINK_RATE_1_5_GBPS ) +if (phy->attached_dev_type ==SAS_PHY_UNUSED )memset (phy->attached_sas_addr,0 ,SAS_ADDR_SIZE );else memcpy (phy->attached_sas_addr, dr->attached_sas_addr,SAS_ADDR_SIZE );
drivers/scsi/qedf/qedf_debugfs.c +1 -1
@@ -190,7 +190,7 @@ qedf_dbg_debug_cmd_write(struct file *filp, const char __user *buffer,if (!count || *ppos)return 0 ; - kern_buf =memdup_user (buffer, count); + kern_buf =memdup_user_nul (buffer, count);if (IS_ERR (kern_buf))return PTR_ERR (kern_buf);
drivers/scsi/ufs/ufs-qcom.h +6 -6
@@ -167,10 +167,10 @@ static inline void ufs_qcom_assert_reset(struct ufs_hba *hba) 1 << OFFSET_UFS_PHY_SOFT_RESET, REG_UFS_CFG1);/* -* Make sure assertion of ufs phy reset is written to -* register before returning +* Dummy read to ensure the write takes effect before doing any sort +* of delay */ -mb (); +ufshcd_readl (hba,REG_UFS_CFG1 ); }static inline void ufs_qcom_deassert_reset (struct ufs_hba *hba)
@@ -179,10 +179,10 @@ static inline void ufs_qcom_deassert_reset(struct ufs_hba *hba) 0 << OFFSET_UFS_PHY_SOFT_RESET, REG_UFS_CFG1);/* -* Make sure de-assertion of ufs phy reset is written to -* register before returning +* Dummy read to ensure the write takes effect before doing any sort +* of delay */ -mb (); +ufshcd_readl (hba,REG_UFS_CFG1 ); }struct ufs_qcom_bus_vote {
drivers/scsi/ufs/ufs.h +0 -30
@@ -519,36 +519,6 @@ struct utp_upiu_rsp { }; }; -/** -* struct utp_upiu_task_req - Task request UPIU structure -* @header - UPIU header structure DW0 to DW-2 -* @input_param1: Input parameter 1 DW-3 -* @input_param2: Input parameter 2 DW-4 -* @input_param3: Input parameter 3 DW-5 -* @reserved: Reserved double words DW-6 to DW-7 -*/ -struct utp_upiu_task_req { -struct utp_upiu_header header; -__be32 input_param1; -__be32 input_param2; -__be32 input_param3; -__be32 reserved[2 ]; -}; - -/** -* struct utp_upiu_task_rsp - Task Management Response UPIU structure -* @header: UPIU header structure DW0-DW-2 -* @output_param1: Ouput parameter 1 DW3 -* @output_param2: Output parameter 2 DW4 -* @reserved: Reserved double words DW-5 to DW-7 -*/ -struct utp_upiu_task_rsp { -struct utp_upiu_header header; -__be32 output_param1; -__be32 output_param2; -__be32 reserved[3 ]; -}; -/** * struct ufs_query_req - parameters for building a query request * @query_func: UPIU header query function
drivers/scsi/ufs/ufshcd.c +69 -116
115 lines not on this page · raw message
drivers/staging/greybus/arche-apb-ctrl.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/staging/greybus/arche-platform.c +1 -8
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/savage/savagefb_driver.c +4 -1
Lines of this file are not shown. View the raw message.
fs/nilfs2/segment.c +50 -13
63 lines not on this page · raw message
include/net/netfilter/nf_tables.h +54 -78
132 lines not on this page · raw message
include/uapi/linux/netfilter/nf_tables.h +1 -0
Lines of this file are not shown. View the raw message.
kernel/debug/kdb/kdb_io.c +56 -43
99 lines not on this page · raw message
net/ipv6/seg6_hmac.c +28 -14
42 lines not on this page · raw message
net/netfilter/nf_tables_api.c +450 -79
529 lines not on this page · raw message
net/netfilter/nft_set_hash.c +73 -38
111 lines not on this page · raw message
net/netfilter/nft_set_rbtree.c +316 -71
387 lines not on this page · raw message
tools/objtool/arch/x86/lib/x86-opcode-map.txt +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kcmp/kcmp_test.c +5 -3
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.