Linux 5.4.273
Sasha Levin
maintainer-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I'm announcing the release of the 5.4.273 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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,
Sasha
- ------------
Documentation/media/kapi/v4l2-dev.rst | 4 +- .../zh_CN/video4linux/v4l2-framework.txt | 4 +- Makefile | 2 +- arch/arm/boot/dts/arm-realview-pb1176.dts | 2 +- arch/arm/boot/dts/imx6dl-yapp4-common.dtsi | 28 +- .../boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts | 24 + arch/arm/crypto/sha256_glue.c | 13 +- arch/arm/crypto/sha512-glue.c | 12 +- .../boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | 1 + arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | 1 + arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 783 +++++++++++---------- arch/arm64/boot/dts/qcom/msm8996.dtsi | 192 ++--- arch/mips/include/asm/ptrace.h | 1 + arch/parisc/kernel/ftrace.c | 2 +- arch/powerpc/perf/hv-gpci.c | 29 +- arch/powerpc/platforms/embedded6xx/linkstation.c | 3 - arch/powerpc/platforms/embedded6xx/mpc10x.h | 3 + arch/s390/kernel/vtime.c | 4 +- arch/sparc/kernel/leon_pci_grpci1.c | 2 +- arch/sparc/kernel/leon_pci_grpci2.c | 2 +- arch/x86/tools/relocs.c | 8 + arch/x86/xen/smp.c | 12 + block/opal_proto.h | 1 + block/sed-opal.c | 6 +- drivers/acpi/processor_idle.c | 2 + drivers/acpi/scan.c | 8 +- drivers/base/regmap/regmap.c | 2 +- drivers/block/aoe/aoecmd.c | 12 +- drivers/block/aoe/aoenet.c | 1 + drivers/block/nbd.c | 6 + drivers/bus/Kconfig | 5 +- drivers/clk/clk.c | 3 + drivers/clk/hisilicon/clk-hi3519.c | 2 +- drivers/clk/qcom/dispcc-sdm845.c | 2 + drivers/clk/qcom/reset.c | 33 +- drivers/clk/qcom/reset.h | 2 + drivers/dma/Kconfig | 14 +- drivers/firewire/core-card.c | 14 +- drivers/gpu/drm/amd/amdgpu/atom.c | 2 +- .../drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 7 +- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 12 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 10 +- .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 6 +- drivers/gpu/drm/radeon/ni.c | 2 +- drivers/gpu/drm/rockchip/inno_hdmi.c | 4 +- drivers/gpu/drm/rockchip/rockchip_lvds.c | 1 - drivers/gpu/drm/tegra/dsi.c | 49 +- drivers/gpu/drm/tegra/fb.c | 1 + drivers/gpu/drm/tegra/output.c | 16 +- drivers/gpu/host1x/mipi.c | 4 +- drivers/hid/hid-multitouch.c | 4 + drivers/infiniband/core/device.c | 37 +- drivers/infiniband/hw/mlx5/devx.c | 2 +- drivers/input/keyboard/gpio_keys_polled.c | 10 +- drivers/iommu/amd_iommu_init.c | 3 + drivers/md/dm-crypt.c | 4 +- drivers/md/dm-raid.c | 4 +- drivers/md/dm-verity.h | 4 +- drivers/md/dm.c | 26 +- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 52 +- drivers/media/dvb-core/dvbdev.c | 5 + drivers/media/dvb-frontends/stv0367.c | 34 +- drivers/media/i2c/tc358743.c | 7 +- drivers/media/pci/bt8xx/bttv-driver.c | 4 +- drivers/media/pci/cobalt/cobalt-v4l2.c | 2 +- drivers/media/pci/cx18/cx18-streams.c | 12 +- drivers/media/pci/cx23885/cx23885-417.c | 2 +- drivers/media/pci/cx23885/cx23885-video.c | 2 +- drivers/media/pci/cx25821/cx25821-video.c | 2 +- drivers/media/pci/cx88/cx88-blackbird.c | 2 +- drivers/media/pci/cx88/cx88-video.c | 2 +- drivers/media/pci/dt3155/dt3155.c | 2 +- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 2 +- drivers/media/pci/ivtv/ivtv-streams.c | 12 +- drivers/media/pci/meye/meye.c | 2 +- drivers/media/pci/saa7134/saa7134-core.c | 2 +- drivers/media/pci/saa7134/saa7134-empress.c | 2 +- drivers/media/pci/saa7146/hexium_gemini.c | 2 +- drivers/media/pci/saa7146/hexium_orion.c | 2 +- drivers/media/pci/saa7146/mxb.c | 2 +- drivers/media/pci/saa7164/saa7164-encoder.c | 2 +- drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c | 2 +- drivers/media/pci/solo6x10/solo6x10-v4l2.c | 2 +- drivers/media/pci/sta2x11/sta2x11_vip.c | 2 +- drivers/media/pci/ttpci/av7110_v4l.c | 2 +- drivers/media/pci/ttpci/budget-av.c | 10 +- drivers/media/pci/tw5864/tw5864-video.c | 2 +- drivers/media/pci/tw68/tw68-video.c | 2 +- drivers/media/pci/tw686x/tw686x-video.c | 2 +- drivers/media/usb/em28xx/em28xx-cards.c | 4 + drivers/media/usb/go7007/go7007-driver.c | 8 +- drivers/media/usb/go7007/go7007-usb.c | 4 +- drivers/media/usb/pvrusb2/pvrusb2-context.c | 10 +- drivers/media/usb/pvrusb2/pvrusb2-dvb.c | 6 +- drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 11 +- drivers/media/v4l2-core/v4l2-dev.c | 68 +- drivers/media/v4l2-core/v4l2-ioctl.c | 16 +- drivers/media/v4l2-core/v4l2-mem2mem.c | 10 +- drivers/mfd/altera-sysmgr.c | 4 +- drivers/mfd/syscon.c | 4 +- drivers/mmc/host/wmt-sdmmc.c | 4 - drivers/mtd/maps/physmap-core.c | 2 +- drivers/mtd/nand/raw/lpc32xx_mlc.c | 5 +- drivers/net/ethernet/amazon/ena/ena_com.c | 8 +- drivers/net/ethernet/amazon/ena/ena_netdev.c | 20 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 6 +- .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 5 +- drivers/net/ethernet/intel/igb/igb_main.c | 112 ++- drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 2 +- drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 17 +- .../net/ethernet/netronome/nfp/flower/lag_conf.c | 5 + drivers/net/usb/sr9800.c | 4 +- drivers/net/wireless/ath/ath10k/wmi-tlv.c | 4 + drivers/net/wireless/broadcom/b43/b43.h | 16 + drivers/net/wireless/broadcom/b43/dma.c | 8 +- drivers/net/wireless/broadcom/b43/main.c | 22 +- drivers/net/wireless/broadcom/b43/pio.c | 6 +- .../broadcom/brcm80211/brcmsmac/phy/phy_cmn.c | 3 +- .../broadcom/brcm80211/brcmsmac/phy_shim.c | 5 +- .../broadcom/brcm80211/brcmsmac/phy_shim.h | 2 +- drivers/net/wireless/marvell/libertas/cmd.c | 13 +- drivers/net/wireless/marvell/mwifiex/debugfs.c | 3 - drivers/pci/pcie/dpc.c | 2 +- drivers/pci/quirks.c | 1 + drivers/pci/switch/switchtec.c | 4 +- drivers/rtc/Kconfig | 3 +- drivers/scsi/bfa/bfa.h | 9 +- drivers/scsi/bfa/bfa_core.c | 4 +- drivers/scsi/bfa/bfa_ioc.h | 8 +- drivers/scsi/bfa/bfad_bsg.c | 11 +- drivers/scsi/csiostor/csio_defs.h | 18 +- drivers/scsi/csiostor/csio_lnode.c | 8 +- drivers/scsi/csiostor/csio_lnode.h | 13 - drivers/scsi/mpt3sas/mpt3sas_base.c | 4 +- drivers/spi/spi-mt65xx.c | 22 +- drivers/staging/greybus/light.c | 8 +- drivers/staging/media/imx/imx-media-csc-scaler.c | 1 + drivers/staging/wilc1000/wilc_hif.c | 40 +- drivers/tty/serial/8250/8250_exar.c | 5 +- drivers/tty/serial/max310x.c | 2 +- drivers/tty/serial/samsung.c | 5 +- drivers/tty/vt/vt.c | 2 +- drivers/usb/gadget/udc/net2272.c | 2 +- drivers/video/backlight/da9052_bl.c | 1 + drivers/video/backlight/lm3630a_bl.c | 15 +- drivers/video/backlight/lm3639_bl.c | 1 + drivers/video/backlight/lp8788_bl.c | 1 + drivers/watchdog/stm32_iwdg.c | 3 + fs/afs/dir.c | 10 - fs/btrfs/block-rsv.c | 2 +- fs/btrfs/block-rsv.h | 16 + fs/fhandle.c | 2 +- fs/io_uring.c | 65 +- fs/nfs/nfsroot.c | 4 +- fs/quota/dquot.c | 226 +++--- fs/select.c | 2 +- include/drm/drm_fixed.h | 2 +- include/linux/filter.h | 24 +- include/linux/fs.h | 6 +- include/linux/host1x.h | 3 +- include/linux/poll.h | 4 - include/linux/rcupdate.h | 31 + include/media/v4l2-dev.h | 6 +- kernel/bpf/cpumap.c | 3 + kernel/bpf/hashtab.c | 14 +- kernel/bpf/helpers.c | 18 +- kernel/bpf/stackmap.c | 9 +- kernel/time/timekeeping.c | 24 +- lib/test_blackhole_dev.c | 3 +- net/bluetooth/hci_core.c | 2 +- net/bluetooth/hci_event.c | 2 - net/bluetooth/rfcomm/core.c | 2 +- net/core/dev.c | 2 +- net/core/scm.c | 2 +- net/core/sock_diag.c | 10 +- net/hsr/hsr_framereg.c | 4 + net/hsr/hsr_main.c | 15 +- net/ipv4/ip_tunnel.c | 15 +- net/ipv4/tcp.c | 4 +- net/ipv4/udp.c | 4 +- net/ipv6/fib6_rules.c | 6 + net/iucv/iucv.c | 4 +- net/kcm/kcmsock.c | 3 +- net/l2tp/l2tp_ppp.c | 4 +- net/netfilter/nf_tables_api.c | 2 +- net/packet/af_packet.c | 4 +- net/rds/send.c | 5 +- net/sunrpc/addr.c | 4 +- net/sunrpc/auth_gss/gss_rpc_xdr.c | 27 +- net/unix/garbage.c | 2 +- net/unix/scm.c | 4 +- net/x25/af_x25.c | 4 +- samples/v4l/v4l2-pci-skeleton.c | 2 +- scripts/kconfig/lexer.l | 7 +- sound/core/seq/seq_midi.c | 8 +- sound/core/seq/seq_virmidi.c | 9 +- sound/soc/codecs/rt5645.c | 10 + sound/soc/codecs/wm8962.c | 29 +- sound/soc/intel/boards/bytcr_rt5640.c | 12 + sound/soc/meson/axg-tdm-interface.c | 4 +- sound/usb/stream.c | 5 +- tools/perf/builtin-record.c | 2 +- tools/perf/util/evsel.c | 1 - tools/perf/util/stat-display.c | 2 +- tools/perf/util/thread_map.c | 2 +- tools/testing/selftests/net/tls.c | 8 +- 206 files changed, 1642 insertions(+), 1307 deletions(-)
Alban Boyé (1):
ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet
Alex Bee (1):
drm/rockchip: inno_hdmi: Fix video timing
Alexander Gordeev (1):
net/iucv: fix the allocation size of iucv_path_table array
Alexander Stein (1):
media: tc358743: register v4l2 async device only after successful setup
Alexei Starovoitov (2):
bpf: Add typecast to bpf helpers to help BTF generation
bpf: Factor out bpf_spin_lock into helpers.
Alexis Lothoré (2):
wifi: wilc1000: fix declarations ordering
wifi: wilc1000: fix RCU usage in connect path
Andy Shevchenko (1):
serial: 8250_exar: Don't remove GPIO device on suspend
AngeloGioacchino Del Regno (1):
drm/mediatek: dsi: Fix DSI RGB666 formats and definitions
Armin Wolf (1):
ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit()
Arnd Bergmann (8):
fs/select: rework stack allocation hack for clang
wifi: brcmsmac: avoid function pointer casts
media: pvrusb2: fix pvr2_stream_callback casts
crypto: arm/sha - fix function cast warnings
mtd: rawnand: lpc32xx_mlc: fix irq handler prototype
media: dvb-frontends: avoid stack overflow warnings with clang
scsi: csiostor: Avoid function pointer casts
scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn
Arthur Kiyanovski (1):
net: ena: cosmetic: fix line break issues
Baokun Li (1):
quota: simplify drop_dquot_ref()
Baruch Siach (1):
mtd: maps: physmap-core: fix flash size larger than 32-bit
Ben Wolsieffer (1):
watchdog: stm32_iwdg: initialize default timeout
Bjorn Andersson (4):
arm64: dts: qcom: db820c: Move non-soc entries out of /soc
arm64: dts: qcom: msm8996: Use node references in db820c
arm64: dts: qcom: msm8996: Move regulator consumers to db820c
arm64: dts: qcom: msm8996: Pad addresses
Breno Leitao (1):
net: blackhole_dev: fix build warning for ethh set but not used
Bryan O'Donoghue (1):
clk: Fix clk_core_get NULL dereference
Cai Huoqing (1):
drm/tegra: dsi: Make use of the helper function dev_err_probe()
Chen Ni (2):
sr9800: Add check for usbnet_get_endpoints drm/tegra: dsi: Add missing check for of_find_device_by_node
Christophe JAILLET (8):
mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe()
drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path of tegra_dsi_probe() drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths of tegra_output_probe()
PCI: switchtec: Fix an error handling path in switchtec_pci_probe()
clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister()
net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr()
NFS: Fix an off by one in root_nfs_cat()
Chun-Yi Lee (1):
aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts
Colin Ian King (1):
usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin
Dan Carpenter (1):
staging: greybus: fix get_channel_from_mode() failure path
Daniel Thompson (3):
backlight: da9052: Fully initialize backlight_properties during probe
backlight: lm3639: Fully initialize backlight_properties during probe
backlight: lp8788: Fully initialize backlight_properties during probe
Daniil Dulov (2):
media: go7007: add check of return value of go7007_read_addr()
media: pvrusb2: remove redundant NULL check
David Howells (1):
afs: Revert "afs: Hide silly-rename files from userspace"
Duoming Zhou (1):
nfp: flower: handle acti_netdevs allocation failure
Edward Adam Davis (1):
media: pvrusb2: fix uaf in pvr2_context_set_notify
Eric Dumazet (3):
sock_diag: annotate data-races around sock_diag_handlers[family]
net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv()
packet: annotate data-races around ignore_outgoing
Fedor Pchelkin (1):
drm/tegra: put drm_gem_object ref on error in tegra_fb_create
Fei Shao (1):
spi: spi-mt65xx: Fix NULL pointer access in interrupt handler
Felix Maurer (1):
hsr: Handle failures in module init
Filipe Manana (1):
btrfs: fix data race at btrfs_use_block_rsv() when accessing block reserve
Gavrilov Ilia (5):
tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function
l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function
udp: fix incorrect parameter validation in the udp_lib_getsockopt() function
net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function net/x25: fix incorrect parameter validation in the x25_getsockopt() function
Geert Uytterhoeven (1):
ARM: dts: arm: realview: Fix development chip ROM compatible value
Greg Joyce (1):
block: sed-opal: handle empty atoms when parsing response
Hans Verkuil (2):
media: rename VFL_TYPE_GRABBER to _VIDEO
media: media/pci: rename VFL_TYPE_GRABBER to _VIDEO
Hans de Goede (1):
ASoC: rt5645: Make LattePanda board DMI match more precise
Harry Wentland (1):
drm: Don't treat 0 as -1 in drm_fixp2int_ceil
Hsin-Yi Wang (1):
drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip
Hugo Villeneuve (1):
serial: max310x: fix syntax error in IRQ error message
Ian Rogers (1):
perf stat: Avoid metric-only segv
Ilpo Järvinen (1):
PCI/DPC: Print all TLP Prefixes, not just the first
Jakub Kicinski (1):
selftests: tls: use exact comparison in recv_partial
Jan Kara (1):
quota: Fix rcu annotations of inode dquot pointers
Jens Axboe (2):
io_uring/unix: drop usage of io_uring socket
io_uring: drop any code related to SCM_RIGHTS
Jerome Brunet (1):
ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs
Jiaxun Yang (1):
MIPS: Clear Cause.BD in instruction_pointer_set
Jie Wang (1):
net: hns3: fix port duplex configure error in IMP reset
Jinjie Ruan (1):
wifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir()
Jiri Slaby (SUSE) (1):
tty: vt: fix 20 vs 0x20 typo in EScsiignore
Johan Carlsson (1):
ALSA: usb-audio: Stop parsing channels bits when all channels are found.
Jonas Dreßler (1):
Bluetooth: Remove superfluous call to hci_conn_check_pending()
Jörg Wedekind (1):
PCI: Mark 3ware-9650SE Root Port Extended Tags as broken
Kajol Jain (1):
powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks
Kamal Heib (1):
net: ena: Remove ena_select_queue
Kees Cook (1):
x86, relocs: Ignore relocations in .notes section
Konrad Dybcio (3):
clk: qcom: reset: Commonize the de/assert functions
clk: qcom: reset: Ensure write completion on reset de/assertion
clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times
Kuniyuki Iwashima (1):
af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc().
Kunwu Chan (1):
x86/xen: Add some null pointer checking to smp.c
Linu Cherian (1):
octeontx2-af: Use matching wake_up API variant in CGX command interface
Luca Weiss (2):
backlight: lm3630a: Initialize backlight_properties on init
backlight: lm3630a: Don't set bl->props.brightness in get_brightness
Lucas Stach (1):
media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak
Luiz Augusto von Dentz (1):
Bluetooth: hci_core: Fix possible buffer overflow
Manuel Fombuena (1):
HID: multitouch: Add required quirk for Synaptics 0xcddc device
Marek Vasut (1):
regmap: Add missing map->bus check
Mario Limonciello (1):
iommu/amd: Mark interrupt as managed
Masahiro Yamada (1):
kconfig: fix infinite loop when expanding a macro at the end of file
Max Kellermann (1):
parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check
Mete Durlu (1):
s390/vtime: fix average steal time calculation
Michael Ellerman (1):
powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc.
Michael Klein (1):
ARM: dts: sun8i-h2-plus-bananapi-m2-zero: add regulator nodes vcc-dram and vcc1v2
Michal Vokáč (3):
ARM: dts: imx6dl-yapp4: Move phy reset into switch node
ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address
ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node
Mikulas Patocka (2):
dm-verity, dm-crypt: align "struct bvec_iter" correctly
dm: call the resume method on internal suspend
Ming Lei (1):
dm raid: fix false positive for requeue needed during reshape
Navid Emamdoost (1):
nbd: null check for nla_nest_start
Nikita Zhandarovich (3):
do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak
media: em28xx: annotate unchecked call to media_device_register() drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode()
Pablo Neira Ayuso (1):
netfilter: nf_tables: do not compare internal table flags on updates
Paloma Arellano (1):
drm/msm/dpu: add division of drm_display_mode's hskew parameter
Peter Griffin (2):
mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref
mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a ref
Peter Hilber (3):
timekeeping: Fix cross-timestamp interpolation on counter wrap
timekeeping: Fix cross-timestamp interpolation corner case decision
timekeeping: Fix cross-timestamp interpolation for non-x86
Peter Robinson (2):
bus: tegra-aconnect: Update dependency to ARCH_TEGRA
dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA
Quentin Schulz (1):
drm/rockchip: lvds: do not overwrite error code
Rafael J. Wysocki (1):
ACPI: scan: Fix device check notification handling
Rafał Miłecki (1):
arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes
Rahul Rameshbabu (4):
wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled
wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled
wifi: b43: Stop correct queue in DMA worker when QoS is disabled
wifi: b43: Disable QoS for bcm4331
Randy Dunlap (1):
rtc: mt6397: select IRQ_DOMAIN instead of depending on it
Ranjan Kumar (1):
scsi: mpt3sas: Prevent sending diag_reset when the controller is ready
Robert Marko (1):
clk: qcom: reset: support resetting multiple bits
Ruud Bos (1):
igb: move PEROUT and EXTTS isr logic to separate functions
Sam Ravnborg (1):
sparc32: Fix section mismatch in leon_pci_grpci
Sasha Levin (1):
Linux 5.4.273
Saurav Girepunje (2):
b43: dma: Fix use true/false for bool type variable
b43: main: Fix use true/false for bool type
Shifeng Li (1):
RDMA/device: Fix a race between mad_client and cm_client init
Shigeru Yoshida (1):
hsr: Fix uninit-value access in hsr_get_node()
Shiming Cheng (1):
ipv6: fib6_rules: flush route cache when rule is changed
Sowjanya Komatineni (1):
gpu: host1x: mipi: Update tegra_mipi_request() to be node based
Srinivasan Shanmugam (2):
drm/amd/display: Fix potential NULL pointer dereferences in 'dcn10_set_output_transfer_func()' drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int()
Stephan Gerhold (1):
clk: qcom: reset: Allow specifying custom reset delay
Stuart Henderson (3):
ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC
ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode
ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll
Subbaraya Sundeep (1):
octeontx2-af: Use separate handlers for interrupts
Takashi Iwai (1):
ALSA: seq: fix function cast warnings
Takashi Sakamoto (1):
firewire: core: use long bus reset on gap count error
Thinh Tran (1):
net/bnx2x: Prevent access to a freed page in page_pool
Toke Høiland-Jørgensen (2):
bpf: Fix hashtab overflow check on 32-bit arches
bpf: Fix stackmap overflow check on 32-bit arches
Tudor Ambarus (1):
tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT
Uwe Kleine-König (1):
Input: gpio_keys_polled - suppress deferred probe error for gpio
Vandana BN (1):
media: v4l2-core: correctly validate video and metadata ioctls
Vinicius Costa Gomes (1):
igb: Fix missing time sync events
Wang Jianjian (1):
quota: Fix potential NULL pointer dereference
Xingyuan Mo (1):
wifi: ath10k: fix NULL pointer dereference in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
Yan Zhai (2):
rcu: add a helper to report consolidated flavor QS
bpf: report RCU QS in cpumap kthread
Yang Jihong (3):
perf record: Fix possible incorrect free in record__switch_output() perf evsel: Fix duplicate initialization of data->id in evsel__parse_sample() perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str()
Yewon Choi (1):
rds: introduce acquire/release ordering in acquire/release_in_xmit()
Yishai Hadas (1):
RDMA/mlx5: Relax DEVX access upon modify commands
Yonghong Song (1):
bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly
Yuxuan Hu (1):
Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security
Zhipeng Lu (7):
wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer()
SUNRPC: fix some memleaks in gssx_dec_option_array
media: v4l2-tpg: fix some memleaks in tpg_alloc
media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity
media: edia: dvbdev: fix a use-after-free
media: go7007: fix a memleak in go7007_load_encoder
media: ttpci: fix two memleaks in budget_av_attach
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEE4n5dijQDou9mhzu83qZv95d3LNwFAmYDT8MACgkQ3qZv95d3 LNwK9RAAjTHuZCeyjfzq2wALHhpgjS8Y+RdvSgU/xzM1R+/DQHG7hk4HGYKpH+1N 4+STwwbKCtYBMRGX5FmJ0KHPCtRkait3QIYScyMyC60NdBtfeYK45aztRp5lSDqe aAx7NSwAr3zLocgoSrFKz3k3a/C8fvkF8jScjKd+hS/yNmMCtUbZj9GHn7q7Vjzh 0j9zNjAZPHOne6Qb/YRaEr37H6spDtUYCulYZBgl7H7WcIHiUjU8uDzvHSvsk+Z6 Fjt9mbhO+3SWXMOehSnNcV/SCMgFRcWeA7LlyT37CnZOEScP9anVA32kU3qODszv KT5UzgW1HmkhS1ntSL0RUCnReGcTzpYU0SBRW39kapOQDNsV0SXYya/BOqngQNHP NM7TmoCKMlHm6jnENwW7TYbK/T1rzFJkfi/Z4Y77rCKXEF5d6ESuoZmfbEb2I5Fw Ful8YKF40MqDTafZrvoz519Tdho1ElhM53/NHJvu9yFQKa+qT/G++sXVcqj1u3QR qLLr/J3fzHKntIiPIs8Nfn2AcC0WIqu324mZLx5sS3ZQsx1ODAfKCmOLxestDOIB kF8j8w+pewRP5oHtxQKK5amcLTFyLDFAJ55SvPNWsuls260VJ+7mFJ8mTIagXbuT rK8U3ANoas4JRw83n3XeihxVnQnanVMNVZ0HWKQLAhds8ab/cyw= =HSgE
-----END PGP SIGNATURE-----
Sasha Levin
maintainerDocumentation/media/kapi/v4l2-dev.rst +2 -2
@@ -185,7 +185,7 @@ This will create the character device for you. .. code-block:: c - err = video_register_device(vdev, VFL_TYPE_GRABBER, -1); + err = video_register_device(vdev, VFL_TYPE_VIDEO, -1); if (err) { video_device_release(vdev); /* or kfree(my_vdev); */ return err;
@@ -201,7 +201,7 @@ types exist: ========================== ==================== ============================== :c:type:`vfl_devnode_type` Device name Usage ========================== ==================== ============================== -``VFL_TYPE_GRABBER`` ``/dev/videoX`` for video input/output devices +``VFL_TYPE_VIDEO`` ``/dev/videoX`` for video input/output devices ``VFL_TYPE_VBI`` ``/dev/vbiX`` for vertical blank data (i.e. closed captions, teletext) ``VFL_TYPE_RADIO`` ``/dev/radioX`` for radio tuners
Documentation/translations/zh_CN/video4linux/v4l2-framework.txt +2 -2
@@ -649,7 +649,7 @@ video_device注册 接下来你需要注册视频设备:这会为你创建一个字符设备。 - err = video_register_device(vdev, VFL_TYPE_GRABBER, -1); + err = video_register_device(vdev, VFL_TYPE_VIDEO, -1); if (err) { video_device_release(vdev); /* or kfree(my_vdev); */ return err;
@@ -660,7 +660,7 @@ video_device注册 注册哪种设备是根据类型(type)参数。存在以下类型: -VFL_TYPE_GRABBER: 用于视频输入/输出设备的 videoX +VFL_TYPE_VIDEO: 用于视频输入/输出设备的 videoX VFL_TYPE_VBI: 用于垂直消隐数据的 vbiX (例如,隐藏式字幕,图文电视) VFL_TYPE_RADIO: 用于广播调谐器的 radioX
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 272 +SUBLEVEL = 273 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/arm-realview-pb1176.dts +1 -1
@@ -435,7 +435,7 @@ /* Direct-mapped development chip ROM */ pb1176_rom@10200000 { - compatible = "direct-mapped"; + compatible = "mtd-rom"; reg = <0x10200000 0x4000>; bank-width = <1>; };
arch/arm/boot/dts/imx6dl-yapp4-common.dtsi +17 -11
@@ -96,8 +96,6 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; phy-mode = "rgmii-id"; - phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>; - phy-reset-duration = <20>; phy-supply = <&sw2_reg>; status = "okay";
@@ -110,17 +108,10 @@ #address-cells = <1>; #size-cells = <0>; - phy_port2: phy@1 { - reg = <1>; - }; - - phy_port3: phy@2 { - reg = <2>; - }; - switch@10 { compatible = "qca,qca8334"; - reg = <10>; + reg = <0x10>; + reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>; switch_ports: ports { #address-cells = <1>;
@@ -141,15 +132,30 @@ port@2 { reg = <2>; label = "eth2"; + phy-mode = "internal"; phy-handle = <&phy_port2>; }; port@3 { reg = <3>; label = "eth1"; + phy-mode = "internal"; phy-handle = <&phy_port3>; }; }; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + phy_port2: ethernet-phy@1 { + reg = <1>; + }; + + phy_port3: ethernet-phy@2 { + reg = <2>; + }; + }; }; }; };
arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts +24 -0
@@ -62,6 +62,30 @@ states = <1100000 0>, <1300000 1>; }; + reg_vcc_dram: vcc-dram { + compatible = "regulator-fixed"; + regulator-name = "vcc-dram"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-boot-on; + enable-active-high; + gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */ + vin-supply = <®_vcc5v0>; + }; + + reg_vcc1v2: vcc1v2 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + enable-active-high; + gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */ + vin-supply = <®_vcc5v0>; + }; + wifi_pwrseq: wifi_pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
arch/arm/crypto/sha256_glue.c +5 -8
@@ -25,8 +25,8 @@#include "sha256_glue.h" -asmlinkage void sha256_block_data_order(u32 *digest, const void *data, -unsigned int num_blks); +asmlinkage void sha256_block_data_order(struct sha256_state *state, +const u8 *data,int num_blks);int crypto_sha256_arm_update (struct shash_desc *desc,const u8 *data,unsigned int len)
@@ -34,23 +34,20 @@ int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,/* make sure casting to sha256_block_fn() is safe */ BUILD_BUG_ON (offsetof(struct sha256_state , state) !=0 ); -return sha256_base_do_update (desc, data, len, - (sha256_block_fn *)sha256_block_data_order); +return sha256_base_do_update (desc, data, len, sha256_block_data_order); }EXPORT_SYMBOL (crypto_sha256_arm_update);static int crypto_sha256_arm_final (struct shash_desc *desc,u8 *out) { -sha256_base_do_finalize (desc, - (sha256_block_fn *)sha256_block_data_order); +sha256_base_do_finalize (desc, sha256_block_data_order);return sha256_base_finish (desc, out); }int crypto_sha256_arm_finup (struct shash_desc *desc,const u8 *data,unsigned int len,u8 *out) { -sha256_base_do_update (desc, data, len, - (sha256_block_fn *)sha256_block_data_order); +sha256_base_do_update (desc, data, len, sha256_block_data_order);return crypto_sha256_arm_final (desc, out); }EXPORT_SYMBOL (crypto_sha256_arm_finup);
arch/arm/crypto/sha512-glue.c +5 -7
@@ -25,27 +25,25 @@ MODULE_ALIAS_CRYPTO("sha512");MODULE_ALIAS_CRYPTO ("sha384-arm" );MODULE_ALIAS_CRYPTO ("sha512-arm" ); -asmlinkage void sha512_block_data_order(u64 *state, u8 const *src, int blocks); +asmlinkage void sha512_block_data_order(struct sha512_state *state, +u8 const *src,int blocks);int sha512_arm_update (struct shash_desc *desc,const u8 *data,unsigned int len) { -return sha512_base_do_update (desc, data, len, - (sha512_block_fn *)sha512_block_data_order); +return sha512_base_do_update (desc, data, len, sha512_block_data_order); }static int sha512_arm_final (struct shash_desc *desc,u8 *out) { -sha512_base_do_finalize (desc, - (sha512_block_fn *)sha512_block_data_order); +sha512_base_do_finalize (desc, sha512_block_data_order);return sha512_base_finish (desc, out); }int sha512_arm_finup (struct shash_desc *desc,const u8 *data,unsigned int len,u8 *out) { -sha512_base_do_update (desc, data, len, - (sha512_block_fn *)sha512_block_data_order); +sha512_base_do_update (desc, data, len, sha512_block_data_order);return sha512_arm_final (desc, out); }
arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +1 -0
@@ -71,6 +71,7 @@ memory@40000000 { reg = <0 0x40000000 0 0x40000000>; + device_type = "memory"; }; reg_1p8v: regulator-1p8v {
arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +1 -0
@@ -57,6 +57,7 @@ memory@40000000 { reg = <0 0x40000000 0 0x20000000>; + device_type = "memory"; }; reg_1p8v: regulator-1p8v {
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +407 -376
838 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8996.dtsi +74 -118
482 lines not on this page · raw message
arch/mips/include/asm/ptrace.h +1 -0
@@ -60,6 +60,7 @@ static inline void instruction_pointer_set(struct pt_regs *regs, unsigned long val) { regs->cp0_epc = val; + regs->cp0_cause &= ~CAUSEF_BD ; }/* Query offset/name of register from its name/offset */
arch/parisc/kernel/ftrace.c +1 -1
@@ -80,7 +80,7 @@ void notrace __hot ftrace_function_trampoline(unsigned long parent,#endif } -#ifdef CONFIG_FUNCTION_GRAPH_TRACER +#if defined(CONFIG_DYNAMIC_FTRACE ) && defined(CONFIG_FUNCTION_GRAPH_TRACER )int ftrace_enable_ftrace_graph_caller (void ) {return 0 ;
arch/powerpc/perf/hv-gpci.c +27 -2
@@ -153,6 +153,20 @@ static unsigned long single_gpci_request(u32 req, u32 starting_index, ret =plpar_hcall_norets (H_GET_PERF_COUNTER_INFO ,virt_to_phys (arg),HGPCI_REQ_BUFFER_SIZE ); + +/* +* ret value as 'H_PARAMETER' with detail_rc as 'GEN_BUF_TOO_SMALL', +* specifies that the current buffer size cannot accommodate +* all the information and a partial buffer returned. +* Since in this function we are only accessing data for a given starting index, +* we don't need to accommodate whole data and can get required count by +* accessing first entry data. +* Hence hcall fails only incase the ret value is other than H_SUCCESS or +* H_PARAMETER with detail_rc value as GEN_BUF_TOO_SMALL(0x1B). +*/ +if (ret ==H_PARAMETER &&be32_to_cpu (arg->params.detail_rc) ==0x1B ) + ret =0 ; +if (ret) {pr_devel ("hcall failed: 0x%lx\n" , ret); goto out;
@@ -217,6 +231,7 @@ static int h_gpci_event_init(struct perf_event *event) {u64 count;u8 length; +unsigned long ret;/* Not our event */ if (event->attr.type != event->pmu->type)
@@ -247,13 +262,23 @@ static int h_gpci_event_init(struct perf_event *event) }/* check if the request works... */ -if (single_gpci_request (event_get_request (event), + ret =single_gpci_request (event_get_request (event),event_get_starting_index (event),event_get_secondary_index (event),event_get_counter_info_version (event),event_get_offset (event), length, - &count)) { + &count); + +/* +* ret value as H_AUTHORITY implies that partition is not permitted to retrieve +* performance information, and required to set +* "Enable Performance Information Collection" option. +*/ +if (ret ==H_AUTHORITY ) +return -EPERM ; + +if (ret) {pr_devel ("gpci hcall failed\n" );return -EINVAL ; }
arch/powerpc/platforms/embedded6xx/linkstation.c +0 -3
@@ -97,9 +97,6 @@ static void __init linkstation_init_IRQ(void)mpic_init (mpic); } -extern void avr_uart_configure (void ); -extern void avr_uart_send (const char ); -static void __noreturn linkstation_restart (char *cmd) {local_irq_disable ();
arch/powerpc/platforms/embedded6xx/mpc10x.h +3 -0
@@ -156,4 +156,7 @@ int mpc10x_disable_store_gathering(struct pci_controller *hose);/* For MPC107 boards that use the built-in openpic */ void mpc10x_set_openpic (void ); +void avr_uart_configure (void ); +void avr_uart_send (const char c); +#endif /* __PPC_KERNEL_MPC10X_H */
arch/s390/kernel/vtime.c +2 -2
@@ -214,13 +214,13 @@ void vtime_flush(struct task_struct *tsk)virt_timer_expire (); steal = S390_lowcore.steal_timer; - avg_steal = S390_lowcore.avg_steal_timer /2 ; + avg_steal = S390_lowcore.avg_steal_timer;if ((s64 ) steal >0 ) { S390_lowcore.steal_timer =0 ;account_steal_time (cputime_to_nsecs (steal)); avg_steal += steal; } - S390_lowcore.avg_steal_timer = avg_steal; + S390_lowcore.avg_steal_timer = avg_steal /2 ; }/*
arch/sparc/kernel/leon_pci_grpci1.c +1 -1
@@ -696,7 +696,7 @@ static int grpci1_of_probe(struct platform_device *ofdev)return err; } -static const struct of_device_id grpci1_of_match[]__initconst = { +static const struct of_device_id grpci1_of_match[] = { { .name ="GAISLER_PCIFBRG" , },
arch/sparc/kernel/leon_pci_grpci2.c +1 -1
@@ -887,7 +887,7 @@ static int grpci2_of_probe(struct platform_device *ofdev)return err; } -static const struct of_device_id grpci2_of_match[]__initconst = { +static const struct of_device_id grpci2_of_match[] = { { .name ="GAISLER_GRPCI2" , },
arch/x86/tools/relocs.c +8 -0
@@ -596,6 +596,14 @@ static void print_absolute_relocs(void)if (!(sec_applies->shdr.sh_flags &SHF_ALLOC )) {continue ; } +/* +* Do not perform relocations in .notes section; 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++) {
arch/x86/xen/smp.c +12 -0
@@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)char *resched_name, *callfunc_name, *debug_name; resched_name =kasprintf (GFP_KERNEL ,"resched%d" , cpu); +if (!resched_name) + goto fail_mem;per_cpu (xen_resched_irq, cpu).name = resched_name; rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR, cpu,
@@ -77,6 +79,8 @@ int xen_smp_intr_init(unsigned int cpu)per_cpu (xen_resched_irq, cpu).irq = rc; callfunc_name =kasprintf (GFP_KERNEL ,"callfunc%d" , cpu); +if (!callfunc_name) + goto fail_mem;per_cpu (xen_callfunc_irq, cpu).name = callfunc_name; rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR, cpu,
@@ -90,6 +94,9 @@ int xen_smp_intr_init(unsigned int cpu)if (!xen_fifo_events) { debug_name =kasprintf (GFP_KERNEL ,"debug%d" , cpu); +if (!debug_name) + goto fail_mem; +per_cpu (xen_debug_irq, cpu).name = debug_name; rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu, xen_debug_interrupt,
@@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu) } callfunc_name =kasprintf (GFP_KERNEL ,"callfuncsingle%d" , cpu); +if (!callfunc_name) + goto fail_mem; +per_cpu (xen_callfuncsingle_irq, cpu).name = callfunc_name; rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR, cpu,
@@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)return 0 ; + fail_mem: + rc = -ENOMEM ; fail:xen_smp_intr_free (cpu);return rc;
block/opal_proto.h +1 -0
@@ -65,6 +65,7 @@ enum opal_response_token {#define SHORT_ATOM_BYTE 0xBF#define MEDIUM_ATOM_BYTE 0xDF#define LONG_ATOM_BYTE 0xE3 +#define EMPTY_ATOM_BYTE 0xFF#define OPAL_INVAL_PARAM 12#define OPAL_MANUFACTURED_INACTIVE 0x08
block/sed-opal.c +5 -1
@@ -893,16 +893,20 @@ static int response_parse(const u8 *buf, size_t length, token_length =response_parse_medium (iter, pos); else if (pos[0] <= LONG_ATOM_BYTE) /* long atom */ token_length =response_parse_long (iter, pos); + else if (pos[0] == EMPTY_ATOM_BYTE) /* empty atom */ + token_length =1 ; else /* TOKEN */ token_length =response_parse_token (iter, pos);if (token_length <0 )return token_length; +if (pos[0 ] !=EMPTY_ATOM_BYTE ) + num_entries++; + pos += token_length; total -= token_length; iter++; - num_entries++; } resp->num = num_entries;
drivers/acpi/processor_idle.c +2 -0
@@ -1531,6 +1531,8 @@ int acpi_processor_power_exit(struct acpi_processor *pr) acpi_processor_registered--;if (acpi_processor_registered ==0 )cpuidle_unregister_driver (&acpi_idle_driver); + +kfree (dev); } pr->flags.power_setup_done =0 ;
drivers/acpi/scan.c +2 -6
@@ -322,18 +322,14 @@ static int acpi_scan_device_check(struct acpi_device *adev)* again). */ if (adev->handler) { -dev_warn (&adev->dev,"Already enumerated\n" ); -return -EALREADY ; +dev_dbg (&adev->dev,"Already enumerated\n" ); +return 0 ; } error =acpi_bus_scan (adev->handle);if (error) {dev_warn (&adev->dev,"Namespace scan failure\n" );return error; } -if (!adev->handler) { -dev_warn (&adev->dev,"Enumeration failure\n" ); - error = -ENODEV ; - } }else { error =acpi_scan_device_not_present (adev); }
drivers/base/regmap/regmap.c +1 -1
@@ -1648,7 +1648,7 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg, map->format.reg_bytes + map->format.pad_bytes + val_len); - else if (map->bus->gather_write) + else if (map->bus && map->bus->gather_write) ret = map->bus->gather_write(map->bus_context, map->work_buf, map->format.reg_bytes + map->format.pad_bytes,
drivers/block/aoe/aoecmd.c +6 -6
@@ -420,13 +420,16 @@ aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff_head *qurcu_read_lock ();for_each_netdev_rcu (&init_net, ifp) {dev_hold (ifp); -if (!is_aoe_netif (ifp)) - goto cont; +if (!is_aoe_netif (ifp)) { +dev_put (ifp); +continue ; + } skb =new_skb (sizeof *h +sizeof *ch);if (skb ==NULL ) {printk (KERN_INFO "aoe: skb alloc failure\n" ); - goto cont; +dev_put (ifp); +continue ; }skb_put (skb,sizeof *h +sizeof *ch); skb->dev = ifp;
@@ -441,9 +444,6 @@ aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff_head *qu h->major =cpu_to_be16 (aoemajor); h->minor = aoeminor; h->cmd =AOECMD_CFG ; - -cont: -dev_put (ifp); }rcu_read_unlock (); }
drivers/block/aoe/aoenet.c +1 -0
@@ -64,6 +64,7 @@ tx(int id) __must_hold(&txlock)pr_warn ("aoe: packet could not be sent on %s. %s\n" , ifp ? ifp->name :"netif" ,"consider increasing tx_queue_len" ); +dev_put (ifp);spin_lock_irq (&txlock); }return 0 ;
drivers/block/nbd.c +6 -0
@@ -2313,6 +2313,12 @@ static int nbd_genl_status(struct sk_buff *skb, struct genl_info *info) } dev_list =nla_nest_start_noflag (reply,NBD_ATTR_DEVICE_LIST ); +if (!dev_list) { +nlmsg_free (reply); + ret = -EMSGSIZE ; + goto out; + } +if (index ==-1 ) { ret =idr_for_each (&nbd_index_idr, &status_cb, reply);if (ret) {
drivers/bus/Kconfig +3 -2
@@ -136,11 +136,12 @@ config SUNXI_RSB config TEGRA_ACONNECT tristate "Tegra ACONNECT Bus Driver" - depends on ARCH_TEGRA_210_SOC + depends on ARCH_TEGRA depends on OF && PM help Driver for the Tegra ACONNECT bus which is used to interface with - the devices inside the Audio Processing Engine (APE) for Tegra210. + the devices inside the Audio Processing Engine (APE) for + Tegra210 and later. config TEGRA_GMI tristate "Tegra Generic Memory Interface bus driver"
drivers/clk/clk.c +3 -0
@@ -425,6 +425,9 @@ static struct clk_core *clk_core_get(struct clk_core *core, u8 p_index)if (IS_ERR (hw))return ERR_CAST (hw); +if (!hw) +return NULL ; +return hw->core; }
drivers/clk/hisilicon/clk-hi3519.c +1 -1
@@ -130,7 +130,7 @@ static void hi3519_clk_unregister(struct platform_device *pdev)of_clk_del_provider (pdev->dev.of_node);hisi_clk_unregister_gate (hi3519_gate_clks, -ARRAY_SIZE (hi3519_mux_clks), +ARRAY_SIZE (hi3519_gate_clks), crg->clk_data); hisi_clk_unregister_mux(hi3519_mux_clks, ARRAY_SIZE(hi3519_mux_clks),
drivers/clk/qcom/dispcc-sdm845.c +2 -0
@@ -569,6 +569,8 @@ static struct clk_branch disp_cc_mdss_vsync_clk = {static struct gdsc mdss_gdsc = { .gdscr =0x3000 , + .en_few_wait_val =0x6 , + .en_rest_wait_val =0x5 , .pd = { .name ="mdss_gdsc" , },
drivers/clk/qcom/reset.c +18 -15
@@ -13,14 +13,16 @@static int qcom_reset (struct reset_controller_dev *rcdev,unsigned long id) { +struct qcom_reset_controller *rst =to_qcom_reset_controller (rcdev); + rcdev->ops->assert (rcdev, id); -udelay (1 ); +udelay (rst->reset_map[id].udelay ?:1 );/* use 1 us as default */ rcdev->ops->deassert (rcdev, id);return 0 ; } -static int -qcom_reset_assert (struct reset_controller_dev *rcdev,unsigned long id) +static int qcom_reset_set_assert (struct reset_controller_dev *rcdev, +unsigned long id,bool assert) {struct qcom_reset_controller *rst;const struct qcom_reset_map *map;
@@ -28,23 +30,24 @@ qcom_reset_assert(struct reset_controller_dev *rcdev, unsigned long id) rst =to_qcom_reset_controller (rcdev); map = &rst->reset_map[id]; - mask =BIT (map->bit); + mask = map->bitmask ? map->bitmask :BIT (map->bit); + +regmap_update_bits (rst->regmap, map->reg, mask, assert ? mask :0 ); + +/* Read back the register to ensure write completion, ignore the value */ +regmap_read (rst->regmap, map->reg, &mask); -return regmap_update_bits (rst->regmap, map->reg, mask, mask); +return 0 ; } -static int -qcom_reset_deassert (struct reset_controller_dev *rcdev,unsigned long id) +static int qcom_reset_assert (struct reset_controller_dev *rcdev,unsigned long id) { -struct qcom_reset_controller *rst; -const struct qcom_reset_map *map; -u32 mask; - - rst =to_qcom_reset_controller (rcdev); - map = &rst->reset_map[id]; - mask =BIT (map->bit); +return qcom_reset_set_assert (rcdev, id, true); +} -return regmap_update_bits (rst->regmap, map->reg, mask,0 ); +static int qcom_reset_deassert (struct reset_controller_dev *rcdev,unsigned long id) +{ +return qcom_reset_set_assert (rcdev, id, false); }const struct reset_control_ops qcom_reset_ops = {
drivers/clk/qcom/reset.h +2 -0
@@ -11,6 +11,8 @@struct qcom_reset_map {unsigned int reg;u8 bit; +u8 udelay; +u32 bitmask; };struct regmap ;
drivers/dma/Kconfig +7 -7
@@ -582,16 +582,16 @@ config TEGRA20_APB_DMA config TEGRA210_ADMA tristate "NVIDIA Tegra210 ADMA support" - depends on (ARCH_TEGRA_210_SOC || COMPILE_TEST) + depends on (ARCH_TEGRA || COMPILE_TEST) select DMA_ENGINE select DMA_VIRTUAL_CHANNELS help - Support for the NVIDIA Tegra210 ADMA controller driver. The - DMA controller has multiple DMA channels and is used to service - various audio clients in the Tegra210 audio processing engine - (APE). This DMA controller transfers data from memory to - peripheral and vice versa. It does not support memory to - memory data transfer. + Support for the NVIDIA Tegra210/Tegra186/Tegra194/Tegra234 ADMA + controller driver. The DMA controller has multiple DMA channels + and is used to service various audio clients in the Tegra210 + audio processing engine (APE). This DMA controller transfers + data from memory to peripheral and vice versa. It does not + support memory to memory data transfer. config TIMB_DMA tristate "Timberdale FPGA DMA support"
drivers/firewire/core-card.c +13 -1
@@ -500,7 +500,19 @@ static void bm_work(struct work_struct *work)fw_notice (card,"phy config: new root=%x, gap_count=%d\n" , new_root_id, gap_count);fw_send_phy_config (card, new_root_id, generation, gap_count); -reset_bus (card, true); +/* +* Where possible, use a short bus reset to minimize +* disruption to isochronous transfers. But in the event +* of a gap count inconsistency, use a long bus reset. +* +* As noted in 1394a 8.4.6.2, nodes on a mixed 1394/1394a bus +* may set different gap counts after a bus reset. On a mixed +* 1394/1394a bus, a short bus reset can get doubled. Some +* nodes may treat the double reset as one bus reset and others +* may treat it as two, causing a gap count inconsistency +* again. Using a long bus reset prevents this. +*/ +reset_bus (card, card->gap_count !=0 );/* Will allocate broadcast channel after the reset. */ goto out; }
drivers/gpu/drm/amd/amdgpu/atom.c +1 -1
@@ -308,7 +308,7 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,DEBUG ("IMM 0x%02X\n" , val);return val; } -return 0 ; +break ;case ATOM_ARG_PLL : idx =U8 (*ptr); (*ptr)++;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +5 -2
@@ -1470,6 +1470,9 @@ dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx, {struct dpp *dpp = pipe_ctx->plane_res.dpp; +if (!stream) +return false; +if (dpp ==NULL )return false;
@@ -1492,8 +1495,8 @@ dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx, }else dpp->funcs->dpp_program_regamma_pwl (dpp,NULL ,OPP_REGAMMA_BYPASS ); -if (stream !=NULL && stream->ctx !=NULL && - stream->out_transfer_func !=NULL ) { +if (stream->ctx && + stream->out_transfer_func) {log_tf (stream->ctx, stream->out_transfer_func, dpp->regamma_params.hw_points_num);
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +7 -5
@@ -73,11 +73,13 @@ static void mtk_drm_crtc_finish_page_flip(struct mtk_drm_crtc *mtk_crtc)struct drm_crtc *crtc = &mtk_crtc->base;unsigned long flags; -spin_lock_irqsave (&crtc->dev->event_lock, flags); -drm_crtc_send_vblank_event (crtc, mtk_crtc->event); -drm_crtc_vblank_put (crtc); - mtk_crtc->event =NULL ; -spin_unlock_irqrestore (&crtc->dev->event_lock, flags); +if (mtk_crtc->event) { +spin_lock_irqsave (&crtc->dev->event_lock, flags); +drm_crtc_send_vblank_event (crtc, mtk_crtc->event); +drm_crtc_vblank_put (crtc); + mtk_crtc->event =NULL ; +spin_unlock_irqrestore (&crtc->dev->event_lock, flags); + } }static void mtk_drm_finish_page_flip (struct mtk_drm_crtc *mtk_crtc)
drivers/gpu/drm/mediatek/mtk_dsi.c +5 -5
@@ -64,8 +64,8 @@#define DSI_PS_WC 0x3fff#define DSI_PS_SEL (3 << 16)#define PACKED_PS_16BIT_RGB565 (0 << 16) -#define LOOSELY_PS_18BIT_RGB666 (1 << 16) -#define PACKED_PS_18BIT_RGB666 (2 << 16) +#define PACKED_PS_18BIT_RGB666 (1 << 16) +#define LOOSELY_PS_24BIT_RGB666 (2 << 16)#define PACKED_PS_24BIT_RGB888 (3 << 16)#define DSI_VSA_NL 0x20
@@ -321,10 +321,10 @@ static void mtk_dsi_ps_control_vact(struct mtk_dsi *dsi) ps_bpp_mode |=PACKED_PS_24BIT_RGB888 ;break ;case MIPI_DSI_FMT_RGB666 : - ps_bpp_mode |=PACKED_PS_18BIT_RGB666 ; + ps_bpp_mode |=LOOSELY_PS_24BIT_RGB666 ;break ;case MIPI_DSI_FMT_RGB666_PACKED : - ps_bpp_mode |=LOOSELY_PS_18BIT_RGB666 ; + ps_bpp_mode |=PACKED_PS_18BIT_RGB666 ;break ;case MIPI_DSI_FMT_RGB565 : ps_bpp_mode |=PACKED_PS_16BIT_RGB565 ;
@@ -375,7 +375,7 @@ static void mtk_dsi_ps_control(struct mtk_dsi *dsi) dsi_tmp_buf_bpp =3 ;break ;case MIPI_DSI_FMT_RGB666 : - tmp_reg =LOOSELY_PS_18BIT_RGB666 ; + tmp_reg =LOOSELY_PS_24BIT_RGB666 ; dsi_tmp_buf_bpp =3 ;break ;case MIPI_DSI_FMT_RGB666_PACKED :
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c +4 -2
@@ -258,12 +258,14 @@ static void dpu_encoder_phys_vid_setup_timing_engine( mode.htotal >>=1 ; mode.hsync_start >>=1 ; mode.hsync_end >>=1 ; + mode.hskew >>=1 ;DPU_DEBUG_VIDENC (phys_enc, -"split_role %d, halve horizontal %d %d %d %d\n" , +"split_role %d, halve horizontal %d %d %d %d %d\n" , phys_enc->split_role, mode.hdisplay, mode.htotal, - mode.hsync_start, mode.hsync_end); + mode.hsync_start, mode.hsync_end, + mode.hskew); }drm_mode_to_intf_timing_params (phys_enc, &mode, &timing_params);
drivers/gpu/drm/radeon/ni.c +1 -1
@@ -826,7 +826,7 @@ int ni_init_microcode(struct radeon_device *rdev) err =0 ; }else if (rdev->smc_fw->size != smc_req_size) {pr_err ("ni_mc: Bogus length %zu in firmware \"%s\"\n" , - rdev->mc_fw->size, fw_name); + rdev->smc_fw->size, fw_name); err = -EINVAL ; } }
drivers/gpu/drm/rockchip/inno_hdmi.c +2 -2
@@ -401,7 +401,7 @@ static int inno_hdmi_config_video_timing(struct inno_hdmi *hdmi,hdmi_writeb (hdmi,HDMI_VIDEO_EXT_HBLANK_L , value &0xFF );hdmi_writeb (hdmi,HDMI_VIDEO_EXT_HBLANK_H , (value >>8 ) &0xFF ); - value = mode->hsync_start - mode->hdisplay; + value = mode->htotal - mode->hsync_start;hdmi_writeb (hdmi,HDMI_VIDEO_EXT_HDELAY_L , value &0xFF );hdmi_writeb (hdmi,HDMI_VIDEO_EXT_HDELAY_H , (value >>8 ) &0xFF );
@@ -416,7 +416,7 @@ static int inno_hdmi_config_video_timing(struct inno_hdmi *hdmi, value = mode->vtotal - mode->vdisplay;hdmi_writeb (hdmi,HDMI_VIDEO_EXT_VBLANK , value &0xFF ); - value = mode->vsync_start - mode->vdisplay; + value = mode->vtotal - mode->vsync_start;hdmi_writeb (hdmi,HDMI_VIDEO_EXT_VDELAY , value &0xFF ); value = mode->vsync_end - mode->vsync_start;
drivers/gpu/drm/rockchip/rockchip_lvds.c +0 -1
@@ -366,7 +366,6 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master, goto err_put_port; }else if (ret) {DRM_DEV_ERROR (dev,"failed to find panel and bridge node\n" ); - ret = -EPROBE_DEFER ; goto err_put_port; }if (lvds->panel)
drivers/gpu/drm/tegra/dsi.c +32 -17
98 lines not on this page · raw message
drivers/gpu/drm/tegra/fb.c +1 -0
@@ -155,6 +155,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,if (gem->size < size) { err = -EINVAL ; +drm_gem_object_put (gem); goto unreference; }
drivers/gpu/drm/tegra/output.c +12 -4
@@ -127,8 +127,10 @@ int tegra_output_probe(struct tegra_output *output)GPIOD_IN , "HDMI hotplug detect");if (IS_ERR (output->hpd_gpio)) { -if (PTR_ERR (output->hpd_gpio) != -ENOENT ) -return PTR_ERR (output->hpd_gpio); +if (PTR_ERR (output->hpd_gpio) != -ENOENT ) { + err =PTR_ERR (output->hpd_gpio); + goto put_i2c; + } output->hpd_gpio =NULL ; }
@@ -137,7 +139,7 @@ int tegra_output_probe(struct tegra_output *output) err =gpiod_to_irq (output->hpd_gpio);if (err <0 ) {dev_err (output->dev,"gpiod_to_irq(): %d\n" , err); -return err; + goto put_i2c; } output->hpd_irq = err;
@@ -150,7 +152,7 @@ int tegra_output_probe(struct tegra_output *output)if (err <0 ) {dev_err (output->dev,"failed to request IRQ#%u: %d\n" , output->hpd_irq, err); -return err; + goto put_i2c; } output->connector.polled =DRM_CONNECTOR_POLL_HPD ;
@@ -168,6 +170,12 @@ int tegra_output_probe(struct tegra_output *output)return -ENOMEM ;return 0 ; + +put_i2c: +if (output->ddc) +i2c_put_adapter (output->ddc); + +return err; }void tegra_output_remove (struct tegra_output *output)
drivers/gpu/host1x/mipi.c +2 -2
@@ -206,9 +206,9 @@ static int tegra_mipi_power_down(struct tegra_mipi *mipi)return 0 ; } -struct tegra_mipi_device *tegra_mipi_request (struct device *device) +struct tegra_mipi_device *tegra_mipi_request (struct device *device, +struct device_node *np) { -struct device_node *np = device->of_node;struct tegra_mipi_device *dev;struct of_phandle_args args;int err;
drivers/hid/hid-multitouch.c +4 -0
@@ -2090,6 +2090,10 @@ static const struct hid_device_id mt_devices[] = {HID_DEVICE (BUS_I2C ,HID_GROUP_MULTITOUCH_WIN_8 , USB_VENDOR_ID_SYNAPTICS, 0xcd7e) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, +HID_DEVICE (BUS_I2C ,HID_GROUP_MULTITOUCH_WIN_8 , + USB_VENDOR_ID_SYNAPTICS, 0xcddc) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,HID_DEVICE (BUS_I2C ,HID_GROUP_MULTITOUCH_WIN_8 , USB_VENDOR_ID_SYNAPTICS, 0xce08) },
drivers/infiniband/core/device.c +22 -15
@@ -1700,7 +1700,7 @@ static int assign_client_id(struct ib_client *client) {int ret; -down_write (&clients_rwsem); +lockdep_assert_held (&clients_rwsem);/* * The add/remove callbacks must be called in FIFO/LIFO order. To * achieve this we assign client_ids so they are sorted in
@@ -1709,14 +1709,11 @@ static int assign_client_id(struct ib_client *client) client->client_id = highest_client_id; ret =xa_insert (&clients, client->client_id, client,GFP_KERNEL );if (ret) - goto out; +return ret; highest_client_id++;xa_set_mark (&clients, client->client_id,CLIENT_REGISTERED ); - -out: -up_write (&clients_rwsem); -return ret; +return 0 ; }static void remove_client_id (struct ib_client *client)
@@ -1746,25 +1743,35 @@ int ib_register_client(struct ib_client *client) {struct ib_device *device;unsigned long index; +bool need_unreg = false;int ret;refcount_set (&client->uses,1 );init_completion (&client->uses_zero); + +/* +* The devices_rwsem is held in write mode to ensure that a racing +* ib_register_device() sees a consisent view of clients and devices. +*/ +down_write (&devices_rwsem); +down_write (&clients_rwsem); ret =assign_client_id (client);if (ret) -return ret; + goto out; -down_read (&devices_rwsem); + need_unreg = true; xa_for_each_marked (&devices, index, device, DEVICE_REGISTERED) { ret =add_client_context (device, client); -if (ret) { -up_read (&devices_rwsem); -ib_unregister_client (client); -return ret; - } +if (ret) + goto out; } -up_read (&devices_rwsem); -return 0 ; + ret =0 ; +out: +up_write (&clients_rwsem); +up_write (&devices_rwsem); +if (need_unreg && ret) +ib_unregister_client (client); +return ret; }EXPORT_SYMBOL (ib_register_client);
drivers/infiniband/hw/mlx5/devx.c +1 -1
@@ -2811,7 +2811,7 @@ DECLARE_UVERBS_NAMED_METHOD(MLX5_IB_METHOD_DEVX_OBJ_MODIFY ,UVERBS_ATTR_IDR (MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE ,UVERBS_IDR_ANY_OBJECT , -UVERBS_ACCESS_WRITE , +UVERBS_ACCESS_READ ,UA_MANDATORY ), UVERBS_ATTR_PTR_IN( MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
drivers/input/keyboard/gpio_keys_polled.c +4 -6
@@ -325,12 +325,10 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) error =devm_gpio_request_one (dev, button->gpio, flags, button->desc ? :DRV_NAME ); -if (error) { -dev_err (dev, -"unable to claim gpio %u, err=%d\n" , - button->gpio, error); -return error; - } +if (error) +return dev_err_probe (dev, error, +"unable to claim gpio %u\n" , + button->gpio); bdata->gpiod =gpio_to_desc (button->gpio);if (!bdata->gpiod) {
drivers/iommu/amd_iommu_init.c +3 -0
@@ -1745,6 +1745,9 @@ static int __init iommu_init_pci(struct amd_iommu *iommu)/* Prevent binding other PCI device drivers to IOMMU devices */ iommu->dev->match_driver = false; +/* ACPI _PRT won't have an IRQ for IOMMU */ + iommu->dev->irq_managed =1 ; +pci_read_config_dword (iommu->dev, cap_ptr +MMIO_CAP_HDR_OFFSET , &iommu->cap); pci_read_config_dword(iommu->dev, cap_ptr + MMIO_RANGE_OFFSET,
drivers/md/dm-crypt.c +2 -2
@@ -46,11 +46,11 @@struct convert_context {struct completion restart;struct bio *bio_in; -struct bio *bio_out;struct bvec_iter iter_in; +struct bio *bio_out;struct bvec_iter iter_out; -u64 cc_sector;atomic_t cc_pending; +u64 cc_sector;union {struct skcipher_request *req;struct aead_request *req_aead;
drivers/md/dm-raid.c +2 -2
@@ -3343,14 +3343,14 @@ static int raid_map(struct dm_target *ti, struct bio *bio)struct mddev *mddev = &rs->md;/* -* If we're reshaping to add disk(s)), ti->len and +* If we're reshaping to add disk(s), ti->len and * mddev->array_sectors will differ during the process * (ti->len > mddev->array_sectors), so we have to requeue * bios with addresses > mddev->array_sectors here or * there will occur accesses past EOD of the component * data images thus erroring the raid set. */ -if (unlikely (bio_end_sector (bio) > mddev->array_sectors)) +if (unlikely (bio_has_data (bio) &&bio_end_sector (bio) > mddev->array_sectors))return DM_MAPIO_REQUEUE ;md_handle_request (mddev, bio);
drivers/md/dm-verity.h +2 -2
@@ -73,11 +73,11 @@ struct dm_verity_io {/* original value of bio->bi_end_io */ bio_end_io_t *orig_bi_end_io; +struct bvec_iter iter; +sector_t block;unsigned n_blocks; -struct bvec_iter iter; -struct work_struct work;/*
drivers/md/dm.c +20 -6
@@ -2809,6 +2809,9 @@ static void __dm_internal_suspend(struct mapped_device *md, unsigned suspend_flastatic void __dm_internal_resume (struct mapped_device *md) { +int r; +struct dm_table *map; +BUG_ON (!md->internal_suspend_count);if (--md->internal_suspend_count)
@@ -2817,12 +2820,23 @@ static void __dm_internal_resume(struct mapped_device *md)if (dm_suspended_md (md)) goto done;/* resume from nested suspend */ -/* -* NOTE: existing callers don't need to call dm_table_resume_targets -* (which may fail -- so best to avoid it for now by passing NULL map) -*/ - (void )__dm_resume (md,NULL ); - + map =rcu_dereference_protected (md->map,lockdep_is_held (&md->suspend_lock)); + r =__dm_resume (md, map); +if (r) { +/* +* If a preresume method of some target failed, we are in a +* tricky situation. We can't return an error to the caller. We +* can't fake success because then the "resume" and +* "postsuspend" methods would not be paired correctly, and it +* would break various targets, for example it would cause list +* corruption in the "origin" target. +* +* So, we fake normal suspend here, to make sure that the +* "resume" and "postsuspend" methods will be paired correctly. +*/ +DMERR ("Preresume method failed: %d" , r); +set_bit (DMF_SUSPENDED , &md->flags); + } done:clear_bit (DMF_SUSPENDED_INTERNALLY , &md->flags);smp_mb__after_atomic ();
drivers/media/common/v4l2-tpg/v4l2-tpg-core.c +42 -10
80 lines not on this page · raw message
drivers/media/dvb-core/dvbdev.c +5 -0
@@ -504,6 +504,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, dvbdevfops =kmemdup (template->fops,sizeof (*dvbdevfops),GFP_KERNEL );if (!dvbdevfops) {kfree (dvbdev); + *pdvbdev =NULL ;mutex_unlock (&dvbdev_register_lock);return -ENOMEM ; }
@@ -512,6 +513,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,if (!new_node) {kfree (dvbdevfops);kfree (dvbdev); + *pdvbdev =NULL ;mutex_unlock (&dvbdev_register_lock);return -ENOMEM ; }
@@ -545,6 +547,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, }list_del (&dvbdev->list_head);kfree (dvbdev); + *pdvbdev =NULL ;up_write (&minor_rwsem);mutex_unlock (&dvbdev_register_lock);return -EINVAL ;
@@ -567,6 +570,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,dvb_media_device_free (dvbdev);list_del (&dvbdev->list_head);kfree (dvbdev); + *pdvbdev =NULL ;mutex_unlock (&dvbdev_register_lock);return ret; }
@@ -585,6 +589,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,dvb_media_device_free (dvbdev);list_del (&dvbdev->list_head);kfree (dvbdev); + *pdvbdev =NULL ;mutex_unlock (&dvbdev_register_lock);return PTR_ERR (clsdev); }
drivers/media/dvb-frontends/stv0367.c +8 -26
@@ -118,50 +118,32 @@ static const s32 stv0367cab_RF_LookUp2[RF_LOOKUP_TABLE2_SIZE][RF_LOOKUP_TABLE2_S } }; -static -int stv0367_writeregs (struct stv0367_state *state,u16 reg,u8 *data,int len) +static noinline_for_stack +int stv0367_writereg(struct stv0367_state *state, u16 reg, u8 data) { -u8 buf[MAX_XFER_SIZE ]; +u8 buf[3 ] = {MSB (reg),LSB (reg), data };struct i2c_msg msg = { .addr = state->config->demod_address, .flags =0 , .buf = buf, - .len = len +2 + .len =3 , };int ret; -if (2 + len >sizeof (buf)) { -printk (KERN_WARNING -"%s: i2c wr reg=%04x: len=%d is too big!\n" , -KBUILD_MODNAME , reg, len); -return -EINVAL ; - } - - - buf[0 ] =MSB (reg); - buf[1 ] =LSB (reg); -memcpy (buf +2 , data, len); -if (i2cdebug)printk (KERN_DEBUG "%s: [%02x] %02x: %02x\n" , __func__, - state->config->demod_address, reg, buf[2 ]); + state->config->demod_address, reg, data); ret =i2c_transfer (state->i2c, &msg,1 );if (ret !=1 )printk (KERN_ERR "%s: i2c write error! ([%02x] %02x: %02x)\n" , - __func__, state->config->demod_address, reg, buf[2 ]); + __func__, state->config->demod_address, reg, data);return (ret !=1 ) ? -EREMOTEIO :0 ; } -static int stv0367_writereg (struct stv0367_state *state,u16 reg,u8 data) -{ -u8 tmp = data;/* see gcc.gnu.org/bugzilla/show_bug.cgi?id=81715 */ - -return stv0367_writeregs (state, reg, &tmp,1 ); -} - -static u8 stv0367_readreg (struct stv0367_state *state,u16 reg) +static noinline_for_stack +u8 stv0367_readreg(struct stv0367_state *state, u16 reg) {u8 b0[] = {0 ,0 };u8 b1[] = {0 };
drivers/media/i2c/tc358743.c +4 -3
@@ -2107,9 +2107,6 @@ static int tc358743_probe(struct i2c_client *client) state->mbus_fmt_code =MEDIA_BUS_FMT_RGB888_1X24 ; sd->dev = &client->dev; - err =v4l2_async_register_subdev (sd); -if (err <0 ) - goto err_hdl;mutex_init (&state->confctl_mutex);
@@ -2167,6 +2164,10 @@ static int tc358743_probe(struct i2c_client *client)if (err) goto err_work_queues; + err =v4l2_async_register_subdev (sd); +if (err <0 ) + goto err_work_queues; +v4l2_info (sd,"%s found @ 0x%x (%s)\n" , client->name, client->addr <<1 , client->adapter->name);
drivers/media/pci/bt8xx/bttv-driver.c +2 -2
@@ -2964,7 +2964,7 @@ static int bttv_open(struct file *file)dprintk ("open dev=%s\n" ,video_device_node_name (vdev)); -if (vdev->vfl_type ==VFL_TYPE_GRABBER ) { +if (vdev->vfl_type ==VFL_TYPE_VIDEO ) { type =V4L2_BUF_TYPE_VIDEO_CAPTURE ; }else if (vdev->vfl_type ==VFL_TYPE_VBI ) { type =V4L2_BUF_TYPE_VBI_CAPTURE ;
@@ -3905,7 +3905,7 @@ static int bttv_register_video(struct bttv *btv)if (no_overlay <=0 ) btv->video_dev.device_caps |=V4L2_CAP_VIDEO_OVERLAY ; -if (video_register_device (&btv->video_dev,VFL_TYPE_GRABBER , +if (video_register_device (&btv->video_dev,VFL_TYPE_VIDEO , video_nr[btv->c.nr]) <0 ) goto err; pr_info("%d: registered device %s\n",
drivers/media/pci/cobalt/cobalt-v4l2.c +1 -1
@@ -1272,7 +1272,7 @@ static int cobalt_node_register(struct cobalt *cobalt, int node)video_set_drvdata (vdev, s); ret =vb2_queue_init (q);if (!s->is_audio && ret ==0 ) - ret =video_register_device (vdev,VFL_TYPE_GRABBER ,-1 ); + ret =video_register_device (vdev,VFL_TYPE_VIDEO ,-1 );else if (!s->is_dummy) ret =cobalt_alsa_init (s);
drivers/media/pci/cx18/cx18-streams.c +6 -6
@@ -48,19 +48,19 @@ static struct { } cx18_stream_info[] = { {/* CX18_ENC_STREAM_TYPE_MPG */ "encoder MPEG" , -VFL_TYPE_GRABBER ,0 , +VFL_TYPE_VIDEO ,0 ,PCI_DMA_FROMDEVICE ,V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_READWRITE |V4L2_CAP_AUDIO |V4L2_CAP_TUNER }, { /* CX18_ENC_STREAM_TYPE_TS */"TS" , -VFL_TYPE_GRABBER ,-1 , +VFL_TYPE_VIDEO ,-1 ,PCI_DMA_FROMDEVICE , }, { /* CX18_ENC_STREAM_TYPE_YUV */"encoder YUV" , -VFL_TYPE_GRABBER ,CX18_V4L2_ENC_YUV_OFFSET , +VFL_TYPE_VIDEO ,CX18_V4L2_ENC_YUV_OFFSET ,PCI_DMA_FROMDEVICE ,V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_READWRITE |V4L2_CAP_STREAMING |V4L2_CAP_AUDIO |V4L2_CAP_TUNER
@@ -74,13 +74,13 @@ static struct { }, {/* CX18_ENC_STREAM_TYPE_PCM */ "encoder PCM audio" , -VFL_TYPE_GRABBER ,CX18_V4L2_ENC_PCM_OFFSET , +VFL_TYPE_VIDEO ,CX18_V4L2_ENC_PCM_OFFSET ,PCI_DMA_FROMDEVICE ,V4L2_CAP_TUNER |V4L2_CAP_AUDIO |V4L2_CAP_READWRITE , }, { /* CX18_ENC_STREAM_TYPE_IDX */"encoder IDX" , -VFL_TYPE_GRABBER ,-1 , +VFL_TYPE_VIDEO ,-1 , PCI_DMA_FROMDEVICE, }, { /* CX18_ENC_STREAM_TYPE_RAD */
@@ -434,7 +434,7 @@ static int cx18_reg_dev(struct cx18 *cx, int type) name =video_device_node_name (&s->video_dev);switch (vfl_type) { -case VFL_TYPE_GRABBER : +case VFL_TYPE_VIDEO : CX18_INFO("Registered device %s for %s (%d x %d.%02d kB)\n", name, s->name, cx->stream_buffers[type], cx->stream_buf_size[type] / 1024,
drivers/media/pci/cx23885/cx23885-417.c +1 -1
@@ -1545,7 +1545,7 @@ int cx23885_417_register(struct cx23885_dev *dev)if (dev->tuner_type !=TUNER_ABSENT ) dev->v4l_device->device_caps |=V4L2_CAP_TUNER ; err =video_register_device (dev->v4l_device, -VFL_TYPE_GRABBER ,-1 ); +VFL_TYPE_VIDEO ,-1 );if (err <0 ) {pr_info ("%s: can't register mpeg device\n" , dev->name);return err;
drivers/media/pci/cx23885/cx23885-video.c +1 -1
@@ -1304,7 +1304,7 @@ int cx23885_video_register(struct cx23885_dev *dev)V4L2_CAP_AUDIO |V4L2_CAP_VIDEO_CAPTURE ;if (dev->tuner_type !=TUNER_ABSENT ) dev->video_dev->device_caps |=V4L2_CAP_TUNER ; - err =video_register_device (dev->video_dev,VFL_TYPE_GRABBER , + err =video_register_device (dev->video_dev,VFL_TYPE_VIDEO , video_nr[dev->nr]);if (err <0 ) { pr_info("%s: can't register video device\n",
drivers/media/pci/cx25821/cx25821-video.c +1 -1
@@ -757,7 +757,7 @@ int cx25821_video_register(struct cx25821_dev *dev)snprintf (vdev->name,sizeof (vdev->name),"%s #%d" , dev->name, i);video_set_drvdata (vdev, chan); - err =video_register_device (vdev,VFL_TYPE_GRABBER , + err =video_register_device (vdev,VFL_TYPE_VIDEO , video_nr[dev->nr]);if (err <0 )
drivers/media/pci/cx88/cx88-blackbird.c +1 -1
@@ -1138,7 +1138,7 @@ static int blackbird_register_video(struct cx8802_dev *dev)V4L2_CAP_VIDEO_CAPTURE ;if (dev->core->board.tuner_type !=UNSET ) dev->mpeg_dev.device_caps |=V4L2_CAP_TUNER ; - err =video_register_device (&dev->mpeg_dev,VFL_TYPE_GRABBER ,-1 ); + err =video_register_device (&dev->mpeg_dev,VFL_TYPE_VIDEO ,-1 );if (err <0 ) {pr_info ("can't register mpeg device\n" );return err;
drivers/media/pci/cx88/cx88-video.c +1 -1
@@ -1452,7 +1452,7 @@ static int cx8800_initdev(struct pci_dev *pci_dev,V4L2_CAP_VIDEO_CAPTURE ;if (core->board.tuner_type !=UNSET ) dev->video_dev.device_caps |=V4L2_CAP_TUNER ; - err =video_register_device (&dev->video_dev,VFL_TYPE_GRABBER , + err =video_register_device (&dev->video_dev,VFL_TYPE_VIDEO , video_nr[core->nr]);if (err <0 ) {pr_err ("can't register video device\n" );
drivers/media/pci/dt3155/dt3155.c +1 -1
@@ -550,7 +550,7 @@ static int dt3155_probe(struct pci_dev *pdev, const struct pci_device_id *id) IRQF_SHARED, DT3155_NAME, pd);if (err) goto err_iounmap; - err =video_register_device (&pd->vdev,VFL_TYPE_GRABBER ,-1 ); + err =video_register_device (&pd->vdev,VFL_TYPE_VIDEO ,-1 );if (err) goto err_free_irq;dev_info (&pdev->dev,"/dev/video%i is ready\n" , pd->vdev.minor);
drivers/media/pci/intel/ipu3/ipu3-cio2.c +1 -1
@@ -1651,7 +1651,7 @@ static int cio2_queue_init(struct cio2_device *cio2, struct cio2_queue *q) vdev->queue = &q->vbq; vdev->device_caps =V4L2_CAP_VIDEO_CAPTURE_MPLANE |V4L2_CAP_STREAMING ;video_set_drvdata (vdev, cio2); - r =video_register_device (vdev,VFL_TYPE_GRABBER ,-1 ); + r =video_register_device (vdev,VFL_TYPE_VIDEO ,-1 );if (r) {dev_err (&cio2->pci_dev->dev,"failed to register video device (%d)\n" , r);
drivers/media/pci/ivtv/ivtv-streams.c +6 -6
@@ -99,7 +99,7 @@ static struct { } ivtv_stream_info[] = { {/* IVTV_ENC_STREAM_TYPE_MPG */ "encoder MPG" , -VFL_TYPE_GRABBER ,0 , +VFL_TYPE_VIDEO ,0 ,PCI_DMA_FROMDEVICE ,0 ,V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_TUNER | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
@@ -107,7 +107,7 @@ static struct { }, {/* IVTV_ENC_STREAM_TYPE_YUV */ "encoder YUV" , -VFL_TYPE_GRABBER ,IVTV_V4L2_ENC_YUV_OFFSET , +VFL_TYPE_VIDEO ,IVTV_V4L2_ENC_YUV_OFFSET ,PCI_DMA_FROMDEVICE ,0 ,V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_TUNER | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
@@ -123,7 +123,7 @@ static struct { }, {/* IVTV_ENC_STREAM_TYPE_PCM */ "encoder PCM" , -VFL_TYPE_GRABBER ,IVTV_V4L2_ENC_PCM_OFFSET , +VFL_TYPE_VIDEO ,IVTV_V4L2_ENC_PCM_OFFSET ,PCI_DMA_FROMDEVICE ,0 ,V4L2_CAP_TUNER |V4L2_CAP_AUDIO |V4L2_CAP_READWRITE , &ivtv_v4l2_enc_fops
@@ -137,7 +137,7 @@ static struct { }, {/* IVTV_DEC_STREAM_TYPE_MPG */ "decoder MPG" , -VFL_TYPE_GRABBER ,IVTV_V4L2_DEC_MPG_OFFSET , +VFL_TYPE_VIDEO ,IVTV_V4L2_DEC_MPG_OFFSET ,PCI_DMA_TODEVICE ,0 ,V4L2_CAP_VIDEO_OUTPUT |V4L2_CAP_AUDIO |V4L2_CAP_READWRITE , &ivtv_v4l2_dec_fops
@@ -158,7 +158,7 @@ static struct { }, {/* IVTV_DEC_STREAM_TYPE_YUV */ "decoder YUV" , -VFL_TYPE_GRABBER ,IVTV_V4L2_DEC_YUV_OFFSET , +VFL_TYPE_VIDEO ,IVTV_V4L2_DEC_YUV_OFFSET ,PCI_DMA_TODEVICE ,0 ,V4L2_CAP_VIDEO_OUTPUT |V4L2_CAP_AUDIO |V4L2_CAP_READWRITE , &ivtv_v4l2_dec_fops
@@ -315,7 +315,7 @@ static int ivtv_reg_dev(struct ivtv *itv, int type) name =video_device_node_name (&s->vdev);switch (vfl_type) { -case VFL_TYPE_GRABBER : +case VFL_TYPE_VIDEO :IVTV_INFO ("Registered device %s for %s (%d kB)\n" , name, s->name, itv->options.kilobytes[type]);break ;
drivers/media/pci/meye/meye.c +1 -1
@@ -1711,7 +1711,7 @@ static int meye_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)v4l2_ctrl_handler_setup (&meye.hdl); meye.vdev.ctrl_handler = &meye.hdl; -if (video_register_device (&meye.vdev,VFL_TYPE_GRABBER , +if (video_register_device (&meye.vdev,VFL_TYPE_VIDEO , video_nr) <0 ) {v4l2_err (v4l2_dev,"video_register_device failed\n" ); goto outvideoreg;
drivers/media/pci/saa7134/saa7134-core.c +1 -1
@@ -1214,7 +1214,7 @@ static int saa7134_initdev(struct pci_dev *pci_dev,if (saa7134_no_overlay <=0 ) dev->video_dev->device_caps |=V4L2_CAP_VIDEO_OVERLAY ; - err =video_register_device (dev->video_dev,VFL_TYPE_GRABBER , + err =video_register_device (dev->video_dev,VFL_TYPE_VIDEO , video_nr[dev->nr]);if (err <0 ) { pr_info("%s: can't register video device\n",
drivers/media/pci/saa7134/saa7134-empress.c +1 -1
@@ -294,7 +294,7 @@ static int empress_init(struct saa7134_dev *dev) dev->empress_dev->device_caps |=V4L2_CAP_TUNER ;video_set_drvdata (dev->empress_dev, dev); - err =video_register_device (dev->empress_dev,VFL_TYPE_GRABBER , + err =video_register_device (dev->empress_dev,VFL_TYPE_VIDEO , empress_nr[dev->nr]);if (err <0 ) { pr_info("%s: can't register video device\n",
drivers/media/pci/saa7146/hexium_gemini.c +1 -1
@@ -294,7 +294,7 @@ static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_d vv_data.vid_ops.vidioc_enum_input = vidioc_enum_input; vv_data.vid_ops.vidioc_g_input = vidioc_g_input; vv_data.vid_ops.vidioc_s_input = vidioc_s_input; - ret =saa7146_register_device (&hexium->video_dev, dev,"hexium gemini" ,VFL_TYPE_GRABBER ); + ret =saa7146_register_device (&hexium->video_dev, dev,"hexium gemini" ,VFL_TYPE_VIDEO );if (ret <0 ) {pr_err ("cannot register capture v4l2 device. skipping.\n" );saa7146_vv_release (dev);
drivers/media/pci/saa7146/hexium_orion.c +1 -1
@@ -368,7 +368,7 @@ static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_d vv_data.vid_ops.vidioc_enum_input = vidioc_enum_input; vv_data.vid_ops.vidioc_g_input = vidioc_g_input; vv_data.vid_ops.vidioc_s_input = vidioc_s_input; -if (0 !=saa7146_register_device (&hexium->video_dev, dev,"hexium orion" ,VFL_TYPE_GRABBER )) { +if (0 !=saa7146_register_device (&hexium->video_dev, dev,"hexium orion" ,VFL_TYPE_VIDEO )) {pr_err ("cannot register capture v4l2 device. skipping.\n" );return -1 ; }
drivers/media/pci/saa7146/mxb.c +1 -1
@@ -714,7 +714,7 @@ static int mxb_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data vv_data.vid_ops.vidioc_g_register = vidioc_g_register; vv_data.vid_ops.vidioc_s_register = vidioc_s_register;#endif -if (saa7146_register_device (&mxb->video_dev, dev,"mxb" ,VFL_TYPE_GRABBER )) { +if (saa7146_register_device (&mxb->video_dev, dev,"mxb" ,VFL_TYPE_VIDEO )) {ERR ("cannot register capture v4l2 device. skipping.\n" );saa7146_vv_release (dev);return -1 ;
drivers/media/pci/saa7164/saa7164-encoder.c +1 -1
@@ -1087,7 +1087,7 @@ int saa7164_encoder_register(struct saa7164_port *port)v4l2_ctrl_handler_setup (hdl);video_set_drvdata (port->v4l_device, port); result =video_register_device (port->v4l_device, -VFL_TYPE_GRABBER ,-1 ); +VFL_TYPE_VIDEO ,-1 );if (result <0 ) {printk (KERN_INFO "%s: can't register mpeg device\n" , dev->name);
drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c +1 -1
@@ -1304,7 +1304,7 @@ static struct solo_enc_dev *solo_enc_alloc(struct solo_dev *solo_dev, solo_enc->vfd->queue = &solo_enc->vidq; solo_enc->vfd->lock = &solo_enc->lock;video_set_drvdata (solo_enc->vfd, solo_enc); - ret =video_register_device (solo_enc->vfd,VFL_TYPE_GRABBER , nr); + ret =video_register_device (solo_enc->vfd,VFL_TYPE_VIDEO , nr);if (ret <0 ) goto vdev_release;
drivers/media/pci/solo6x10/solo6x10-v4l2.c +1 -1
@@ -692,7 +692,7 @@ int solo_v4l2_init(struct solo_dev *solo_dev, unsigned nr)while (erase_off (solo_dev))/* Do nothing */ ; - ret =video_register_device (solo_dev->vfd,VFL_TYPE_GRABBER , nr); + ret =video_register_device (solo_dev->vfd,VFL_TYPE_VIDEO , nr);if (ret <0 ) goto fail;
drivers/media/pci/sta2x11/sta2x11_vip.c +1 -1
@@ -1069,7 +1069,7 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev, vip->video_dev.lock = &vip->v4l_lock;video_set_drvdata (&vip->video_dev, vip); - ret =video_register_device (&vip->video_dev,VFL_TYPE_GRABBER ,-1 ); + ret =video_register_device (&vip->video_dev,VFL_TYPE_VIDEO ,-1 );if (ret) goto vrelease;
drivers/media/pci/ttpci/av7110_v4l.c +1 -1
@@ -831,7 +831,7 @@ int av7110_init_v4l(struct av7110 *av7110)if (FW_VERSION (av7110->arm_app) <0x2623 ) vv_data->capabilities &= ~V4L2_CAP_SLICED_VBI_OUTPUT ; -if (saa7146_register_device (&av7110->v4l_dev, dev,"av7110" ,VFL_TYPE_GRABBER )) { +if (saa7146_register_device (&av7110->v4l_dev, dev,"av7110" ,VFL_TYPE_VIDEO )) {ERR ("cannot register capture device. skipping\n" );saa7146_vv_release (dev);return -ENODEV ;
drivers/media/pci/ttpci/budget-av.c +6 -4
@@ -1462,7 +1462,8 @@ static int budget_av_attach(struct saa7146_dev *dev, struct saa7146_pci_extensio budget_av->has_saa7113 =1 ; err =saa7146_vv_init (dev, &vv_data);if (err !=0 ) { -/* fixme: proper cleanup here */ +ttpci_budget_deinit (&budget_av->budget); +kfree (budget_av);ERR ("cannot init vv subsystem\n" );return err; }
@@ -1470,10 +1471,11 @@ static int budget_av_attach(struct saa7146_dev *dev, struct saa7146_pci_extensio vv_data.vid_ops.vidioc_g_input = vidioc_g_input; vv_data.vid_ops.vidioc_s_input = vidioc_s_input; -if ((err =saa7146_register_device (&budget_av->vd, dev,"knc1" ,VFL_TYPE_GRABBER ))) { -/* fixme: proper cleanup here */ -ERR ("cannot register capture v4l2 device\n" ); +if ((err =saa7146_register_device (&budget_av->vd, dev,"knc1" ,VFL_TYPE_VIDEO ))) {saa7146_vv_release (dev); +ttpci_budget_deinit (&budget_av->budget); +kfree (budget_av); +ERR ("cannot register capture v4l2 device\n" );return err; }
drivers/media/pci/tw5864/tw5864-video.c +1 -1
@@ -1162,7 +1162,7 @@ static int tw5864_video_input_init(struct tw5864_input *input, int video_nr) input->gop =GOP_SIZE ; input->frame_interval =1 ; - ret =video_register_device (&input->vdev,VFL_TYPE_GRABBER , video_nr); + ret =video_register_device (&input->vdev,VFL_TYPE_VIDEO , video_nr);if (ret) goto free_v4l2_hdl;
drivers/media/pci/tw68/tw68-video.c +1 -1
@@ -962,7 +962,7 @@ int tw68_video_init2(struct tw68_dev *dev, int video_nr) dev->vdev.lock = &dev->lock; dev->vdev.queue = &dev->vidq;video_set_drvdata (&dev->vdev, dev); -return video_register_device (&dev->vdev,VFL_TYPE_GRABBER , video_nr); +return video_register_device (&dev->vdev,VFL_TYPE_VIDEO , video_nr); }/*
drivers/media/pci/tw686x/tw686x-video.c +1 -1
@@ -1282,7 +1282,7 @@ int tw686x_video_init(struct tw686x_dev *dev) vc->device = vdev;video_set_drvdata (vdev, vc); - err =video_register_device (vdev,VFL_TYPE_GRABBER ,-1 ); + err =video_register_device (vdev,VFL_TYPE_VIDEO ,-1 );if (err <0 ) goto error; vc->num = vdev->num;
drivers/media/usb/em28xx/em28xx-cards.c +4 -0
@@ -3989,6 +3989,10 @@ static int em28xx_usb_probe(struct usb_interface *intf,* topology will likely change after the load of the em28xx subdrivers. */ #ifdef CONFIG_MEDIA_CONTROLLER +/* +* No need to check the return value, the device will still be +* usable without media controller API. +*/ retval =media_device_register (dev->media_dev);#endif
drivers/media/usb/go7007/go7007-driver.c +5 -3
@@ -80,7 +80,7 @@ static int go7007_load_encoder(struct go7007 *go)const struct firmware *fw_entry;char fw_name[] ="go7007/go7007fw.bin" ;void *bounce; -int fw_len, rv =0 ; +int fw_len;u16 intr_val, intr_data;if (go->boot_fw ==NULL ) {
@@ -109,9 +109,11 @@ static int go7007_load_encoder(struct go7007 *go) go7007_read_interrupt(go, &intr_val, &intr_data) < 0 || (intr_val & ~0x1) != 0x5a5a) {v4l2_err (go,"error transferring firmware\n" ); - rv =-1 ; +kfree (go->boot_fw); + go->boot_fw =NULL ; +return -1 ; } -return rv; +return 0 ; }MODULE_FIRMWARE ("go7007/go7007fw.bin" );
drivers/media/usb/go7007/go7007-usb.c +3 -1
@@ -1198,7 +1198,9 @@ static int go7007_usb_probe(struct usb_interface *intf,u16 channel;/* read channel number from GPIO[1:0] */ -go7007_read_addr (go,0x3c81 , &channel); +if (go7007_read_addr (go,0x3c81 , &channel)) + goto allocfail; + channel &=0x3 ; go->board_id =GO7007_BOARDID_ADLINK_MPG24 ; usb->board = board = &board_adlink_mpg24;
drivers/media/usb/pvrusb2/pvrusb2-context.c +5 -5
@@ -90,8 +90,10 @@ static void pvr2_context_destroy(struct pvr2_context *mp) } -static void pvr2_context_notify (struct pvr2_context *mp) +static void pvr2_context_notify (void *ptr) { +struct pvr2_context *mp = ptr; +pvr2_context_set_notify (mp,!0 ); }
@@ -106,9 +108,7 @@ static void pvr2_context_check(struct pvr2_context *mp)pvr2_trace (PVR2_TRACE_CTXT ,"pvr2_context %p (initialize)" , mp);/* Finish hardware initialization */ -if (pvr2_hdw_initialize (mp->hdw, - (void (*)(void *))pvr2_context_notify, - mp)) { +if (pvr2_hdw_initialize (mp->hdw, pvr2_context_notify, mp)) { mp->video_stream.stream =pvr2_hdw_get_video_stream (mp->hdw);/* Trigger interface initialization. By doing this
@@ -267,9 +267,9 @@ static void pvr2_context_exit(struct pvr2_context *mp)void pvr2_context_disconnect (struct pvr2_context *mp) {pvr2_hdw_disconnect (mp->hdw); - mp->disconnect_flag = !0 ;if (!pvr2_context_shutok ())pvr2_context_notify (mp);
Lines of this file are not shown. View the raw message.
drivers/media/usb/pvrusb2/pvrusb2-dvb.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/media/usb/pvrusb2/pvrusb2-v4l2.c +4 -7
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-dev.c +42 -26
68 lines not on this page · raw message
drivers/net/ethernet/amazon/ena/ena_com.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amazon/ena/ena_netdev.c +1 -19
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_main.c +55 -57
112 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +14 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/lag_conf.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath10k/wmi-tlv.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/b43.h +16 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/dma.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/main.c +12 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43/pio.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_cmn.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy_shim.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy_shim.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas/cmd.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/debugfs.c +0 -3
Lines of this file are not shown. View the raw message.
drivers/staging/media/imx/imx-media-csc-scaler.c +1 -0
Lines of this file are not shown. View the raw message.
fs/io_uring.c +8 -57
65 lines not on this page · raw message
fs/quota/dquot.c +101 -125
226 lines not on this page · 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.