Linux 5.10.225
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.225 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/arm64/kernel/acpi_numa.c | 2 arch/arm64/kvm/hyp/entry.S | 6 arch/arm64/kvm/sys_regs.c | 6 arch/arm64/kvm/vgic/vgic.h | 7 arch/mips/kernel/cpu-probe.c | 4 arch/openrisc/kernel/setup.c | 6 arch/parisc/kernel/irq.c | 4 arch/powerpc/boot/simple_alloc.c | 7 arch/powerpc/sysdev/xics/icp-native.c | 2 arch/s390/include/asm/uv.h | 5 arch/s390/kernel/early.c | 12 arch/s390/kernel/smp.c | 4 arch/x86/kernel/process.c | 5 drivers/ata/libata-core.c | 3 drivers/atm/idt77252.c | 9 drivers/bluetooth/hci_ldisc.c | 3 drivers/dma/dw/core.c | 89 +++++ drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 5 drivers/gpu/drm/lima/lima_gp.c | 12 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 14 drivers/gpu/drm/msm/dp/dp_ctrl.c | 2 drivers/hid/hid-ids.h | 10 drivers/hid/hid-microsoft.c | 11 drivers/hid/wacom_wac.c | 4 drivers/i2c/busses/i2c-riic.c | 2 drivers/infiniband/hw/hfi1/chip.c | 5 drivers/infiniband/ulp/rtrs/rtrs.c | 2 drivers/input/input-mt.c | 3 drivers/input/serio/ioc3kbd.c | 6 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/md/dm-clone-metadata.c | 5 drivers/md/dm-ioctl.c | 22 + drivers/md/dm.c | 4 drivers/md/md.c | 5 drivers/md/persistent-data/dm-space-map-metadata.c | 4 drivers/media/pci/cx23885/cx23885-video.c | 8 drivers/media/pci/solo6x10/solo6x10-offsets.h | 10 drivers/media/platform/qcom/venus/pm_helpers.c | 2 drivers/media/radio/radio-isa.c | 2 drivers/media/usb/uvc/uvc_video.c | 10 drivers/memory/stm32-fmc2-ebi.c | 122 +++++-- drivers/mmc/core/mmc_test.c | 9 drivers/mmc/host/dw_mmc.c | 8 drivers/net/bonding/bond_main.c | 21 - drivers/net/bonding/bond_options.c | 2 drivers/net/dsa/mv88e6xxx/Makefile | 4 drivers/net/dsa/mv88e6xxx/global1_atu.c | 82 ++++- drivers/net/dsa/mv88e6xxx/trace.c | 6 drivers/net/dsa/mv88e6xxx/trace.h | 66 ++++ drivers/net/dsa/vitesse-vsc73xx-core.c | 69 +++- drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 4 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 4 drivers/net/ethernet/i825xx/sun3_82586.c | 2 drivers/net/ethernet/intel/ice/ice_txrx.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c | 2 drivers/net/ethernet/xilinx/xilinx_axienet.h | 17 - drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 25 - drivers/net/gtp.c | 5 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 2 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 32 +- drivers/net/wireless/st/cw1200/txrx.c | 2 drivers/nfc/pn533/pn533.c | 5 drivers/nvme/target/rdma.c | 16 - drivers/nvme/target/tcp.c | 1 drivers/nvme/target/trace.c | 6 drivers/nvme/target/trace.h | 28 + drivers/pinctrl/pinctrl-rockchip.c | 2 drivers/pinctrl/pinctrl-single.c | 2 drivers/s390/block/dasd.c | 36 +- drivers/s390/block/dasd_3990_erp.c | 10 drivers/s390/block/dasd_eckd.c | 55 +-- drivers/s390/block/dasd_int.h | 2 drivers/s390/cio/idset.c | 12 drivers/scsi/aacraid/comminit.c | 2 drivers/scsi/lpfc/lpfc_sli.c | 2 drivers/scsi/scsi_transport_spi.c | 4 drivers/soc/qcom/cmd-db.c | 2 drivers/soundwire/stream.c | 8 drivers/ssb/main.c | 2 drivers/staging/iio/resolver/ad2s1210.c | 7 drivers/staging/ks7010/ks7010_sdio.c | 4 drivers/thunderbolt/switch.c | 1 drivers/usb/class/cdc-acm.c | 3 drivers/usb/core/sysfs.c | 1 drivers/usb/dwc3/core.c | 21 + drivers/usb/dwc3/dwc3-omap.c | 4 drivers/usb/dwc3/dwc3-st.c | 16 - drivers/usb/gadget/udc/fsl_udc_core.c | 2 drivers/usb/host/xhci.c | 8 drivers/usb/serial/option.c | 5 fs/binfmt_elf.c | 5 fs/binfmt_elf_fdpic.c | 7 fs/binfmt_misc.c | 220 ++++++++++---- fs/btrfs/delayed-inode.c | 2 fs/btrfs/free-space-cache.c | 8 fs/btrfs/inode.c | 9 fs/btrfs/qgroup.c | 2 fs/btrfs/send.c | 7 fs/btrfs/tree-checker.c | 69 ++++ fs/ext4/extents.c | 3 fs/ext4/mballoc.c | 3 fs/f2fs/segment.c | 5 fs/file.c | 30 - fs/fuse/dev.c | 6 fs/fuse/virtio_fs.c | 10 fs/gfs2/inode.c | 2 fs/inode.c | 39 ++ fs/nfs/pnfs.c | 8 fs/overlayfs/file.c | 11 fs/quota/dquot.c | 5 include/linux/binfmts.h | 4 include/linux/bitmap.h | 20 + include/linux/blkdev.h | 2 include/linux/cpumask.h | 2 include/linux/fs.h | 5 include/net/busy_poll.h | 2 include/net/kcm.h | 1 include/uapi/linux/binfmts.h | 4 ipc/util.c | 16 - kernel/cgroup/cpuset.c | 13 kernel/time/hrtimer.c | 2 lib/math/prime_numbers.c | 2 mm/memcontrol.c | 7 net/bluetooth/bnep/core.c | 3 net/bluetooth/hci_core.c | 19 - net/bluetooth/mgmt.c | 4 net/bluetooth/smp.c | 144 ++++----- net/core/net-sysfs.c | 2 net/ethtool/ioctl.c | 3 net/ipv6/ip6_output.c | 2 net/ipv6/ip6_tunnel.c | 12 net/iucv/iucv.c | 3 net/kcm/kcmsock.c | 4 net/mac80211/agg-tx.c | 6 net/mac80211/driver-ops.c | 3 net/mac80211/sta_info.c | 14 net/mptcp/diag.c | 2 net/mptcp/protocol.c | 2 net/netfilter/nf_flow_table_offload.c | 2 net/netfilter/nft_counter.c | 5 net/netlink/af_netlink.c | 13 net/rds/recv.c | 13 net/sched/sch_netem.c | 47 +- net/sunrpc/svc_xprt.c | 2 security/apparmor/policy_unpack_test.c | 6 security/selinux/avc.c | 2 sound/core/timer.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/usb/quirks-table.h | 1 tools/include/linux/align.h | 12 tools/include/linux/bitmap.h | 9 tools/testing/selftests/core/close_range_test.c | 35 ++ tools/testing/selftests/tc-testing/tdc.py | 1 160 files changed, 1419 insertions(+), 593 deletions(-)
Abhinav Kumar (1):
drm/msm/dp: reset the link phy params before link training
Al Viro (2):
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE memcg_write_event_control(): fix a user-triggerable oops
Aleksandr Mishin (1):
nfc: pn533: Add poll mod list filling check
Alex Deucher (2):
drm/amdgpu/jpeg2: properly set atomics vmid field drm/amdkfd: don't allow mapping the MMIO HDP page with large pages
Alex Hung (2):
drm/amd/display: Validate hw_points_num before using it Revert "drm/amd/display: Validate hw_points_num before using it"
Alexander Gordeev (1):
s390/iucv: fix receive buffer virtual vs physical address confusion
Alexander Lobakin (4):
bitmap: introduce generic optimized bitmap_size() s390/cio: rename bitmap_size() -> idset_bitmap_size()
btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
tools: move alignment-related macros to new <linux/align.h>
Allison Henderson (1):
net:rds: Fix possible deadlock in rds_message_put
Andreas Gruenbacher (1):
gfs2: setattr_chown: Add missing initialization
Aurelien Jarno (1):
media: solo6x10: replace max(a, min(b, c)) by clamp(b, a, c)
Baokun Li (2):
ext4: do not trim the group with corrupted block bitmap
ext4: set the type of max_zeroout to unsigned int to avoid overflow
Bas Nieuwenhuizen (1):
drm/amdgpu: Actually check flags for all context ops.
Ben Hutchings (1):
scsi: aacraid: Fix double-free on probe failure
Ben Whitten (1):
mmc: dw_mmc: allow biu and ciu clocks to defer
Chen Ridong (1):
cgroup/cpuset: Prevent UAF in proc_cpuset_show()
Chengfeng Ye (2):
staging: ks7010: disable bh on tx_dev_lock
IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock
Christian Brauner (1):
binfmt_misc: cleanup on filesystem umount
Christophe Kerello (1):
memory: stm32-fmc2-ebi: check regmap_read return value
Claudio Imbrenda (1):
s390/uv: Panic for set and remove shared access UVC errors
Cong Wang (1):
gtp: fix a potential NULL pointer dereference
Cosmin Ratiu (1):
net/mlx5e: Correctly report errors for ethtool rx flows
Dan Carpenter (2):
atm: idt77252: prevent use after free in dequeue_rx()
mmc: mmc_test: Fix NULL dereference on allocation failure
Daniel Wagner (1):
nvmet-trace: avoid dereferencing pointer too early
David Lechner (1):
staging: iio: resolver: ad2s1210: fix use before initialization
David Sterba (4):
btrfs: change BUG_ON to assertion when checking for delayed_node root
btrfs: handle invalid root reference found in may_destroy_subvol()
btrfs: send: handle unexpected data in header buffer in begin_cmd()
btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()
Dmitry Baryshkov (1):
drm/msm/dpu: don't play tricks with debug macros
Donald Hunter (1):
netfilter: flowtable: initialise extack before use
Eric Dumazet (4):
netlink: hold nlk->cb_mutex longer in __netlink_dump_start()
gtp: pull network headers in gtp_dev_xmit()
ipv6: prevent UAF in ip6_send_skb()
net: busy-poll: use ktime_get_ns() instead of local_clock()
Erico Nunes (1):
drm/lima: set gp bus_stop bit before hard reset
Eugene Syromiatnikov (1):
mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size
Greg Kroah-Hartman (2):
Revert "Input: ioc3kbd - convert to platform remove callback returning void" Linux 5.10.225
Griffin Kroah-Hartman (1):
Bluetooth: MGMT: Add error handling to pair_device()
Guanrui Huang (1):
irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
Guenter Roeck (1):
apparmor: fix policy_unpack_test on big endian systems
Haibo Xu (1):
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE
Hannes Reinecke (1):
nvmet-tcp: do not continue for invalid icreq
Hans J. Schultz (1):
net: dsa: mv88e6xxx: read FID when handling ATU violations
Hans Verkuil (3):
media: radio-isa: use dev_name to fill in bus_info
media: qcom: venus: fix incorrect return value
media: pci: cx23885: check cx23885_vdev_init() return
Heiko Carstens (1):
s390/smp,mcck: fix early IPI handling
Helge Deller (1):
parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367
Huang-Huang Bao (1):
pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins
Ian Ray (1):
cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller
Jamie Bainbridge (1):
ethtool: check device is present when getting link settings
Jan Kara (1):
quota: Remove BUG_ON from dqget()
Jann Horn (1):
fuse: Initialize beyond-EOF page contents before setting uptodate
Jason Gerecke (1):
HID: wacom: Defer calculation of resolution until resolution_code is known
Jeff Johnson (1):
wifi: cw1200: Avoid processing an invalid TIM IE
Jesse Zhang (1):
drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc
Jian Shen (1):
net: hns3: add checking for vf id of mailbox
Jiaxun Yang (1):
MIPS: Loongson64: Set timer mode in cpu-probe
Jie Wang (2):
net: hns3: fix wrong use of semaphore up
net: hns3: fix a deadlock problem when config TC during resetting
Johannes Berg (1):
wifi: mac80211: fix BA session teardown race
Joseph Huang (1):
net: dsa: mv88e6xxx: Fix out-of-bound access
Juan José Arboleda (1):
ALSA: usb-audio: Support Yamaha P-125 quirk entry
Justin Tee (1):
scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()
Kees Cook (2):
net/sun3_82586: Avoid reading past buffer in debug output
x86: Increase brk randomness entropy for 64-bit systems
Khazhismel Kumykov (1):
dm resume: don't return EINVAL when signalled
Krishna Kurapati (1):
usb: dwc3: core: Skip setting event buffers for host only controllers
Krzysztof Kozlowski (4):
soundwire: stream: fix programming slave ports for non-continous port maps
usb: dwc3: omap: add missing depopulate in probe error path
usb: dwc3: st: fix probed platform device ref count on probe error path
usb: dwc3: st: add missing depopulate in probe error path
Kuniyuki Iwashima (2):
kcm: Serialise kcm_sendmsg() for the same socket.
nfsd: Don't call freezable_schedule_timeout() after each successful page allocation in svc_alloc_arg().
Kunwu Chan (1):
powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu
Laurent Vivier (1):
binfmt_misc: pass binfmt_misc flags to the interpreter
Lee, Chun-Yi (1):
Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO
Li Nan (1):
md: clean up invalid BUG_ON in md_ioctl
Li zeming (1):
powerpc/boot: Handle allocation failure in simple_realloc()
Luiz Augusto von Dentz (3):
Bluetooth: bnep: Fix out-of-bound access
Bluetooth: hci_core: Fix LE quote calculation
Bluetooth: SMP: Fix assumption of Central always being Initiator
Ma Ke (1):
pinctrl: single: fix potential NULL dereference in pcs_get_function()
Maciej Fijalkowski (1):
ice: fix ICE_LAST_OFFSET formula
Marc Zyngier (1):
KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3
Mathias Nyman (1):
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration
Matthieu Baerts (NGI0) (1):
mptcp: sched: check both backup in retrans
Max Filippov (1):
fs: binfmt_elf_efpic: don't use missing interpreter's properties
Michael Ellerman (1):
powerpc/boot: Only free if realloc() succeeds
Mika Westerberg (1):
thunderbolt: Mark XDomain as unplugged when router is removed
Mike Christie (1):
scsi: spi: Fix sshdr use
Miklos Szeredi (1):
ovl: do not fail because of O_NOATIME
Mikulas Patocka (2):
dm persistent data: fix memory allocation failure dm suspend: return -ERESTARTSYS instead of -EINTR
Miri Korenblit (1):
wifi: iwlwifi: abort scan when rfkill on but device enabled
NeilBrown (1):
NFS: avoid infinite loop in pnfs_update_layout.
Niklas Cassel (1):
ata: libata-core: Fix null pointer dereference on error
Nikolay Aleksandrov (4):
bonding: fix bond_ipsec_offload_ok return type
bonding: fix null pointer deref in bond_ipsec_offload_ok
bonding: fix xfrm real_dev null pointer dereference
bonding: fix xfrm state handling when clearing active slave
Nikolay Kuratov (1):
cxgb4: add forgotten u64 ivlan cast before shift
Oreoluwa Babatunde (1):
openrisc: Call setup_memory() earlier in the init sequence
Parsa Poorshikhian (1):
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7
Pawel Dembicki (3):
net: dsa: vsc73xx: pass value in phy_write operation
net: dsa: vsc73xx: use read_poll_timeout instead delay loop
net: dsa: vsc73xx: check busy flag in MDIO operations
Phil Chang (1):
hrtimer: Prevent queuing of hrtimer without a function callback
Qu Wenruo (1):
btrfs: tree-checker: add dev extent item checks
Radhey Shyam Pandey (1):
net: axienet: Fix register defines comment description
Rafael Aquini (1):
ipc: replace costly bailout check in sysvipc_find_ipc()
Rand Deeb (1):
ssb: Fix division by zero issue in ssb_calc_clock_rate
Ricardo Ribalda (1):
media: uvcvideo: Fix integer overflow calculating timestamp
Sagi Grimberg (1):
nvmet-rdma: fix possible bad dereference when freeing rsps
Sami Tolvanen (1):
KVM: arm64: Don't use cbz/adr with external symbols
Sascha Hauer (1):
wifi: mwifiex: duplicate static structs used in driver instances
Sean Anderson (2):
net: xilinx: axienet: Always disable promiscuous mode
net: xilinx: axienet: Fix dangling multicast addresses
Sebastian Andrzej Siewior (1):
netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
Selvarasu Ganesan (1):
usb: dwc3: core: Prevent USB core invalid event buffer address access
Serge Semin (2):
dmaengine: dw: Add peripheral bus width verification
dmaengine: dw: Add memory bus width verification
Siarhei Vishniakou (1):
HID: microsoft: Add rumble support to latest xbox controllers
Simon Horman (1):
tc-testing: don't access non-existent variable on exception
Stefan Haberland (1):
s390/dasd: fix error recovery leading to data corruption on ESE devices
Stefan Hajnoczi (1):
virtiofs: forbid newlines in tags
Stephen Hemminger (1):
netem: fix return value if duplicate enqueue fails
Takashi Iwai (1):
ALSA: timer: Relax start tick time check for slave timer elements
Tetsuo Handa (2):
block: use "unsigned long" for blk_validate_block_size().
Input: MT - limit max slots
Thomas Bogendoerfer (1):
ip6_tunnel: Fix broken GRO
Uwe Kleine-König (1):
usb: gadget: fsl: Increase size of name buffer for endpoints
Vladimir Oltean (1):
net: dsa: mv88e6xxx: replace ATU violation prints with trace points
Volodymyr Babchuk (1):
soc: qcom: cmd-db: Map shared memory as WC, not WB
Wolfram Sang (1):
i2c: riic: avoid potential division by zero
ZHANG Yuntian (1):
USB: serial: option: add MeiG Smart SRM825L
Zhen Lei (1):
selinux: fix potential counting error in avc_add_xperms_decision()
Zhiguo Niu (1):
f2fs: fix to do sanity check in update_sit_entry
Zhihao Cheng (1):
vfs: Don't evict inode under the inode lru traversing context
Zhu Yanjun (1):
RDMA/rtrs: Fix the problem of variable not initialized fully
Zijun Hu (1):
usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 224 +SUBLEVEL = 225 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/kernel/acpi_numa.c +1 -1
@@ -27,7 +27,7 @@#include <asm/numa.h> -static int acpi_early_node_map[NR_CPUS ]__initdata = {NUMA_NO_NODE }; +static int acpi_early_node_map[NR_CPUS ]__initdata = { [0 ...NR_CPUS -1 ] =NUMA_NO_NODE };int __init acpi_numa_get_nid (unsigned int cpu) {
arch/arm64/kvm/hyp/entry.S +4 -2
@@ -85,8 +85,10 @@ SYM_INNER_LABEL(__guest_exit_panic, SYM_L_GLOBAL) // If the hyp context is loaded, go straight to hyp_panic get_loaded_vcpu x0, x1 - cbz x0, hyp_panic + cbnz x0, 1f + b hyp_panic +1: // The hyp context is saved so make sure it is restored to allow // hyp_panic to run at hyp and, subsequently, panic to run in the host. // This makes use of __guest_exit to avoid duplication but sets the
@@ -94,7 +96,7 @@ SYM_INNER_LABEL(__guest_exit_panic, SYM_L_GLOBAL) // current state is saved to the guest context but it will only be // accurate if the guest had been completely restored. adr_this_cpu x0, kvm_hyp_ctxt, x1 - adr x1, hyp_panic + adr_l x1, hyp_panic str x1, [x0, #CPU_XREG_OFFSET(30)] get_vcpu_ptr x1, x0
arch/arm64/kvm/sys_regs.c +6 -0
@@ -30,6 +30,7 @@#include <trace/events/kvm.h> #include "sys_regs.h" +#include "vgic/vgic.h" #include "trace.h"
@@ -275,6 +276,11 @@ static bool access_gic_sgi(struct kvm_vcpu *vcpu, {bool g1; +if (!kvm_has_gicv3 (vcpu->kvm)) { +kvm_inject_undefined (vcpu); +return false; + } +if (!p->is_write)return read_from_write_only (vcpu, p, r);
arch/arm64/kvm/vgic/vgic.h +7 -0
@@ -318,4 +318,11 @@ int vgic_v4_init(struct kvm *kvm);void vgic_v4_teardown (struct kvm *kvm);void vgic_v4_configure_vsgis (struct kvm *kvm); +static inline bool kvm_has_gicv3 (struct kvm *kvm) +{ +return (static_branch_unlikely (&kvm_vgic_global_state.gicv3_cpuif) && +irqchip_in_kernel (kvm) && + kvm->arch.vgic.vgic_model ==KVM_DEV_TYPE_ARM_VGIC_V3 ); +} +#endif
arch/mips/kernel/cpu-probe.c +4 -0
@@ -1769,12 +1769,16 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu) c->ases |= (MIPS_ASE_LOONGSON_MMI |MIPS_ASE_LOONGSON_CAM |MIPS_ASE_LOONGSON_EXT |MIPS_ASE_LOONGSON_EXT2 ); c->ases &= ~MIPS_ASE_VZ ;/* VZ of Loongson-3A2000/3000 is incomplete */ +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;case PRID_IMP_LOONGSON_64G : __cpu_name[cpu] ="ICT Loongson-3" ;set_elf_platform (cpu,"loongson3a" );set_isa (c,MIPS_CPU_ISA_M64R2 );decode_cpucfg (c); +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;default :panic ("Unknown Loongson Processor ID!" );
arch/openrisc/kernel/setup.c +3 -3
@@ -284,6 +284,9 @@ void calibrate_delay(void)void __init setup_arch (char **cmdline_p) { +/* setup memblock allocator */ +setup_memory (); +unflatten_and_copy_device_tree ();setup_cpuinfo ();
@@ -310,9 +313,6 @@ void __init setup_arch(char **cmdline_p) }#endif -/* setup memblock allocator */ -setup_memory (); -/* paging_init() sets up the MMU and marks all pages as reserved */ paging_init ();
arch/parisc/kernel/irq.c +2 -2
@@ -520,7 +520,7 @@ void do_cpu_irq_mask(struct pt_regs *regs) old_regs =set_irq_regs (regs);local_irq_disable (); -irq_enter (); +irq_enter_rcu (); eirr_val =mfctl (23 ) & cpu_eiem &per_cpu (local_ack_eiem, cpu);if (!eirr_val)
@@ -555,7 +555,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)#endif /* CONFIG_IRQSTACKS */ out: -irq_exit (); +irq_exit_rcu ();set_irq_regs (old_regs);return ;
arch/powerpc/boot/simple_alloc.c +5 -2
@@ -114,8 +114,11 @@ static void *simple_realloc(void *ptr, unsigned long size)return ptr; new =simple_malloc (size); -memcpy (new, ptr, p->size); -simple_free (ptr); +if (new) { +memcpy (new, ptr, p->size); +simple_free (ptr); + } +return new; }
arch/powerpc/sysdev/xics/icp-native.c +2 -0
@@ -235,6 +235,8 @@ static int __init icp_native_map_one_cpu(int hw_id, unsigned long addr, rname =kasprintf (GFP_KERNEL ,"CPU %d [0x%x] Interrupt Presentation" , cpu, hw_id); +if (!rname) +return -ENOMEM ;if (!request_mem_region (addr, size, rname)) {pr_warn ("icp_native: Could not reserve ICP MMIO for CPU %d, interrupt server #0x%x\n" , cpu, hw_id);
arch/s390/include/asm/uv.h +4 -1
@@ -312,7 +312,10 @@ static inline int share(unsigned long addr, u16 cmd)if (!uv_call (0 , (u64)&uvcb))return 0 ; -return -EINVAL ; +pr_err ("%s UVC failed (rc: 0x%x, rrc: 0x%x), possible hypervisor bug.\n" , + uvcb.header.cmd ==UVC_CMD_SET_SHARED_ACCESS ?"Share" :"Unshare" , + uvcb.header.rc, uvcb.header.rrc); +panic ("System security cannot be guaranteed unless the system panics now.\n" ); }/*
arch/s390/kernel/early.c +3 -9
@@ -252,15 +252,9 @@ static inline void save_vector_registers(void)#endif } -static inline void setup_control_registers (void ) +static inline void setup_low_address_protection (void ) { -unsigned long reg; - -__ctl_store (reg,0 ,0 ); - reg |=CR0_LOW_ADDRESS_PROTECTION ; - reg |=CR0_EMERGENCY_SIGNAL_SUBMASK ; - reg |=CR0_EXTERNAL_CALL_SUBMASK ; -__ctl_load (reg,0 ,0 ); +__ctl_set_bit (0 ,28 ); }static inline void setup_access_registers (void )
@@ -313,7 +307,7 @@ void __init startup_init(void)save_vector_registers ();setup_topology ();sclp_early_detect (); -setup_control_registers (); +setup_low_address_protection ();setup_access_registers ();lockdep_on (); }
arch/s390/kernel/smp.c +2 -2
@@ -982,12 +982,12 @@ void __init smp_fill_possible_mask(void)void __init smp_prepare_cpus (unsigned int max_cpus) { -/* request the 0x1201 emergency signal external interrupt */ if (register_external_irq (EXT_IRQ_EMERGENCY_SIG , do_ext_call_interrupt))panic ("Couldn't request external interrupt 0x1201" ); -/* request the 0x1202 external call external interrupt */ +ctl_set_bit (0 ,14 );if (register_external_irq (EXT_IRQ_EXTERNAL_CALL , do_ext_call_interrupt))panic ("Couldn't request external interrupt 0x1202" ); +ctl_set_bit (0 ,13 ); }void __init smp_prepare_boot_cpu (void )
arch/x86/kernel/process.c +4 -1
@@ -926,7 +926,10 @@ unsigned long arch_align_stack(unsigned long sp)unsigned long arch_randomize_brk (struct mm_struct *mm) { -return randomize_page (mm->brk,0x02000000 ); +if (mmap_is_ia32 ()) +return randomize_page (mm->brk,SZ_32M ); + +return randomize_page (mm->brk,SZ_1G ); }/*
drivers/ata/libata-core.c +3 -0
@@ -5366,6 +5366,9 @@ static void ata_host_release(struct kref *kref)for (i =0 ; i < host->n_ports; i++) {struct ata_port *ap = host->ports[i]; +if (!ap) +continue ; +kfree (ap->pmp_link);kfree (ap->slave_link);kfree (ap);
drivers/atm/idt77252.c +5 -4
@@ -1118,8 +1118,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe) rpp->len += skb->len;if (stat &SAR_RSQE_EPDU ) { +unsigned int len, truesize;unsigned char *l1l2; -unsigned int len; l1l2 = (unsigned char *) ((unsigned long ) skb->data + skb->len -6 );
@@ -1189,14 +1189,15 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)ATM_SKB (skb)->vcc = vcc;__net_timestamp (skb); + truesize = skb->truesize; vcc->push (vcc, skb);atomic_inc (&vcc->stats->rx); -if (skb->truesize >SAR_FB_SIZE_3 ) +if (truesize >SAR_FB_SIZE_3 )add_rx_skb (card,3 ,SAR_FB_SIZE_3 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_2 ) +else if (truesize >SAR_FB_SIZE_2 )add_rx_skb (card,2 ,SAR_FB_SIZE_2 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_1 ) +else if (truesize >SAR_FB_SIZE_1 )add_rx_skb (card,1 ,SAR_FB_SIZE_1 ,1 );else add_rx_skb (card,0 ,SAR_FB_SIZE_0 ,1 );
drivers/bluetooth/hci_ldisc.c +2 -1
@@ -768,7 +768,8 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file *file,break ;case HCIUARTGETPROTO : -if (test_bit (HCI_UART_PROTO_SET , &hu->flags)) +if (test_bit (HCI_UART_PROTO_SET , &hu->flags) && +test_bit (HCI_UART_PROTO_READY , &hu->flags)) err = hu->proto->id;else err = -EUNATCH ;
drivers/dma/dw/core.c +82 -7
131 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +8 -0
@@ -386,16 +386,24 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,switch (args->in.op) {case AMDGPU_CTX_OP_ALLOC_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_alloc (adev, fpriv, filp, priority, &id); args->out.alloc.ctx_id = id;break ;case AMDGPU_CTX_OP_FREE_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_free (fpriv, id);break ;case AMDGPU_CTX_OP_QUERY_STATE : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query (adev, fpriv, id, &args->out);break ;case AMDGPU_CTX_OP_QUERY_STATE2 : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query2 (adev, fpriv, id, &args->out);break ;default :
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +2 -1
@@ -725,7 +725,8 @@ int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx)uint32_t created =0 ;uint32_t allocated =0 ;uint32_t tmp, handle =0 ; -uint32_t *size = &tmp; +uint32_t dummy =0xffffffff ; +uint32_t *size = &dummy;unsigned idx;int i, r =0 ;
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -2
@@ -553,11 +553,11 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 ));
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +4 -1
@@ -1311,7 +1311,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, goto err_unlock; } offset =amdgpu_amdkfd_get_mmio_remap_phys_addr (dev->kgd); -if (!offset) { +if (!offset || (PAGE_SIZE >4096 )) { err = -ENOMEM ; goto err_unlock; }
@@ -1969,6 +1969,9 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,if (vma->vm_end - vma->vm_start !=PAGE_SIZE )return -EINVAL ; +if (PAGE_SIZE >4096 ) +return -EINVAL ; + address =amdgpu_amdkfd_get_mmio_remap_phys_addr (dev->kgd); vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
drivers/gpu/drm/lima/lima_gp.c +12 -0
@@ -166,6 +166,11 @@ static void lima_gp_task_run(struct lima_sched_pipe *pipe,gp_write (LIMA_GP_CMD , cmd); } +static int lima_gp_bus_stop_poll (struct lima_ip *ip) +{ +return !!(gp_read (LIMA_GP_STATUS ) &LIMA_GP_STATUS_BUS_STOPPED ); +} +static int lima_gp_hard_reset_poll (struct lima_ip *ip) {gp_write (LIMA_GP_PERF_CNT_0_LIMIT ,0xC01A0000 );
@@ -179,6 +184,13 @@ static int lima_gp_hard_reset(struct lima_ip *ip)gp_write (LIMA_GP_PERF_CNT_0_LIMIT ,0xC0FFE000 );gp_write (LIMA_GP_INT_MASK ,0 ); + +gp_write (LIMA_GP_CMD ,LIMA_GP_CMD_STOP_BUS ); + ret =lima_poll_timeout (ip, lima_gp_bus_stop_poll,10 ,100 ); +if (ret) { +dev_err (dev->dev,"%s bus stop timeout\n" ,lima_ip_name (ip)); +return ret; + }gp_write (LIMA_GP_CMD ,LIMA_GP_CMD_RESET ); ret =lima_poll_timeout (ip, lima_gp_hard_reset_poll,10 ,100 );if (ret) {
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +2 -12
@@ -32,24 +32,14 @@* @fmt: Pointer to format string */ #define DPU_DEBUG (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_KMS)) \ - DRM_DEBUG(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)/** * DPU_DEBUG_DRIVER - macro for hardware driver logging * @fmt: Pointer to format string */ #define DPU_DEBUG_DRIVER (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_DRIVER)) \ - DRM_ERROR(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)#define DPU_ERROR (fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__)#define DPU_ERROR_RATELIMITED (fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__)
drivers/gpu/drm/msm/dp/dp_ctrl.c +2 -0
@@ -1246,6 +1246,8 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl, link_info.rate = ctrl->link->link_params.rate; link_info.capabilities =DP_LINK_CAP_ENHANCED_FRAMING ; +dp_link_reset_phy_params_vx_px (ctrl->link); +dp_aux_link_configure (ctrl->aux, &link_info);drm_dp_dpcd_write (ctrl->aux,DP_MAIN_LINK_CHANNEL_CODING_SET , &encoding,1 );
drivers/hid/hid-ids.h +9 -1
@@ -875,7 +875,15 @@#define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9#define USB_DEVICE_ID_MS_POWER_COVER 0x07da#define USB_DEVICE_ID_MS_SURFACE3_COVER 0x07de -#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd +/* +* For a description of the Xbox controller models, refer to: +* https://en.wikipedia.org/wiki/Xbox_Wireless_Controller#Summary +*/ +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708 0x02fd +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE 0x0b20 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914 0x0b13 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797 0x0b05 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE 0x0b22#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0#define USB_DEVICE_ID_MS_MOUSE_0783 0x0783
drivers/hid/hid-microsoft.c +10 -1
@@ -446,7 +446,16 @@ static const struct hid_device_id ms_devices[] = { .driver_data = MS_PRESENTER }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, 0x091B), .driver_data = MS_SURFACE_DIAL }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER), + + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE), .driver_data = MS_QUIRK_FF }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS), .driver_data = MS_QUIRK_FF },
drivers/hid/wacom_wac.c +3 -1
@@ -1920,12 +1920,14 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,int fmax = field->logical_maximum;unsigned int equivalent_usage =wacom_equivalent_usage (usage->hid);int resolution_code = code; -int resolution =hidinput_calc_abs_res (field, resolution_code); +int resolution;if (equivalent_usage ==HID_DG_TWIST ) { resolution_code =ABS_RZ ; } + resolution =hidinput_calc_abs_res (field, resolution_code); +if (equivalent_usage ==HID_GD_X ) { fmin += features->offset_left; fmax -= features->offset_right;
drivers/i2c/busses/i2c-riic.c +1 -1
@@ -312,7 +312,7 @@ static int riic_init_hw(struct riic_dev *riic, struct i2c_timings *t)* frequency with only 62 clock ticks max (31 high, 31 low). * Aim for a duty of 60% LOW, 40% HIGH. */ - total_ticks =DIV_ROUND_UP (rate, t->bus_freq_hz); + total_ticks =DIV_ROUND_UP (rate, t->bus_freq_hz ?:1 );for (cks =0 ; cks <7 ; cks++) {/*
drivers/infiniband/hw/hfi1/chip.c +3 -2
@@ -13224,15 +13224,16 @@ static void read_mod_write(struct hfi1_devdata *dd, u16 src, u64 bits, {u64 reg;u16 idx = src /BITS_PER_REGISTER ; +unsigned long flags; -spin_lock (&dd->irq_src_lock); +spin_lock_irqsave (&dd->irq_src_lock, flags); reg =read_csr (dd,CCE_INT_MASK + (8 * idx));if (set) reg |= bits;else reg &= ~bits;write_csr (dd,CCE_INT_MASK + (8 * idx), reg); -spin_unlock (&dd->irq_src_lock); +spin_unlock_irqrestore (&dd->irq_src_lock, flags); }/**
drivers/infiniband/ulp/rtrs/rtrs.c +1 -1
@@ -235,7 +235,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, u16 cq_size,static int create_qp (struct rtrs_con *con,struct ib_pd *pd,u32 max_send_wr,u32 max_recv_wr,u32 max_sge) { -struct ib_qp_init_attr init_attr = {NULL }; +struct ib_qp_init_attr init_attr = {};struct rdma_cm_id *cm_id = con->cm_id;int ret;
drivers/input/input-mt.c +3 -0
@@ -45,6 +45,9 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,return 0 ;if (mt)return mt->num_slots != num_slots ? -EINVAL :0 ; +/* Arbitrary limit for avoiding too large memory allocation. */ +if (num_slots >1024 ) +return -EINVAL ; mt =kzalloc (struct_size (mt, slots, num_slots),GFP_KERNEL );if (!mt)
drivers/input/serio/ioc3kbd.c +4 -2
@@ -190,7 +190,7 @@ static int ioc3kbd_probe(struct platform_device *pdev)return 0 ; } -static void ioc3kbd_remove (struct platform_device *pdev) +static int ioc3kbd_remove (struct platform_device *pdev) {struct ioc3kbd_data *d =platform_get_drvdata (pdev);
@@ -198,6 +198,8 @@ static void ioc3kbd_remove(struct platform_device *pdev)serio_unregister_port (d->kbd);serio_unregister_port (d->aux); + +return 0 ; }static const struct platform_device_id ioc3kbd_id_table[] = {
@@ -208,7 +210,7 @@ MODULE_DEVICE_TABLE(platform, ioc3kbd_id_table);static struct platform_driver ioc3kbd_driver = { .probe = ioc3kbd_probe, - .remove_new = ioc3kbd_remove, + .remove = ioc3kbd_remove, .id_table = ioc3kbd_id_table, .driver = { .name ="ioc3-kbd" ,
drivers/irqchip/irq-gic-v3-its.c +0 -2
@@ -4469,8 +4469,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virqstruct page *vprop_page;int base, nr_ids, i, err =0 ; -BUG_ON (!vm); - bitmap =its_lpi_alloc (roundup_pow_of_two (nr_irqs), &base, &nr_ids);if (!bitmap)return -ENOMEM ;
drivers/md/dm-clone-metadata.c +0 -5
@@ -471,11 +471,6 @@ static void __destroy_persistent_data_structures(struct dm_clone_metadata *cmd)/*---------------------------------------------------------------------------*/ -static size_t bitmap_size (unsigned long nr_bits) -{ -return BITS_TO_LONGS (nr_bits) *sizeof (long ); -} -static int __dirty_map_init (struct dirty_map *dmap,unsigned long nr_words,unsigned long nr_regions) {
drivers/md/dm-ioctl.c +20 -2
@@ -1064,8 +1064,26 @@ static int do_resume(struct dm_ioctl *param) suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG ;if (param->flags &DM_NOFLUSH_FLAG ) suspend_flags |=DM_SUSPEND_NOFLUSH_FLAG ; -if (!dm_suspended_md (md)) -dm_suspend (md, suspend_flags); +if (!dm_suspended_md (md)) { + r =dm_suspend (md, suspend_flags); +if (r) { +down_write (&_hash_lock); + hc =dm_get_mdptr (md); +if (hc && !hc->new_map) { + hc->new_map = new_map; + new_map =NULL ; + }else { + r = -ENXIO ; + } +up_write (&_hash_lock); +if (new_map) { +dm_sync_table (md); +dm_table_destroy (new_map); + } +dm_put (md); +return r; + } + } old_map =dm_swap_table (md, new_map);if (IS_ERR (old_map)) {
drivers/md/dm.c +2 -2
@@ -2343,7 +2343,7 @@ static int dm_wait_for_bios_completion(struct mapped_device *md, long task_statebreak ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
@@ -2368,7 +2368,7 @@ static int dm_wait_for_completion(struct mapped_device *md, long task_state)break ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
drivers/md/md.c +0 -5
@@ -7601,11 +7601,6 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, mddev = bdev->bd_disk->private_data; -if (!mddev) { -BUG (); - goto out; - } -/* Some actions do not requires the mutex */ switch (cmd) {case GET_ARRAY_INFO :
drivers/md/persistent-data/dm-space-map-metadata.c +2 -2
@@ -275,7 +275,7 @@ static void sm_metadata_destroy(struct dm_space_map *sm) { struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); -kfree (smm); +kvfree (smm); }static int sm_metadata_get_nr_blocks (struct dm_space_map *sm,dm_block_t *count)
@@ -759,7 +759,7 @@ struct dm_space_map *dm_sm_metadata_init(void) {struct sm_metadata *smm; - smm =kmalloc (sizeof (*smm),GFP_KERNEL ); + smm =kvmalloc (sizeof (*smm),GFP_KERNEL );if (!smm)return ERR_PTR (-ENOMEM );
drivers/media/pci/cx23885/cx23885-video.c +8 -0
@@ -1353,6 +1353,10 @@ int cx23885_video_register(struct cx23885_dev *dev)/* register Video device */ dev->video_dev =cx23885_vdev_init (dev, dev->pci, &cx23885_video_template,"video" ); +if (!dev->video_dev) { + err = -ENOMEM ; + goto fail_unreg; + } dev->video_dev->queue = &dev->vb2_vidq; dev->video_dev->device_caps =V4L2_CAP_READWRITE |V4L2_CAP_STREAMING |V4L2_CAP_AUDIO |V4L2_CAP_VIDEO_CAPTURE ;
@@ -1381,6 +1385,10 @@ int cx23885_video_register(struct cx23885_dev *dev)/* register VBI device */ dev->vbi_dev =cx23885_vdev_init (dev, dev->pci, &cx23885_vbi_template,"vbi" ); +if (!dev->vbi_dev) { + err = -ENOMEM ; + goto fail_unreg; + } dev->vbi_dev->queue = &dev->vb2_vbiq; dev->vbi_dev->device_caps =V4L2_CAP_READWRITE |V4L2_CAP_STREAMING |V4L2_CAP_AUDIO |V4L2_CAP_VBI_CAPTURE ;
drivers/media/pci/solo6x10/solo6x10-offsets.h +5 -5
@@ -57,16 +57,16 @@#define SOLO_MP4E_EXT_ADDR (__solo) \ (SOLO_EREF_EXT_ADDR(__solo) + SOLO_EREF_EXT_AREA(__solo))#define SOLO_MP4E_EXT_SIZE (__solo) \ - max((__solo->nr_chans * 0x00080000), \ - min(((__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo)) - \ - __SOLO_JPEG_MIN_SIZE(__solo)), 0x00ff0000)) + clamp(__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo) - \ + __SOLO_JPEG_MIN_SIZE(__solo), \ + __solo->nr_chans * 0x00080000, 0x00ff0000)#define __SOLO_JPEG_MIN_SIZE (__solo) (__solo->nr_chans * 0x00080000)#define SOLO_JPEG_EXT_ADDR (__solo) \ (SOLO_MP4E_EXT_ADDR(__solo) + SOLO_MP4E_EXT_SIZE(__solo))#define SOLO_JPEG_EXT_SIZE (__solo) \ - max(__SOLO_JPEG_MIN_SIZE(__solo), \ - min((__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo)), 0x00ff0000)) + clamp(__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo), \ + __SOLO_JPEG_MIN_SIZE(__solo), 0x00ff0000)#define SOLO_SDRAM_END (__solo) \ (SOLO_JPEG_EXT_ADDR(__solo) + SOLO_JPEG_EXT_SIZE(__solo))
drivers/media/platform/qcom/venus/pm_helpers.c +1 -1
@@ -765,7 +765,7 @@ static int vcodec_domains_get(struct venus_core *core) pd =dev_pm_domain_attach_by_name (dev, res->vcodec_pmdomains[i]);if (IS_ERR_OR_NULL (pd)) -return PTR_ERR (pd) ? : -ENODATA ; +return pd ?PTR_ERR (pd) : -ENODATA ; core->pmdomains[i] = pd; }
drivers/media/radio/radio-isa.c +1 -1
@@ -36,7 +36,7 @@ static int radio_isa_querycap(struct file *file, void *priv,strscpy (v->driver, isa->drv->driver.driver.name,sizeof (v->driver));strscpy (v->card, isa->drv->card,sizeof (v->card)); -snprintf (v->bus_info,sizeof (v->bus_info),"ISA:%s" , isa->v4l2_dev.name); +snprintf (v->bus_info,sizeof (v->bus_info),"ISA:%s" ,dev_name (isa->v4l2_dev.dev));return 0 ; }
drivers/media/usb/uvc/uvc_video.c +5 -5
@@ -723,11 +723,11 @@ void uvc_video_clock_update(struct uvc_streaming *stream,unsigned long flags;u64 timestamp;u32 delta_stc; -u32 y1, y2; +u32 y1;u32 x1, x2;u32 mean;u32 sof; -u64 y; +u64 y, y2;if (!uvc_hw_timestamps_param)return ;
@@ -767,7 +767,7 @@ void uvc_video_clock_update(struct uvc_streaming *stream, sof = y; uvc_trace(UVC_TRACE_CLOCK, "%s: PTS %u y %llu.%06llu SOF %u.%06llu " - "(x1 %u x2 %u y1 %u y2 %u SOF offset %u)\n", + "(x1 %u x2 %u y1 %u y2 %llu SOF offset %u)\n", stream->dev->name, buf->pts, y >> 16, div_u64((y & 0xffff) * 1000000, 65536), sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536),
@@ -782,7 +782,7 @@ void uvc_video_clock_update(struct uvc_streaming *stream, goto done; y1 =NSEC_PER_SEC ; - y2 = (u32 )ktime_to_ns (ktime_sub (last->host_time, first->host_time)) + y1; + y2 =ktime_to_ns (ktime_sub (last->host_time, first->host_time)) + y1;/* Interpolated and host SOF timestamps can wrap around at slightly * different times. Handle this by adding or removing 2048 to or from
@@ -802,7 +802,7 @@ void uvc_video_clock_update(struct uvc_streaming *stream, timestamp =ktime_to_ns (first->host_time) + y - y1; uvc_trace(UVC_TRACE_CLOCK, "%s: SOF %u.%06llu y %llu ts %llu " - "buf ts %llu (x1 %u/%u/%u x2 %u/%u/%u y1 %u y2 %u)\n", + "buf ts %llu (x1 %u/%u/%u x2 %u/%u/%u y1 %u y2 %llu)\n", stream->dev->name, sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536), y, timestamp, vbuf->vb2_buf.timestamp,
drivers/memory/stm32-fmc2-ebi.c +88 -34
242 lines not on this page · raw message
drivers/mmc/core/mmc_test.c +5 -4
@@ -3125,13 +3125,13 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf, test->buffer =kzalloc (BUFFER_SIZE ,GFP_KERNEL );#ifdef CONFIG_HIGHMEM test->highmem =alloc_pages (GFP_KERNEL | __GFP_HIGHMEM,BUFFER_ORDER ); +if (!test->highmem) { + count = -ENOMEM ; + goto free_test_buffer; + }#endif -#ifdef CONFIG_HIGHMEM -if (test->buffer && test->highmem) { -#else if (test->buffer) { -#endif mutex_lock (&mmc_test_lock);mmc_test_run (test, testcase);mutex_unlock (&mmc_test_lock);
@@ -3139,6 +3139,7 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,#ifdef CONFIG_HIGHMEM __free_pages (test->highmem,BUFFER_ORDER ); +free_test_buffer:#endif kfree (test->buffer);kfree (test);
drivers/mmc/host/dw_mmc.c +8 -0
@@ -3171,6 +3171,10 @@ int dw_mci_probe(struct dw_mci *host) host->biu_clk =devm_clk_get (host->dev,"biu" );if (IS_ERR (host->biu_clk)) {dev_dbg (host->dev,"biu clock not available\n" ); + ret =PTR_ERR (host->biu_clk); +if (ret == -EPROBE_DEFER ) +return ret; + }else { ret =clk_prepare_enable (host->biu_clk);if (ret) {
@@ -3182,6 +3186,10 @@ int dw_mci_probe(struct dw_mci *host) host->ciu_clk =devm_clk_get (host->dev,"ciu" );if (IS_ERR (host->ciu_clk)) {dev_dbg (host->dev,"ciu clock not available\n" ); + ret =PTR_ERR (host->ciu_clk); +if (ret == -EPROBE_DEFER ) + goto err_clk_biu; + host->bus_hz = host->pdata->bus_hz; }else { ret =clk_prepare_enable (host->ciu_clk);
drivers/net/bonding/bond_main.c +8 -13
@@ -540,7 +540,6 @@ static void bond_ipsec_del_sa_all(struct bonding *bond) }else { slave->dev->xfrmdev_ops->xdo_dev_state_delete (ipsec->xs); } - ipsec->xs->xso.real_dev =NULL ; }spin_unlock_bh (&bond->ipsec_lock);rcu_read_unlock ();
@@ -557,34 +556,30 @@ static bool bond_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)struct net_device *real_dev;struct slave *curr_active;struct bonding *bond; -int err; +bool ok = false; bond =netdev_priv (bond_dev);rcu_read_lock (); curr_active =rcu_dereference (bond->curr_active_slave); +if (!curr_active) + goto out; real_dev = curr_active->dev; -if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) { - err = false; +if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) goto out; - } -if (!xs->xso.real_dev) { - err = false; +if (!xs->xso.real_dev) goto out; - }if (!real_dev->xfrmdev_ops || !real_dev->xfrmdev_ops->xdo_dev_offload_ok || -netif_is_bond_master (real_dev)) { - err = false; +netif_is_bond_master (real_dev)) goto out; - } - err = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); + ok = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); out:rcu_read_unlock (); -return err; +return ok; }static const struct xfrmdev_ops bond_xfrmdev_ops = {
drivers/net/bonding/bond_options.c +1 -1
@@ -822,7 +822,7 @@ static int bond_option_active_slave_set(struct bonding *bond,/* check to see if we are clearing active */ if (!slave_dev) {netdev_dbg (bond->dev,"Clearing current active slave\n" ); -RCU_INIT_POINTER (bond->curr_active_slave,NULL ); +bond_change_active_slave (bond,NULL );bond_select_active_slave (bond); }else {struct slave *old_active =rtnl_dereference (bond->curr_active_slave);
drivers/net/dsa/mv88e6xxx/Makefile +4 -0
@@ -15,3 +15,7 @@ mv88e6xxx-objs += port_hidden.o mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_PTP) += ptp.o mv88e6xxx-objs += serdes.o mv88e6xxx-objs += smi.o +mv88e6xxx-objs += trace.o + +# for tracing framework to find trace.h +CFLAGS_trace.o := -I$(src)
drivers/net/dsa/mv88e6xxx/global1_atu.c +67 -15
129 lines not on this page · raw message
drivers/net/dsa/mv88e6xxx/trace.c new file +6 -0
@@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* Copyright 2022 NXP +*/ + +#define CREATE_TRACE_POINTS +#include "trace.h"
drivers/net/dsa/mv88e6xxx/trace.h new file +66 -0
66 lines not on this page · raw message
drivers/net/dsa/vitesse-vsc73xx-core.c +53 -16
134 lines not on this page · raw message
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +2 -1
@@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_filter_specification *fs,* in the Compressed Filter Tuple. */ if (tp->vlan_shift >=0 && fs->mask.ivlan) - ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift; + ntuple |= (u64)(FT_VLAN_VLD_F | + fs->val.ivlan) << tp->vlan_shift;if (tp->port_shift >=0 && fs->mask.iport) ntuple |= (u64 )fs->val.iport << tp->port_shift;
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +3 -0
@@ -4536,6 +4536,9 @@ static int hns3_reset_notify_uninit_enet(struct hnae3_handle *handle)struct hns3_nic_priv *priv =netdev_priv (netdev);int ret; +if (!test_bit (HNS3_NIC_STATE_DOWN , &priv->state)) +hns3_nic_net_stop (netdev); +if (!test_and_clear_bit (HNS3_NIC_STATE_INITED , &priv->state)) {netdev_warn (netdev,"already uninitialized\n" );return 0 ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +2 -2
@@ -10051,8 +10051,8 @@ static void hclge_flr_done(struct hnae3_ae_dev *ae_dev)dev_err (&hdev->pdev->dev,"fail to rebuild, ret=%d\n" , ret); hdev->reset_type =HNAE3_NONE_RESET ; -clear_bit (HCLGE_STATE_RST_HANDLING , &hdev->state); -up (&hdev->reset_sem); +if (test_and_clear_bit (HCLGE_STATE_RST_HANDLING , &hdev->state)) +up (&hdev->reset_sem); }static void hclge_clear_resetting_state (struct hclge_dev *hdev)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +4 -3
@@ -715,10 +715,11 @@ void hclge_mbx_handler(struct hclge_dev *hdev) req = (struct hclge_mbx_vf_to_pf_cmd *)desc->data; flag =le16_to_cpu (crq->desc[crq->next_to_use].flag); -if (unlikely (!hnae3_get_bit (flag,HCLGE_CMDQ_RX_OUTVLD_B ))) { +if (unlikely (!hnae3_get_bit (flag,HCLGE_CMDQ_RX_OUTVLD_B ) || + req->mbx_src_vfid > hdev->num_req_vfs)) {dev_warn (&hdev->pdev->dev, -"dropped invalid mailbox message, code = %u\n" , - req->msg.code); +"dropped invalid mailbox message, code = %u, vfid = %u\n" , + req->msg.code, req->mbx_src_vfid);/* dropping/not processing this invalid message */ crq->desc[crq->next_to_use].flag =0 ;
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -2
@@ -2093,8 +2093,8 @@ static void hclgevf_flr_done(struct hnae3_ae_dev *ae_dev) ret); hdev->reset_type =HNAE3_NONE_RESET ; -clear_bit (HCLGEVF_STATE_RST_HANDLING , &hdev->state); -up (&hdev->reset_sem); +if (test_and_clear_bit (HCLGEVF_STATE_RST_HANDLING , &hdev->state)) +up (&hdev->reset_sem); }static u32 hclgevf_get_fw_version (struct hnae3_handle *handle)
drivers/net/ethernet/i825xx/sun3_82586.c +1 -1
@@ -990,7 +990,7 @@ static void sun3_82586_timeout(struct net_device *dev, unsigned int txqueue) {#ifdef DEBUG printk ("%s: xmitter timed out, try to restart! stat: %02x\n" ,dev->name,p->scb->cus); -printk ("%s: command-stats: %04x %04x\n" ,dev->name,swab16 (p->xmit_cmds[0 ]->cmd_status),swab16 (p->xmit_cmds[1 ]->cmd_status)); +printk ("%s: command-stats: %04x\n" , dev->name,swab16 (p->xmit_cmds[0 ]->cmd_status));printk ("%s: check, whether you set the right interrupt number!\n" ,dev->name);#endif sun3_82586_close (dev);
drivers/net/ethernet/intel/ice/ice_txrx.c +1 -1
@@ -786,7 +786,7 @@ ice_can_reuse_rx_page(struct ice_rx_buf *rx_buf, int rx_buf_pgcnt)return false;#else #define ICE_LAST_OFFSET \ - (SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_2048) + (SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_3072)if (rx_buf->page_offset >ICE_LAST_OFFSET )return false;#endif /* PAGE_SIZE < 8192) */
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c +1 -1
@@ -679,7 +679,7 @@ mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,if (num_tuples <=0 ) {netdev_warn (priv->netdev,"%s: flow is not valid %d\n" , __func__, num_tuples); -return num_tuples; +return num_tuples <0 ? num_tuples : -EINVAL ; } eth_ft =get_flow_table (priv, fs, num_tuples);
drivers/net/ethernet/xilinx/xilinx_axienet.h +9 -8
@@ -159,16 +159,17 @@#define XAE_RCW1_OFFSET 0x00000404/* Rx Configuration Word 1 */ #define XAE_TC_OFFSET 0x00000408/* Tx Configuration */ #define XAE_FCC_OFFSET 0x0000040C/* Flow Control Configuration */ -#define XAE_EMMC_OFFSET 0x00000410/* EMAC mode configuration */ -#define XAE_PHYC_OFFSET 0x00000414/* RGMII/SGMII configuration */ +#define XAE_EMMC_OFFSET 0x00000410/* MAC speed configuration */ +#define XAE_PHYC_OFFSET 0x00000414/* RX Max Frame Configuration */ #define XAE_ID_OFFSET 0x000004F8/* Identification register */ -#define XAE_MDIO_MC_OFFSET 0x00000500/* MII Management Config */ -#define XAE_MDIO_MCR_OFFSET 0x00000504/* MII Management Control */ -#define XAE_MDIO_MWD_OFFSET 0x00000508/* MII Management Write Data */ -#define XAE_MDIO_MRD_OFFSET 0x0000050C/* MII Management Read Data */ +#define XAE_MDIO_MC_OFFSET 0x00000500/* MDIO Setup */ +#define XAE_MDIO_MCR_OFFSET 0x00000504/* MDIO Control */ +#define XAE_MDIO_MWD_OFFSET 0x00000508/* MDIO Write Data */ +#define XAE_MDIO_MRD_OFFSET 0x0000050C/* MDIO Read Data */ #define XAE_UAW0_OFFSET 0x00000700/* Unicast address word 0 */ #define XAE_UAW1_OFFSET 0x00000704/* Unicast address word 1 */ -#define XAE_FMI_OFFSET 0x00000708/* Filter Mask Index */ +#define XAE_FMI_OFFSET 0x00000708/* Frame Filter Control */ +#define XAE_FFE_OFFSET 0x0000070C/* Frame Filter Enable */ #define XAE_AF0_OFFSET 0x00000710/* Address Filter 0 */ #define XAE_AF1_OFFSET 0x00000714/* Address Filter 1 */
@@ -307,7 +308,7 @@*/ #define XAE_UAW1_UNICASTADDR_MASK 0x0000FFFF -/* Bit masks for Axi Ethernet FMI register */ +/* Bit masks for Axi Ethernet FMC register */ #define XAE_FMI_PM_MASK 0x80000000/* Promis. mode enable */ #define XAE_FMI_IND_MASK 0x00000003/* Index Mask */
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +13 -12
@@ -409,7 +409,7 @@ static int netdev_set_mac_address(struct net_device *ndev, void *p)*/ static void axienet_set_multicast_list (struct net_device *ndev) { -int i; +int i =0 ;u32 reg, af0reg, af1reg;struct axienet_local *lp =netdev_priv (ndev);
@@ -427,7 +427,10 @@ static void axienet_set_multicast_list(struct net_device *ndev) }else if (!netdev_mc_empty (ndev)) {struct netdev_hw_addr *ha; - i =0 ; + reg =axienet_ior (lp,XAE_FMI_OFFSET ); + reg &= ~XAE_FMI_PM_MASK ; +axienet_iow (lp,XAE_FMI_OFFSET , reg); +netdev_for_each_mc_addr (ha, ndev) {if (i >=XAE_MULTICAST_CAM_TABLE_NUM )break ;
@@ -446,6 +449,7 @@ static void axienet_set_multicast_list(struct net_device *ndev)axienet_iow (lp,XAE_FMI_OFFSET , reg);axienet_iow (lp,XAE_AF0_OFFSET , af0reg);axienet_iow (lp,XAE_AF1_OFFSET , af1reg); +axienet_iow (lp,XAE_FFE_OFFSET ,1 ); i++; } }else {
@@ -453,18 +457,15 @@ static void axienet_set_multicast_list(struct net_device *ndev) reg &= ~XAE_FMI_PM_MASK ;axienet_iow (lp,XAE_FMI_OFFSET , reg); - -for (i =0 ; i <XAE_MULTICAST_CAM_TABLE_NUM ; i++) { - reg =axienet_ior (lp,XAE_FMI_OFFSET ) &0xFFFFFF00 ; - reg |= i; - -axienet_iow (lp,XAE_FMI_OFFSET , reg); -axienet_iow (lp,XAE_AF0_OFFSET ,0 ); -axienet_iow (lp,XAE_AF1_OFFSET ,0 ); - } -dev_info (&ndev->dev,"Promiscuous mode disabled.\n" ); } + +for (; i <XAE_MULTICAST_CAM_TABLE_NUM ; i++) { + reg =axienet_ior (lp,XAE_FMI_OFFSET ) &0xFFFFFF00 ; + reg |= i; +axienet_iow (lp,XAE_FMI_OFFSET , reg); +axienet_iow (lp,XAE_FFE_OFFSET ,0 ); + } }/**
drivers/net/gtp.c +4 -1
@@ -567,6 +567,9 @@ static netdev_tx_t gtp_dev_xmit(struct sk_buff *skb, struct net_device *dev)if (skb_cow_head (skb, dev->needed_headroom)) goto tx_err; +if (!pskb_inet_may_pull (skb)) + goto tx_err; +skb_reset_inner_headers (skb);/* PDP context lookups in gtp_build_skb_*() need rcu read-side lock. */
@@ -798,7 +801,7 @@ static struct sock *gtp_encap_enable_socket(int fd, int type, sock =sockfd_lookup (fd, &err);if (!sock) {pr_debug ("gtp socket fd=%d not found\n" , fd); -return NULL ; +return ERR_PTR (err); } sk = sock->sk;
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +1 -1
@@ -2675,7 +2675,7 @@ int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify)if (!(mvm->scan_status & type))return 0 ; -if (iwl_mvm_is_radio_killed (mvm)) { +if (!test_bit (STATUS_DEVICE_ENABLED , &mvm->trans->status)) { ret =0 ; goto out; }
drivers/net/wireless/marvell/mwifiex/cfg80211.c +26 -6
@@ -4314,11 +4314,27 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)if (ISSUPP_ADHOC_ENABLED (adapter->fw_cap_info)) wiphy->interface_modes |=BIT (NL80211_IFTYPE_ADHOC ); - wiphy->bands[NL80211_BAND_2GHZ ] = &mwifiex_band_2ghz; -if (adapter->config_bands &BAND_A ) - wiphy->bands[NL80211_BAND_5GHZ ] = &mwifiex_band_5ghz; -else + wiphy->bands[NL80211_BAND_2GHZ ] =devm_kmemdup (adapter->dev, + &mwifiex_band_2ghz, +sizeof (mwifiex_band_2ghz), +GFP_KERNEL ); +if (!wiphy->bands[NL80211_BAND_2GHZ ]) { + ret = -ENOMEM ; + goto err; + } + +if (adapter->config_bands &BAND_A ) { + wiphy->bands[NL80211_BAND_5GHZ ] =devm_kmemdup (adapter->dev, + &mwifiex_band_5ghz, +sizeof (mwifiex_band_5ghz), +GFP_KERNEL ); +if (!wiphy->bands[NL80211_BAND_5GHZ ]) { + ret = -ENOMEM ; + goto err; + } + }else { wiphy->bands[NL80211_BAND_5GHZ ] =NULL ; + }if (adapter->drcs_enabled &&ISSUPP_DRCS_ENABLED (adapter->fw_cap_info)) wiphy->iface_combinations = &mwifiex_iface_comb_ap_sta_drcs;
@@ -4411,8 +4427,7 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)if (ret <0 ) {mwifiex_dbg (adapter,ERROR ,"%s: wiphy_register failed: %d\n" , __func__, ret); -wiphy_free (wiphy); -return ret; + goto err; }if (!adapter->regd) {
@@ -4454,4 +4469,9 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter) adapter->wiphy = wiphy;return ret; + +err: +wiphy_free (wiphy); + +return ret; }
drivers/net/wireless/st/cw1200/txrx.c +1 -1
@@ -1170,7 +1170,7 @@ void cw1200_rx_cb(struct cw1200_common *priv,size_t ies_len = skb->len - (ies - (u8 *)(skb->data)); tim_ie =cfg80211_find_ie (WLAN_EID_TIM , ies, ies_len); -if (tim_ie) { +if (tim_ie && tim_ie[1 ] >=sizeof (struct ieee80211_tim_ie )) {struct ieee80211_tim_ie *tim = (struct ieee80211_tim_ie *)&tim_ie[2 ];
drivers/nfc/pn533/pn533.c +5 -0
@@ -1751,6 +1751,11 @@ static int pn533_start_poll(struct nfc_dev *nfc_dev, }pn533_poll_create_mod_list (dev, im_protocols, tm_protocols); +if (!dev->poll_mod_count) { +nfc_err (dev->dev, +"Poll mod list is empty\n" ); +return -EINVAL ; + }/* Do not always start polling from the same modulation */ get_random_bytes (&rand_mod,sizeof (rand_mod));
drivers/nvme/target/rdma.c +4 -12
@@ -472,12 +472,8 @@ nvmet_rdma_alloc_rsps(struct nvmet_rdma_queue *queue)return 0 ; out_free: -while (--i >=0 ) { -struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; - -list_del (&rsp->free_list); -nvmet_rdma_free_rsp (ndev, rsp); - } +while (--i >=0 ) +nvmet_rdma_free_rsp (ndev, &queue->rsps[i]);kfree (queue->rsps); out:return ret;
@@ -488,12 +484,8 @@ static void nvmet_rdma_free_rsps(struct nvmet_rdma_queue *queue)struct nvmet_rdma_device *ndev = queue->dev;int i, nr_rsps = queue->recv_queue_size *2 ; -for (i =0 ; i < nr_rsps; i++) { -struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; - -list_del (&rsp->free_list); -nvmet_rdma_free_rsp (ndev, rsp); - } +for (i =0 ; i < nr_rsps; i++) +nvmet_rdma_free_rsp (ndev, &queue->rsps[i]);kfree (queue->rsps); }
drivers/nvme/target/tcp.c +1 -0
@@ -846,6 +846,7 @@ static int nvmet_tcp_handle_icreq(struct nvmet_tcp_queue *queue)pr_err ("bad nvme-tcp pdu length (%d)\n" ,le32_to_cpu (icreq->hdr.plen));nvmet_tcp_fatal_error (queue); +return -EPROTO ; }if (icreq->pfv !=NVME_TCP_PFV_1_0 ) {
drivers/nvme/target/trace.c +3 -3
@@ -195,7 +195,7 @@ const char *nvmet_trace_disk_name(struct trace_seq *p, char *name)return ret; } -const char *nvmet_trace_ctrl_name (struct trace_seq *p,struct nvmet_ctrl *ctrl) +const char *nvmet_trace_ctrl_id (struct trace_seq *p,u16 ctrl_id) {const char *ret =trace_seq_buffer_ptr (p);
@@ -208,8 +208,8 @@ const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl)* If we can know the extra data of the connect command in this stage, * we can update this print statement later. */ -if (ctrl) -trace_seq_printf (p,"%d" , ctrl->cntlid); +if (ctrl_id) +trace_seq_printf (p,"%d" , ctrl_id);else trace_seq_printf (p,"_" );trace_seq_putc (p,0 );
drivers/nvme/target/trace.h +17 -11
@@ -32,18 +32,24 @@ const char *nvmet_trace_parse_fabrics_cmd(struct trace_seq *p, u8 fctype, nvmet_trace_parse_nvm_cmd(p, opcode, cdw10) : \ nvmet_trace_parse_admin_cmd(p, opcode, cdw10))) -const char *nvmet_trace_ctrl_name (struct trace_seq *p,struct nvmet_ctrl *ctrl); -#define __print_ctrl_name (ctrl) \ - nvmet_trace_ctrl_name(p, ctrl) +const char *nvmet_trace_ctrl_id (struct trace_seq *p,u16 ctrl_id); +#define __print_ctrl_id (ctrl_id) \ + nvmet_trace_ctrl_id(p, ctrl_id)const char *nvmet_trace_disk_name (struct trace_seq *p,char *name);#define __print_disk_name (name) \ nvmet_trace_disk_name(p, name)#ifndef TRACE_HEADER_MULTI_READ -static inline struct nvmet_ctrl *nvmet_req_to_ctrl (struct nvmet_req *req) +static inline u16 nvmet_req_to_ctrl_id (struct nvmet_req *req) { -return req->sq->ctrl; +/* +* The queue and controller pointers are not valid until an association +* has been established. +*/ +if (!req->sq || !req->sq->ctrl) +return 0 ; +return req->sq->ctrl->cntlid; }static inline void __assign_req_name (char *name,struct nvmet_req *req)
@@ -60,7 +66,7 @@ TRACE_EVENT(nvmet_req_init, TP_ARGS(req, cmd),TP_STRUCT__entry (__field (struct nvme_command *,cmd ) - __field(struct nvmet_ctrl *, ctrl) +__field (u16, ctrl_id)__array (char, disk,DISK_NAME_LEN )__field (int, qid) __field(u16, cid)
@@ -73,7 +79,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_fast_assign( __entry->cmd = cmd; - __entry->ctrl =nvmet_req_to_ctrl (req); + __entry->ctrl_id =nvmet_req_to_ctrl_id (req);__assign_req_name (__entry->disk, req); __entry->qid = req->sq->qid; __entry->cid = cmd->common.command_id;
@@ -87,7 +93,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_printk("nvmet%s: %sqid=%d, cmdid=%u, nsid=%u, flags=%#x, " "meta=%#llx, cmd=(%s, %s)", - __print_ctrl_name(__entry->ctrl), + __print_ctrl_id(__entry->ctrl_id), __print_disk_name(__entry->disk), __entry->qid, __entry->cid, __entry->nsid, __entry->flags, __entry->metadata,
@@ -101,7 +107,7 @@ TRACE_EVENT(nvmet_req_complete, TP_PROTO(struct nvmet_req *req), TP_ARGS(req), TP_STRUCT__entry( - __field(struct nvmet_ctrl *, ctrl) + __field(u16, ctrl_id) __array(char, disk, DISK_NAME_LEN) __field(int, qid) __field(int, cid)
@@ -109,7 +115,7 @@ TRACE_EVENT(nvmet_req_complete,__field (u16, status) ),TP_fast_assign ( - __entry->ctrl = nvmet_req_to_ctrl(req); + __entry->ctrl_id = nvmet_req_to_ctrl_id(req); __entry->qid = req->cq->qid; __entry->cid = req->cqe->command_id; __entry->result =le64_to_cpu (req->cqe->result.u64);
@@ -117,7 +123,7 @@ TRACE_EVENT(nvmet_req_complete,__assign_req_name (__entry->disk, req); ),TP_printk ("nvmet%s: %sqid=%d, cmdid=%u, res=%#llx, status=%#x" , -__print_ctrl_name (__entry->ctrl), +__print_ctrl_id (__entry->ctrl_id),__print_disk_name (__entry->disk), __entry->qid, __entry->cid, __entry->result, __entry->status)
drivers/pinctrl/pinctrl-rockchip.c +1 -1
@@ -3695,7 +3695,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {PIN_BANK_IOMUX_FLAGS (0 ,32 ,"gpio0" ,0 ,0 ,0 ,0 ),PIN_BANK_IOMUX_FLAGS (1 ,32 ,"gpio1" ,0 ,0 ,0 ,0 ),PIN_BANK_IOMUX_FLAGS (2 ,32 ,"gpio2" ,0 , -0 , +IOMUX_WIDTH_2BIT ,IOMUX_WIDTH_3BIT ,0 ), PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
drivers/pinctrl/pinctrl-single.c +2 -0
@@ -350,6 +350,8 @@ static int pcs_get_function(struct pinctrl_dev *pctldev, unsigned pin,return -ENOTSUPP ; fselector = setting->func; function =pinmux_generic_get_function (pctldev, fselector); +if (!function) +return -EINVAL ; *func = function->data;if (!(*func)) { dev_err(pcs->dev, "%s could not find function%i\n",
drivers/s390/block/dasd.c +23 -13
@@ -1665,9 +1665,15 @@ static int dasd_ese_needs_format(struct dasd_block *block, struct irb *irb)if (!sense)return 0 ; -return !!(sense[1 ] &SNS1_NO_REC_FOUND ) || - !!(sense[1 ] &SNS1_FILE_PROTECTED ) || -scsw_cstat (&irb->scsw) ==SCHN_STAT_INCORR_LEN ; +if (sense[1 ] &SNS1_NO_REC_FOUND ) +return 1 ; + +if ((sense[1 ] &SNS1_INV_TRACK_FORMAT ) && +scsw_is_tm (&irb->scsw) && + !(sense[2 ] &SNS2_ENV_DATA_PRESENT )) +return 1 ; + +return 0 ; }static int dasd_ese_oos_cond (u8 *sense)
@@ -1688,7 +1694,7 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,struct dasd_device *device;unsigned long now;int nrf_suppressed =0 ; -int fp_suppressed =0 ; +int it_suppressed =0 ;struct request *req;u8 *sense =NULL ;int expires;
@@ -1743,8 +1749,9 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,*/ sense =dasd_get_sense (irb);if (sense) { - fp_suppressed = (sense[1 ] &SNS1_FILE_PROTECTED ) && -test_bit (DASD_CQR_SUPPRESS_FP , &cqr->flags); + it_suppressed = (sense[1 ] &SNS1_INV_TRACK_FORMAT ) && + !(sense[2 ] &SNS2_ENV_DATA_PRESENT ) && +test_bit (DASD_CQR_SUPPRESS_IT , &cqr->flags); nrf_suppressed = (sense[1 ] &SNS1_NO_REC_FOUND ) &&test_bit (DASD_CQR_SUPPRESS_NRF , &cqr->flags);
@@ -1759,7 +1766,7 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,return ; } } -if (!(fp_suppressed || nrf_suppressed)) +if (!(it_suppressed || nrf_suppressed)) device->discipline->dump_sense_dbf (device, irb,"int" );if (device->features &DASD_FEATURE_ERPLOG )
@@ -2513,14 +2520,17 @@ static int _dasd_sleep_on_queue(struct list_head *ccw_queue, int interruptible) rc =0 ;list_for_each_entry_safe (cqr, n, ccw_queue, blocklist) {/* -* In some cases the 'File Protected' or 'Incorrect Length' -* error might be expected and error recovery would be -* unnecessary in these cases. Check if the according suppress -* bit is set. +* In some cases certain errors might be expected and +* error recovery would be unnecessary in these cases. +* Check if the according suppress bit is set. */ sense =dasd_get_sense (&cqr->irb); -if (sense && sense[1 ] &SNS1_FILE_PROTECTED && -test_bit (DASD_CQR_SUPPRESS_FP , &cqr->flags)) +if (sense && (sense[1 ] &SNS1_INV_TRACK_FORMAT ) && + !(sense[2 ] &SNS2_ENV_DATA_PRESENT ) && +test_bit (DASD_CQR_SUPPRESS_IT , &cqr->flags)) +continue ; +if (sense && (sense[1 ] &SNS1_NO_REC_FOUND ) && +test_bit (DASD_CQR_SUPPRESS_NRF , &cqr->flags))continue ;if (scsw_cstat (&cqr->irb.scsw) ==0x40 &&test_bit (DASD_CQR_SUPPRESS_IL , &cqr->flags))
drivers/s390/block/dasd_3990_erp.c +2 -8
@@ -1401,14 +1401,8 @@ dasd_3990_erp_file_prot(struct dasd_ccw_req * erp)struct dasd_device *device = erp->startdev; -/* -* In some cases the 'File Protected' error might be expected and -* log messages shouldn't be written then. -* Check if the according suppress bit is set. -*/ -if (!test_bit (DASD_CQR_SUPPRESS_FP , &erp->flags)) -dev_err (&device->cdev->dev, -"Accessing the DASD failed because of a hardware error\n" ); +dev_err (&device->cdev->dev, +"Accessing the DASD failed because of a hardware error\n" );return dasd_3990_erp_cleanup (erp,DASD_CQR_FAILED );
drivers/s390/block/dasd_eckd.c +24 -31
90 lines not on this page · raw message
drivers/s390/block/dasd_int.h +1 -1
@@ -226,7 +226,7 @@ struct dasd_ccw_req {* The following flags are used to suppress output of certain errors. */ #define DASD_CQR_SUPPRESS_NRF 4/* Suppress 'No Record Found' error */ -#define DASD_CQR_SUPPRESS_FP 5/* Suppress 'File Protected' error*/ +#define DASD_CQR_SUPPRESS_IT 5/* Suppress 'Invalid Track' error*/ #define DASD_CQR_SUPPRESS_IL 6/* Suppress 'Incorrect Length' error */ #define DASD_CQR_SUPPRESS_CR 7/* Suppress 'Command Reject' error */
drivers/s390/cio/idset.c +7 -5
@@ -16,20 +16,21 @@ struct idset {unsigned long bitmap[]; }; -static inline unsigned long bitmap_size (int num_ssid,int num_id) +static inline unsigned long idset_bitmap_size (int num_ssid,int num_id) { -return BITS_TO_LONGS (num_ssid * num_id) *sizeof (unsigned long ); +return bitmap_size (size_mul (num_ssid, num_id)); }static struct idset *idset_new (int num_ssid,int num_id) {struct idset *set; - set =vmalloc (sizeof (struct idset ) +bitmap_size (num_ssid, num_id)); + set =vmalloc (sizeof (struct idset ) + +idset_bitmap_size (num_ssid, num_id));if (set) { set->num_ssid = num_ssid; set->num_id = num_id; -memset (set->bitmap,0 ,bitmap_size (num_ssid, num_id)); +memset (set->bitmap,0 ,idset_bitmap_size (num_ssid, num_id)); }return set; }
@@ -41,7 +42,8 @@ void idset_free(struct idset *set)void idset_fill (struct idset *set) { -memset (set->bitmap,0xff ,bitmap_size (set->num_ssid, set->num_id)); +memset (set->bitmap,0xff , +idset_bitmap_size (set->num_ssid, set->num_id)); }static inline void idset_add (struct idset *set,int ssid,int id)
drivers/scsi/aacraid/comminit.c +2 -0
@@ -642,6 +642,7 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)if (aac_comm_init (dev)<0 ){kfree (dev->queues); + dev->queues =NULL ;return NULL ; }/*
@@ -649,6 +650,7 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)*/ if (aac_fib_setup (dev) <0 ) {kfree (dev->queues); + dev->queues =NULL ;return NULL ; }
drivers/scsi/lpfc/lpfc_sli.c +1 -1
@@ -7048,7 +7048,7 @@ lpfc_sli4_repost_sgl_list(struct lpfc_hba *phba,struct lpfc_sglq *sglq_entry =NULL ;struct lpfc_sglq *sglq_entry_next =NULL ;struct lpfc_sglq *sglq_entry_first =NULL ; -int status, total_cnt; +int status =0 , total_cnt;int post_cnt =0 , num_posted =0 , block_cnt =0 ;int last_xritag =NO_XRI ;LIST_HEAD (prep_sgl_list);
drivers/scsi/scsi_transport_spi.c +2 -2
@@ -677,10 +677,10 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,for (r =0 ; r < retries; r++) { result =spi_execute (sdev, spi_write_buffer,DMA_TO_DEVICE , buffer, len, &sshdr); -if (result || !scsi_device_online (sdev)) { +if (result || !scsi_device_online (sdev)) {scsi_device_set_state (sdev,SDEV_QUIESCE ); -if (scsi_sense_valid (&sshdr) +if (result >0 &&scsi_sense_valid (&sshdr) && sshdr.sense_key ==ILLEGAL_REQUEST /* INVALID FIELD IN CDB */ && sshdr.asc ==0x24 && sshdr.ascq ==0x00 )
drivers/soc/qcom/cmd-db.c +1 -1
@@ -319,7 +319,7 @@ static int cmd_db_dev_probe(struct platform_device *pdev)return -EINVAL ; } - cmd_db_header =memremap (rmem->base, rmem->size,MEMREMAP_WB ); + cmd_db_header =memremap (rmem->base, rmem->size,MEMREMAP_WC );if (!cmd_db_header) { ret = -ENOMEM ; cmd_db_header =NULL ;
drivers/soundwire/stream.c +4 -4
@@ -1425,18 +1425,18 @@ struct sdw_dpn_prop *sdw_get_slave_dpn_prop(struct sdw_slave *slave, unsigned int port_num) {struct sdw_dpn_prop *dpn_prop; -u8 num_ports; +unsigned long mask;int i;if (direction ==SDW_DATA_DIR_TX ) { - num_ports =hweight32 (slave->prop.source_ports); + mask = slave->prop.source_ports; dpn_prop = slave->prop.src_dpn_prop; }else { - num_ports =hweight32 (slave->prop.sink_ports); + mask = slave->prop.sink_ports; dpn_prop = slave->prop.sink_dpn_prop; } -for (i =0 ; i < num_ports; i++) { +for_each_set_bit (i, &mask,32 ) {if (dpn_prop[i].num == port_num)return &dpn_prop[i]; }
drivers/ssb/main.c +1 -1
@@ -835,7 +835,7 @@ static u32 clkfactor_f6_resolve(u32 v)case SSB_CHIPCO_CLK_F6_7 :return 7 ; } -return 0 ; +return 1 ; }/* Calculate the speed the backplane would run at a given set of clockcontrol values */
drivers/staging/iio/resolver/ad2s1210.c +4 -3
@@ -658,9 +658,6 @@ static int ad2s1210_probe(struct spi_device *spi)if (!indio_dev)return -ENOMEM ; st =iio_priv (indio_dev); - ret =ad2s1210_setup_gpios (st); -if (ret <0 ) -return ret;spi_set_drvdata (spi, indio_dev);
@@ -671,6 +668,10 @@ static int ad2s1210_probe(struct spi_device *spi) st->resolution =12 ; st->fexcit =AD2S1210_DEF_EXCIT ; + ret =ad2s1210_setup_gpios (st); +if (ret <0 ) +return ret; + indio_dev->info = &ad2s1210_info; indio_dev->modes =INDIO_DIRECT_MODE ; indio_dev->channels = ad2s1210_channels;
drivers/staging/ks7010/ks7010_sdio.c +2 -2
@@ -395,9 +395,9 @@ int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, priv->hostt.buff[priv->hostt.qtail] =le16_to_cpu (hdr->event); priv->hostt.qtail = (priv->hostt.qtail +1 ) %SME_EVENT_BUFF_SIZE ; -spin_lock (&priv->tx_dev.tx_dev_lock); +spin_lock_bh (&priv->tx_dev.tx_dev_lock); result =enqueue_txdev (priv, p, size, complete_handler, skb); -spin_unlock (&priv->tx_dev.tx_dev_lock); +spin_unlock_bh (&priv->tx_dev.tx_dev_lock);if (txq_has_space (priv))queue_delayed_work (priv->wq, &priv->rw_dwork,0 );
drivers/thunderbolt/switch.c +1 -0
@@ -2584,6 +2584,7 @@ void tb_switch_remove(struct tb_switch *sw)tb_switch_remove (port->remote->sw); port->remote =NULL ; }else if (port->xdomain) { + port->xdomain->is_unplugged = true;tb_xdomain_remove (port->xdomain); port->xdomain =NULL ; }
drivers/usb/class/cdc-acm.c +3 -0
@@ -1757,6 +1757,9 @@ static const struct usb_device_id acm_ids[] = { { USB_DEVICE(0x11ca, 0x0201), /* VeriFone Mx870 Gadget Serial */ .driver_info =SINGLE_RX_URB , }, + { USB_DEVICE(0x1901, 0x0006), /* GE Healthcare Patient Monitor UI Controller */ + .driver_info = DISABLE_ECHO, /* DISABLE ECHO in termios flag */ + }, { USB_DEVICE(0x1965, 0x0018), /* Uniden UBC125XLT */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ },
drivers/usb/core/sysfs.c +1 -0
@@ -667,6 +667,7 @@ static int add_power_attributes(struct device *dev)static void remove_power_attributes (struct device *dev) { +sysfs_unmerge_group (&dev->kobj, &usb3_hardware_lpm_attr_group);sysfs_unmerge_group (&dev->kobj, &usb2_hardware_lpm_attr_group);sysfs_unmerge_group (&dev->kobj, &power_attr_group); }
drivers/usb/dwc3/core.c +21 -0
@@ -430,6 +430,13 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)static int dwc3_alloc_event_buffers (struct dwc3 *dwc,unsigned length) {struct dwc3_event_buffer *evt; +unsigned int hw_mode; + + hw_mode =DWC3_GHWPARAMS0_MODE (dwc->hwparams.hwparams0); +if (hw_mode ==DWC3_GHWPARAMS0_MODE_HOST ) { + dwc->ev_buf =NULL ; +return 0 ; + } evt =dwc3_alloc_one_event_buffer (dwc, length);if (IS_ERR (evt)) {
@@ -451,6 +458,9 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc) {struct dwc3_event_buffer *evt; +if (!dwc->ev_buf) +return 0 ; + evt = dwc->ev_buf; evt->lpos =0 ; dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(0),
@@ -467,6 +477,17 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc)void dwc3_event_buffers_cleanup (struct dwc3 *dwc) {struct dwc3_event_buffer *evt; +u32 reg; + +if (!dwc->ev_buf) +return ; +/* +* Exynos platforms may not be able to access event buffer if the +* controller failed to halt on dwc3_core_exit(). +*/ + reg =dwc3_readl (dwc->regs,DWC3_DSTS ); +if (!(reg &DWC3_DSTS_DEVCTRLHLT )) +return ; evt = dwc->ev_buf;
drivers/usb/dwc3/dwc3-omap.c +3 -1
@@ -522,11 +522,13 @@ static int dwc3_omap_probe(struct platform_device *pdev)if (ret) {dev_err (dev,"failed to request IRQ #%d --> %d\n" , omap->irq, ret); - goto err1; + goto err2; }dwc3_omap_enable_irqs (omap);return 0 ; +err2: +of_platform_depopulate (dev); err1:pm_runtime_put_sync (dev);pm_runtime_disable (dev);
drivers/usb/dwc3/dwc3-st.c +7 -9
@@ -219,10 +219,8 @@ static int st_dwc3_probe(struct platform_device *pdev) dwc3_data->regmap = regmap; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"syscfg-reg" ); -if (!res) { - ret = -ENXIO ; - goto undo_platform_dev_alloc; - } +if (!res) +return -ENXIO ; dwc3_data->syscfg_reg_off = res->start;
@@ -233,8 +231,7 @@ static int st_dwc3_probe(struct platform_device *pdev)devm_reset_control_get_exclusive (dev,"powerdown" );if (IS_ERR (dwc3_data->rstc_pwrdn)) {dev_err (&pdev->dev,"could not get power controller\n" ); - ret =PTR_ERR (dwc3_data->rstc_pwrdn); - goto undo_platform_dev_alloc; +return PTR_ERR (dwc3_data->rstc_pwrdn); }/* Manage PowerDown */
@@ -269,7 +266,7 @@ static int st_dwc3_probe(struct platform_device *pdev)if (!child_pdev) {dev_err (dev,"failed to find dwc3 core device\n" ); ret = -ENODEV ; - goto err_node_put; + goto depopulate; } dwc3_data->dr_mode =usb_get_dr_mode (&child_pdev->dev);
@@ -285,6 +282,7 @@ static int st_dwc3_probe(struct platform_device *pdev) ret =st_dwc3_drd_init (dwc3_data);if (ret) {dev_err (dev,"drd initialisation failed\n" ); +of_platform_depopulate (dev); goto undo_softreset; }
@@ -294,14 +292,14 @@ static int st_dwc3_probe(struct platform_device *pdev)platform_set_drvdata (pdev, dwc3_data);return 0 ; +depopulate: +of_platform_depopulate (dev); err_node_put:of_node_put (child); undo_softreset:reset_control_assert (dwc3_data->rstc_rst); undo_powerdown:reset_control_assert (dwc3_data->rstc_pwrdn); -undo_platform_dev_alloc: -platform_device_put (pdev);return ret; }
drivers/usb/gadget/udc/fsl_udc_core.c +1 -1
@@ -2501,7 +2501,7 @@ static int fsl_udc_probe(struct platform_device *pdev)/* setup the udc->eps[] for non-control endpoints and link * to gadget.ep_list */ for (i =1 ; i < (int )(udc_controller->max_ep /2 ); i++) { -char name[14 ]; +char name[16 ];sprintf (name,"ep%dout" , i);struct_ep_setup (udc_controller, i *2 , name,1 );
drivers/usb/host/xhci.c +5 -3
@@ -2826,7 +2826,7 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci, xhci->num_active_eps);return -ENOMEM ; } -if ((xhci->quirks &XHCI_SW_BW_CHECKING ) && +if ((xhci->quirks &XHCI_SW_BW_CHECKING ) && !ctx_change &&xhci_reserve_bandwidth (xhci, virt_dev, command->in_ctx)) {if ((xhci->quirks &XHCI_EP_LIMIT_QUIRK ))xhci_free_host_resources (xhci, ctrl_ctx);
@@ -4242,8 +4242,10 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,mutex_unlock (&xhci->mutex); ret =xhci_disable_slot (xhci, udev->slot_id);xhci_free_virt_device (xhci, udev->slot_id); -if (!ret) -xhci_alloc_dev (hcd, udev); +if (!ret) { +if (xhci_alloc_dev (hcd, udev) ==1 ) +xhci_setup_addressable_virt_dev (xhci, udev); + }kfree (command->completion);kfree (command);return -EPROTO ;
drivers/usb/serial/option.c +5 -0
@@ -619,6 +619,8 @@ static void option_instat_callback(struct urb *urb);/* MeiG Smart Technology products */ #define MEIGSMART_VENDOR_ID 0x2dee +/* MeiG Smart SRM825L based on Qualcomm 315 */ +#define MEIGSMART_PRODUCT_SRM825L 0x4d22/* MeiG Smart SLM320 based on UNISOC UIS8910 */ #define MEIGSMART_PRODUCT_SLM320 0x4d41
@@ -2366,6 +2368,9 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x60) }, { } /* Terminating entry */ };MODULE_DEVICE_TABLE (usb, option_ids);
fs/binfmt_elf.c +4 -1
@@ -186,6 +186,7 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,unsigned char k_rand_bytes[16 ];int items;elf_addr_t *elf_info; +elf_addr_t flags =0 ;int ei_index;const struct cred *cred =current_cred ();struct vm_area_struct *vma;
@@ -260,7 +261,9 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,NEW_AUX_ENT (AT_PHENT ,sizeof (struct elf_phdr ));NEW_AUX_ENT (AT_PHNUM , exec->e_phnum);NEW_AUX_ENT (AT_BASE , interp_load_addr); -NEW_AUX_ENT (AT_FLAGS ,0 ); +if (bprm->interp_flags &BINPRM_FLAGS_PRESERVE_ARGV0 ) + flags |=AT_FLAGS_PRESERVE_ARGV0 ; +NEW_AUX_ENT (AT_FLAGS , flags);NEW_AUX_ENT (AT_ENTRY , e_entry);NEW_AUX_ENT (AT_UID ,from_kuid_munged (cred->user_ns, cred->uid));NEW_AUX_ENT (AT_EUID ,from_kuid_munged (cred->user_ns, cred->euid));
fs/binfmt_elf_fdpic.c +5 -2
@@ -320,7 +320,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)else executable_stack =EXSTACK_DEFAULT ; -if (stack_size ==0 ) { +if (stack_size ==0 && interp_params.flags &ELF_FDPIC_FLAG_PRESENT ) { stack_size = interp_params.stack_size;if (interp_params.flags &ELF_FDPIC_FLAG_EXEC_STACK ) executable_stack =EXSTACK_ENABLE_X ;
@@ -506,6 +506,7 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,char __user *u_platform, *u_base_platform, *p;int loop;int nr;/* reset for each csp adjustment */ +unsigned long flags =0 ;#ifdef CONFIG_MMU /* In some cases (e.g. Hyper-Threading), we want to avoid L1 evictions
@@ -648,7 +649,9 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,NEW_AUX_ENT (AT_PHENT ,sizeof (struct elf_phdr ));NEW_AUX_ENT (AT_PHNUM , exec_params->hdr.e_phnum);NEW_AUX_ENT (AT_BASE , interp_params->elfhdr_addr); -NEW_AUX_ENT (AT_FLAGS ,0 ); +if (bprm->interp_flags &BINPRM_FLAGS_PRESERVE_ARGV0 ) + flags |=AT_FLAGS_PRESERVE_ARGV0 ; +NEW_AUX_ENT (AT_FLAGS , flags);NEW_AUX_ENT (AT_ENTRY , exec_params->entry_addr);NEW_AUX_ENT (AT_UID , (elf_addr_t )from_kuid_munged (cred->user_ns, cred->uid));NEW_AUX_ENT (AT_EUID , (elf_addr_t )from_kuid_munged (cred->user_ns, cred->euid));
fs/binfmt_misc.c +171 -49
321 lines not on this page · raw message
fs/btrfs/delayed-inode.c +1 -1
@@ -986,7 +986,7 @@ static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)if (delayed_node &&test_bit (BTRFS_DELAYED_NODE_INODE_DIRTY , &delayed_node->flags)) { -BUG_ON (!delayed_node->root); +ASSERT (delayed_node->root);clear_bit (BTRFS_DELAYED_NODE_INODE_DIRTY , &delayed_node->flags); delayed_node->count--;
fs/btrfs/free-space-cache.c +4 -4
@@ -1755,9 +1755,9 @@ static void bitmap_clear_bits(struct btrfs_free_space_ctl *ctl, ctl->free_space -= bytes; } -static void bitmap_set_bits (struct btrfs_free_space_ctl *ctl, -struct btrfs_free_space *info,u64 offset, -u64 bytes) +static void btrfs_bitmap_set_bits (struct btrfs_free_space_ctl *ctl, +struct btrfs_free_space *info,u64 offset, +u64 bytes) {unsigned long start, count, end;int extent_delta =1 ;
@@ -2077,7 +2077,7 @@ static u64 add_bytes_to_bitmap(struct btrfs_free_space_ctl *ctl, bytes_to_set =min (end - offset, bytes); -bitmap_set_bits (ctl, info, offset, bytes_to_set); +btrfs_bitmap_set_bits (ctl, info, offset, bytes_to_set);/* * We set some bytes, we have no idea what the max extent size is
fs/btrfs/inode.c +8 -1
@@ -3918,7 +3918,14 @@ static noinline int may_destroy_subvol(struct btrfs_root *root) ret =btrfs_search_slot (NULL , fs_info->tree_root, &key, path,0 ,0 );if (ret <0 ) goto out; -BUG_ON (ret ==0 ); +if (ret ==0 ) { +/* +* Key with offset -1 found, there would have to exist a root +* with such id, but this is out of valid range. +*/ + ret = -EUCLEAN ; + goto out; + } ret =0 ;if (path->slots[0 ] >0 ) {
fs/btrfs/qgroup.c +0 -2
@@ -2658,8 +2658,6 @@ int btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, u64 bytenr,if (nr_old_roots ==0 && nr_new_roots ==0 ) goto out_free; -BUG_ON (!fs_info->quota_root); -trace_btrfs_qgroup_account_extent (fs_info, trans->transid, bytenr, num_bytes, nr_old_roots, nr_new_roots);
fs/btrfs/send.c +6 -1
@@ -685,7 +685,12 @@ static int begin_cmd(struct send_ctx *sctx, int cmd)if (WARN_ON (!sctx->send_buf))return -EINVAL ; -BUG_ON (sctx->send_size); +if (unlikely (sctx->send_size !=0 )) { +btrfs_err (sctx->send_root->fs_info, +"send: command header buffer not empty cmd %d offset %llu" , + cmd, sctx->send_off); +return -EINVAL ; + } sctx->send_size +=sizeof (*hdr); hdr = (struct btrfs_cmd_header *)sctx->send_buf;
fs/btrfs/tree-checker.c +69 -0
81 lines not on this page · raw message
fs/ext4/extents.c +2 -1
@@ -3399,9 +3399,10 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,struct ext4_extent *ex, *abut_ex;ext4_lblk_t ee_block, eof_block;unsigned int ee_len, depth, map_len = map->m_len; -int allocated =0 , max_zeroout =0 ;int err =0 ;int split_flag =EXT4_EXT_DATA_VALID2 ; +int allocated =0 ; +unsigned int max_zeroout =0 ;ext_debug (inode,"logical block %llu, max_blocks %u\n" , (unsigned long long )map->m_lblk, map_len);
fs/ext4/mballoc.c +3 -0
@@ -5955,6 +5955,9 @@ static int ext4_try_to_trim_range(struct super_block *sb,bool set_trimmed = false;void *bitmap; +if (unlikely (EXT4_MB_GRP_BBITMAP_CORRUPT (e4b->bd_info))) +return 0 ; + last =ext4_last_grp_cluster (sb, e4b->bd_group); bitmap = e4b->bd_bitmap;if (start ==0 && max >= last)
fs/f2fs/segment.c +3 -2
@@ -2215,6 +2215,8 @@ static void update_sit_entry(struct f2fs_sb_info *sbi, block_t blkaddr, int del)#endif segno =GET_SEGNO (sbi, blkaddr); +if (segno ==NULL_SEGNO ) +return ; se =get_seg_entry (sbi, segno); new_vblocks = se->valid_blocks + del;
@@ -3391,8 +3393,7 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,* since SSR needs latest valid block information. */ update_sit_entry (sbi, *new_blkaddr,1 ); -if (GET_SEGNO (sbi, old_blkaddr) !=NULL_SEGNO ) -update_sit_entry (sbi, old_blkaddr,-1 ); +update_sit_entry (sbi, old_blkaddr,-1 );if (!__has_curseg_space (sbi, curseg)) {if (from_gc)
fs/file.c +13 -17
@@ -46,27 +46,23 @@ static void free_fdtable_rcu(struct rcu_head *rcu)#define BITBIT_NR (nr) BITS_TO_LONGS(BITS_TO_LONGS(nr))#define BITBIT_SIZE (nr) (BITBIT_NR(nr) * sizeof(long)) +#define fdt_words (fdt) ((fdt)->max_fds / BITS_PER_LONG) // words in ->open_fds/* * Copy 'count' fd bits from the old table to the new table and clear the extra * space if any. This does not copy the file pointers. Called with the files * spinlock held for write. */ -static void copy_fd_bitmaps (struct fdtable *nfdt,struct fdtable *ofdt, -unsigned int count) +static inline void copy_fd_bitmaps (struct fdtable *nfdt,struct fdtable *ofdt, +unsigned int copy_words) { -unsigned int cpy, set; - - cpy = count /BITS_PER_BYTE ; - set = (nfdt->max_fds - count) /BITS_PER_BYTE ; -memcpy (nfdt->open_fds, ofdt->open_fds, cpy); -memset ((char *)nfdt->open_fds + cpy,0 , set); -memcpy (nfdt->close_on_exec, ofdt->close_on_exec, cpy); -memset ((char *)nfdt->close_on_exec + cpy,0 , set); - - cpy =BITBIT_SIZE (count); - set =BITBIT_SIZE (nfdt->max_fds) - cpy; -memcpy (nfdt->full_fds_bits, ofdt->full_fds_bits, cpy); -memset ((char *)nfdt->full_fds_bits + cpy,0 , set); +unsigned int nwords =fdt_words (nfdt); + +bitmap_copy_and_extend (nfdt->open_fds, ofdt->open_fds, + copy_words *BITS_PER_LONG , nwords *BITS_PER_LONG ); +bitmap_copy_and_extend (nfdt->close_on_exec, ofdt->close_on_exec, + copy_words *BITS_PER_LONG , nwords *BITS_PER_LONG ); +bitmap_copy_and_extend (nfdt->full_fds_bits, ofdt->full_fds_bits, + copy_words, nwords); }/*
@@ -84,7 +80,7 @@ static void copy_fdtable(struct fdtable *nfdt, struct fdtable *ofdt)memcpy (nfdt->fd, ofdt->fd, cpy);memset ((char *)nfdt->fd + cpy,0 , set); -copy_fd_bitmaps (nfdt, ofdt, ofdt->max_fds); +copy_fd_bitmaps (nfdt, ofdt,fdt_words (ofdt)); }/*
@@ -374,7 +370,7 @@ struct files_struct *dup_fd(struct files_struct *oldf, unsigned int max_fds, int open_files =sane_fdtable_size (old_fdt, max_fds); } -copy_fd_bitmaps (new_fdt, old_fdt, open_files); +copy_fd_bitmaps (new_fdt, old_fdt, open_files /BITS_PER_LONG ); old_fds = old_fdt->fd; new_fds = new_fdt->fd;
fs/fuse/dev.c +4 -2
@@ -1627,9 +1627,11 @@ static int fuse_notify_store(struct fuse_conn *fc, unsigned int size, this_num =min_t (unsigned, num,PAGE_SIZE - offset); err =fuse_copy_page (cs, &page, offset, this_num,0 ); -if (!err && offset ==0 && - (this_num ==PAGE_SIZE || file_size == end)) +if (!PageUptodate (page) && !err && offset ==0 && + (this_num ==PAGE_SIZE || file_size == end)) { +zero_user_segment (page, this_num,PAGE_SIZE );SetPageUptodate (page); + }unlock_page (page);put_page (page);
fs/fuse/virtio_fs.c +10 -0
@@ -315,6 +315,16 @@ static int virtio_fs_read_tag(struct virtio_device *vdev, struct virtio_fs *fs)return -ENOMEM ;memcpy (fs->tag, tag_buf, len); fs->tag[len] ='\0' ; + +/* While the VIRTIO specification allows any character, newlines are +* awkward on mount(8) command-lines and cause problems in the sysfs +* "tag" attr and uevent TAG= properties. Forbid them. +*/ +if (strchr (fs->tag,'\n' )) { +dev_dbg (&vdev->dev,"refusing virtiofs tag with newline character\n" ); +return -EINVAL ; + } +return 0 ; }
fs/gfs2/inode.c +1 -1
@@ -1905,7 +1905,7 @@ static int setattr_chown(struct inode *inode, struct iattr *attr)kuid_t ouid, nuid;kgid_t ogid, ngid;int error; -struct gfs2_alloc_parms ap; +struct gfs2_alloc_parms ap = {};
Lines of this file are not shown. View the raw message.
net/bluetooth/smp.c +72 -72
144 lines not on this page · raw message
net/sched/sch_netem.c +29 -18
47 lines not on this page · raw message
tools/testing/selftests/core/close_range_test.c +35 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tdc.py +0 -1
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.