Linux 4.19.311
Sasha Levin
maintainer-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I'm announcing the release of the 4.19.311 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
Thanks,
Sasha
- ------------
.../ABI/testing/sysfs-bus-pci-devices-aer_stats | 12 +- Documentation/filesystems/Locking | 4 +- Makefile | 2 +- arch/arm/boot/dts/arm-realview-pb1176.dts | 2 +- arch/arm/crypto/sha256_glue.c | 21 +- arch/arm/crypto/sha256_neon_glue.c | 24 +-- arch/arm/crypto/sha512-glue.c | 12 +- arch/mips/include/asm/ptrace.h | 1 + arch/powerpc/perf/hv-gpci.c | 29 ++- arch/powerpc/platforms/embedded6xx/linkstation.c | 3 - arch/powerpc/platforms/embedded6xx/mpc10x.h | 3 + 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/genhd.c | 8 +- block/ioctl.c | 5 + block/opal_proto.h | 1 + block/sed-opal.c | 6 +- crypto/af_alg.c | 42 ++-- crypto/algif_aead.c | 10 +- crypto/algif_skcipher.c | 11 +- drivers/acpi/processor_idle.c | 2 + drivers/acpi/scan.c | 8 +- drivers/block/aoe/aoecmd.c | 12 +- drivers/block/aoe/aoenet.c | 1 + drivers/bus/Kconfig | 5 +- drivers/clk/hisilicon/clk-hi3519.c | 2 +- drivers/clk/qcom/dispcc-sdm845.c | 2 + drivers/clk/qcom/gdsc.c | 26 ++- drivers/clk/qcom/gdsc.h | 8 +- drivers/clk/qcom/reset.c | 33 +-- drivers/clk/qcom/reset.h | 2 + drivers/firewire/core-card.c | 14 +- drivers/gpu/drm/amd/amdgpu/atom.c | 2 +- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 12 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 10 +- drivers/gpu/drm/radeon/ni.c | 2 +- drivers/gpu/drm/rockchip/inno_hdmi.c | 4 +- drivers/gpu/drm/rockchip/rockchip_lvds.c | 3 +- drivers/gpu/drm/tegra/dsi.c | 49 +++-- drivers/gpu/drm/tegra/fb.c | 1 + drivers/gpu/host1x/mipi.c | 4 +- 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/md/md.c | 95 ++++---- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 52 ++++- drivers/media/dvb-core/dvbdev.c | 95 ++++++-- drivers/media/dvb-frontends/drx39xyj/drxj.c | 5 +- drivers/media/dvb-frontends/stv0367.c | 34 +-- drivers/media/i2c/tc358743.c | 7 +- 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 | 6 +- drivers/media/v4l2-core/v4l2-mem2mem.c | 10 +- drivers/mfd/syscon.c | 4 +- drivers/mmc/host/wmt-sdmmc.c | 4 - drivers/mtd/nand/raw/lpc32xx_mlc.c | 5 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 6 +- drivers/net/ethernet/intel/igb/igb_main.c | 112 +++++----- .../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/quirks.c | 1 + 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/tty/serial/8250/8250_exar.c | 5 +- drivers/tty/serial/max310x.c | 2 +- drivers/tty/serial/samsung.c | 5 +- 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 + fs/fhandle.c | 2 +- fs/nfs/nfsroot.c | 4 +- fs/quota/dquot.c | 238 ++++++++++----------- fs/select.c | 2 +- include/crypto/if_alg.h | 11 +- include/drm/drm_fixed.h | 2 +- include/linux/blkdev.h | 3 +- include/linux/host1x.h | 3 +- include/linux/poll.h | 4 - include/linux/qcom_scm.h | 4 +- include/media/dvbdev.h | 15 ++ kernel/bpf/hashtab.c | 14 +- kernel/bpf/stackmap.c | 9 +- kernel/time/timekeeping.c | 24 +-- net/bluetooth/hci_core.c | 2 +- net/bluetooth/hci_event.c | 2 - net/bluetooth/rfcomm/core.c | 2 +- net/core/sock_diag.c | 10 +- net/hsr/hsr_forward.c | 8 +- net/hsr/hsr_framereg.c | 8 +- net/hsr/hsr_main.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/rds/send.c | 5 +- net/sunrpc/addr.c | 4 +- net/sunrpc/auth_gss/gss_rpc_xdr.c | 27 ++- net/unix/garbage.c | 2 +- net/x25/af_x25.c | 4 +- scripts/kconfig/zconf.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/util/evsel.c | 1 - tools/perf/util/thread_map.c | 2 +- 141 files changed, 1006 insertions(+), 702 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
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
Baokun Li (1):
quota: simplify drop_dquot_ref()
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
Chengguang Xu (2):
quota: code cleanup for __dquot_alloc_space()
quota: check time limit when back out space/inode change
Christoph Hellwig (3):
md: switch to ->check_events for media change notifications
block: add a new set_read_only method
md: implement ->set_read_only to hook into BLKROSET processingChristophe JAILLET (6):
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()
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 (1):
media: go7007: add check of return value of go7007_read_addr()
Dinghao Liu (1):
media: dvbdev: Fix memleak in dvb_register_device
Duoming Zhou (1):
nfp: flower: handle acti_netdevs allocation failure
Edward Adam Davis (1):
media: pvrusb2: fix uaf in pvr2_context_set_notify
Eric Biggers (1):
crypto: af_alg - make some functions static
Eric Dumazet (1):
sock_diag: annotate data-races around sock_diag_handlers[family]
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
Fuqian Huang (1):
media: media/dvb: Use kmemdup rather than duplicating its implementation
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
Govind Singh (1):
firmware: qcom: scm: Add WLAN VMID for Qualcomm SCM interface
Greg Joyce (1):
block: sed-opal: handle empty atoms when parsing response
Hans de Goede (2):
ASoC: rt5645: Make LattePanda board DMI match more precise
crypto: arm - Rename functions to avoid conflict with crypto/sha256.h
Harry Wentland (1):
drm: Don't treat 0 as -1 in drm_fixp2int_ceil
Herbert Xu (3):
crypto: algif_aead - Only wake up when ctx->more is zero
crypto: af_alg - Fix regression on empty requests
crypto: af_alg - Work around empty control messages without MSG_MORE
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
Hyunwoo Kim (1):
media: dvb-core: Fix use-after-free due to race at dvb_register_device()
Jan Kara (1):
quota: Fix rcu annotations of inode dquot pointers
Jerome Brunet (1):
ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs
Jiang Biao (1):
fs/quota: erase unused but set variable warning
Jiaxun Yang (1):
MIPS: Clear Cause.BD in instruction_pointer_set
Jinjie Ruan (1):
wifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir()
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
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
Li Nan (1):
md: Don't clear MD_CLOSING when the raid is about to stop
Luca Weiss (2):
backlight: lm3630a: Initialize backlight_properties on init
backlight: lm3630a: Don't set bl->props.brightness in get_brightness
Luiz Augusto von Dentz (1):
Bluetooth: hci_core: Fix possible buffer overflow
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
Mauro Carvalho Chehab (3):
ABI: sysfs-bus-pci-devices-aer_stats uses an invalid tag
media: dvbdev: remove double-unlock
media: dvbdev: fix error logic at dvb_register_device()
Michael Ellerman (1):
powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc.
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
Murali Karicheri (1):
net: hsr: fix placement of logical operator in a multi-line statement
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()
Ondrej Mosnacek (1):
crypto: algif_aead - fix uninitialized ctx->init
Peter Griffin (1):
mfd: syscon: 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 (1):
bus: tegra-aconnect: Update dependency to ARCH_TEGRA
Quentin Schulz (2):
drm/rockchip: lvds: do not overwrite error code drm/rockchip: lvds: do not print scary message when probing defer
Rafael J. Wysocki (1):
ACPI: scan: Fix device check notification handling
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 4.19.311
Saurav Girepunje (2):
b43: dma: Fix use true/false for bool type variable
b43: main: Fix use true/false for bool type
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 (1):
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
Takashi Iwai (1):
ALSA: seq: fix function cast warnings
Takashi Sakamoto (1):
firewire: core: use long bus reset on gap count error
Taniya Das (1):
clk: qcom: gdsc: Add support to update GDSC transition delay
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
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()
Yang Jihong (2):
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()
Yuxuan Hu (1):
Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security
Zhipeng Lu (6):
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
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEE4n5dijQDou9mhzu83qZv95d3LNwFAmYDUFcACgkQ3qZv95d3 LNyXiA/9G3lM0yL2Z1RAq52tGmp9xRgfqlnQC5VY7bzV3q/gPCIZYu/4OiVU0PNz OVpSLI9mVPU6l7HlwJ1BZ09Lr4WkDmZppNoL42jP8NneBwuEieMW8Fxf5iEM5w1H ah8nt5ebNhkikOpOJlKiAj+fctQO5MTIDi90Uk3E6yRFvlViTXfua94CtjzBmrWU oJAAoKNV2sUBmKcmHZ5EzeJCo/OGWESgbIXbmhpBzjVbP724hgEQXm9hExQ3GKsQ EyLXkAJ7b4JLmY6Fio5ePUsYcOnNWqVa0sojWwQMhLjMUjSrXd/BxmqM165C96Nr 5sxRM9+WhKSsH3L505pGNhu51DtX6+QJ6M29cS6r7pSj9NGo+UimJgSMPZs2RnSJ 3ZSkMyMJgEnOtnSDG4GIMqIwYOjFfjdE7371qksDUrGhfHy+E28soltkjK8KAaOm 8ueRJemJ8/yNXDno0lBNbNZ2LmTAVMZC1ymUbjatmmHqT9ymF8YzK2xNtQY4bRL7 pifnavt35i3XGAHVTcpo+mbDeQmfXqIszKNg6whlKE0agGCX9ttWh2aFCnIZyWMt EjKi4TSpNeYWYPYE1NkGt1n/kalytoMaUC8sNaXmo60Cvv7dFnDvJey5nsZeZW/c 4cK2T/KLShrUMOnY4vSIPBteNYGjoWeeSEYgmwqw4UqoeO+63QA= =zFEj
-----END PGP SIGNATURE-----
Sasha Levin
maintainerDocumentation/ABI/testing/sysfs-bus-pci-devices-aer_stats +6 -6
@@ -9,7 +9,7 @@ errors may be "seen" / reported by the link partner and not the problematic endpoint itself (which may report all counters as 0 as it never saw any problems). -Where: /sys/bus/pci/devices/<dev>/aer_dev_correctable +What: /sys/bus/pci/devices/<dev>/aer_dev_correctable Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected]
@@ -31,7 +31,7 @@ Header Log Overflow 0 TOTAL_ERR_COR 2 ------------------------------------------------------------------------- -Where: /sys/bus/pci/devices/<dev>/aer_dev_fatal +What: /sys/bus/pci/devices/<dev>/aer_dev_fatal Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected]
@@ -62,7 +62,7 @@ TLP Prefix Blocked Error 0 TOTAL_ERR_FATAL 0 ------------------------------------------------------------------------- -Where: /sys/bus/pci/devices/<dev>/aer_dev_nonfatal +What: /sys/bus/pci/devices/<dev>/aer_dev_nonfatal Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected]
@@ -103,19 +103,19 @@ collectors) that are AER capable. These indicate the number of error messages as device, so these counters include them and are thus cumulative of all the error messages on the PCI hierarchy originating at that root port. -Where: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_cor +What: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_cor Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected] Description: Total number of ERR_COR messages reported to rootport. -Where: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_fatal +What: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_fatal Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected] Description: Total number of ERR_FATAL messages reported to rootport. -Where: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_nonfatal +What: /sys/bus/pci/devices/<dev>/aer_stats/aer_rootport_total_err_nonfatal Date: July 2018 Kernel Version: 4.19.0 Contact: [email protected], [email protected]
Documentation/filesystems/Locking +1 -3
@@ -404,7 +404,6 @@ prototypes: int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); int (*direct_access) (struct block_device *, sector_t, void **, unsigned long *); - int (*media_changed) (struct gendisk *); void (*unlock_native_capacity) (struct gendisk *); int (*revalidate_disk) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *);
@@ -417,13 +416,12 @@ release: yes ioctl: no compat_ioctl: no direct_access: no -media_changed: no unlock_native_capacity: no revalidate_disk: no getgeo: no swap_slot_free_notify: no (see below) -media_changed, unlock_native_capacity and revalidate_disk are called only from +unlock_native_capacity and revalidate_disk are called only from check_disk_change(). swap_slot_free_notify is called with swap_lock and sometimes the page lock
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 310 +SUBLEVEL = 311 EXTRAVERSION = NAME = "People's Front"
arch/arm/boot/dts/arm-realview-pb1176.dts +1 -1
@@ -427,7 +427,7 @@ /* Direct-mapped development chip ROM */ pb1176_rom@10200000 { - compatible = "direct-mapped"; + compatible = "mtd-rom"; reg = <0x10200000 0x4000>; bank-width = <1>; };
arch/arm/crypto/sha256_glue.c +9 -12
@@ -30,8 +30,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)
@@ -39,24 +39,21 @@ 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 sha256_final (struct shash_desc *desc,u8 *out) +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); -return sha256_final (desc, out); +sha256_base_do_update (desc, data, len, sha256_block_data_order); +return crypto_sha256_arm_final (desc, out); }EXPORT_SYMBOL (crypto_sha256_arm_finup);
@@ -64,7 +61,7 @@ static struct shash_alg algs[] = { { .digestsize = SHA256_DIGEST_SIZE, .init = sha256_base_init, .update = crypto_sha256_arm_update, - .final = sha256_final, + .final = crypto_sha256_arm_final, .finup = crypto_sha256_arm_finup, .descsize = sizeof(struct sha256_state), .base = {
@@ -78,7 +75,7 @@ static struct shash_alg algs[] = { { .digestsize = SHA224_DIGEST_SIZE, .init = sha224_base_init, .update = crypto_sha256_arm_update, - .final = sha256_final, + .final = crypto_sha256_arm_final, .finup = crypto_sha256_arm_finup, .descsize = sizeof(struct sha256_state), .base = {
arch/arm/crypto/sha256_neon_glue.c +12 -12
@@ -29,8 +29,8 @@ asmlinkage void sha256_block_data_order_neon(u32 *digest, const void *data,unsigned int num_blks); -static int sha256_update (struct shash_desc *desc,const u8 *data, -unsigned int len) +static int crypto_sha256_neon_update (struct shash_desc *desc,const u8 *data, +unsigned int len) {struct sha256_state *sctx =shash_desc_ctx (desc);
@@ -46,8 +46,8 @@ static int sha256_update(struct shash_desc *desc, const u8 *data,return 0 ; } -static int sha256_finup (struct shash_desc *desc,const u8 *data, -unsigned int len,u8 *out) +static int crypto_sha256_neon_finup (struct shash_desc *desc,const u8 *data, +unsigned int len,u8 *out) {if (!may_use_simd ())return crypto_sha256_arm_finup (desc, data, len, out);
@@ -63,17 +63,17 @@ static int sha256_finup(struct shash_desc *desc, const u8 *data,return sha256_base_finish (desc, out); } -static int sha256_final (struct shash_desc *desc,u8 *out) +static int crypto_sha256_neon_final (struct shash_desc *desc,u8 *out) { -return sha256_finup (desc,NULL ,0 , out); +return crypto_sha256_neon_finup (desc,NULL ,0 , out); }struct shash_alg sha256_neon_algs[] = { { .digestsize =SHA256_DIGEST_SIZE , .init = sha256_base_init, - .update = sha256_update, - .final = sha256_final, - .finup = sha256_finup, + .update = crypto_sha256_neon_update, + .final = crypto_sha256_neon_final, + .finup = crypto_sha256_neon_finup, .descsize =sizeof (struct sha256_state ), .base = { .cra_name ="sha256" ,
@@ -85,9 +85,9 @@ struct shash_alg sha256_neon_algs[] = { { }, { .digestsize = SHA224_DIGEST_SIZE, .init = sha224_base_init, - .update = sha256_update, - .final = sha256_final, - .finup = sha256_finup, + .update = crypto_sha256_neon_update, + .final = crypto_sha256_neon_final, + .finup = crypto_sha256_neon_finup, .descsize = sizeof(struct sha256_state), .base = { .cra_name = "sha224",
arch/arm/crypto/sha512-glue.c +5 -7
@@ -28,27 +28,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); }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/mips/include/asm/ptrace.h +1 -0
@@ -65,6 +65,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/powerpc/perf/hv-gpci.c +27 -2
@@ -157,6 +157,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;
@@ -221,6 +235,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)
@@ -260,13 +275,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/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
@@ -579,6 +579,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/genhd.c +1 -7
@@ -1771,18 +1771,12 @@ void disk_flush_events(struct gendisk *disk, unsigned int mask)*/ unsigned int disk_clear_events (struct gendisk *disk,unsigned int mask) { -const struct block_device_operations *bdops = disk->fops;struct disk_events *ev = disk->ev;unsigned int pending;unsigned int clearing = mask; -if (!ev) { -/* for drivers still using the old ->media_changed method */ -if ((mask &DISK_EVENT_MEDIA_CHANGE ) && - bdops->media_changed && bdops->media_changed (disk)) -return DISK_EVENT_MEDIA_CHANGE ; +if (!ev)return 0 ; - }disk_block_events (disk);
block/ioctl.c +5 -0
@@ -451,6 +451,11 @@ static int blkdev_roset(struct block_device *bdev, fmode_t mode,return ret;if (get_user (n, (int __user *)arg))return -EFAULT ; +if (bdev->bd_disk->fops->set_read_only) { + ret = bdev->bd_disk->fops->set_read_only (bdev, n); +if (ret) +return ret; + }set_device_ro (bdev, n);return 0 ; }
block/opal_proto.h +1 -0
@@ -73,6 +73,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
@@ -844,16 +844,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++; }if (num_entries ==0 ) {
crypto/af_alg.c +24 -18
145 lines not on this page · raw message
crypto/algif_aead.c +2 -8
@@ -110,8 +110,8 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,size_t usedpages =0 ;/* [in] RX bufs to be used from user */ size_t processed =0 ;/* [in] TX bufs to be consumed */ -if (!ctx->used) { - err =af_alg_wait_for_data (sk, flags); +if (!ctx->init || ctx->more) { + err =af_alg_wait_for_data (sk, flags,0 );if (err)return err; }
@@ -563,12 +563,6 @@ static int aead_accept_parent_nokey(void *private, struct sock *sk)INIT_LIST_HEAD (&ctx->tsgl_list); ctx->len = len; - ctx->used =0 ; -atomic_set (&ctx->rcvused,0 ); - ctx->more =0 ; - ctx->merge =0 ; - ctx->enc =0 ; - ctx->aead_assoclen =0 ;crypto_init_wait (&ctx->wait); ask->private = ctx;
crypto/algif_skcipher.c +3 -8
@@ -65,8 +65,8 @@ static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,int err =0 ;size_t len =0 ; -if (!ctx->used) { - err =af_alg_wait_for_data (sk, flags); +if (!ctx->init || (ctx->more && ctx->used < bs)) { + err =af_alg_wait_for_data (sk, flags, bs);if (err)return err; }
@@ -337,6 +337,7 @@ static int skcipher_accept_parent_nokey(void *private, struct sock *sk) ctx =sock_kmalloc (sk, len,GFP_KERNEL );if (!ctx)return -ENOMEM ; +memset (ctx,0 , len); ctx->iv =sock_kmalloc (sk,crypto_skcipher_ivsize (tfm),GFP_KERNEL );
@@ -344,16 +345,10 @@ static int skcipher_accept_parent_nokey(void *private, struct sock *sk)sock_kfree_s (sk, ctx, len);return -ENOMEM ; } -memset (ctx->iv,0 ,crypto_skcipher_ivsize (tfm));INIT_LIST_HEAD (&ctx->tsgl_list); ctx->len = len; - ctx->used =0 ; -atomic_set (&ctx->rcvused,0 ); - ctx->more =0 ; - ctx->merge =0 ; - ctx->enc =0 ;crypto_init_wait (&ctx->wait); ask->private = ctx;
drivers/acpi/processor_idle.c +2 -0
@@ -1530,6 +1530,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
@@ -321,18 +321,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/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/bus/Kconfig +3 -2
@@ -126,12 +126,13 @@ 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 select PM_CLK 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/hisilicon/clk-hi3519.c +1 -1
@@ -142,7 +142,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/gdsc.c +21 -5
@@ -1,5 +1,5 @@/* -* Copyright (c) 2015, 2017-2018, The Linux Foundation. All rights reserved. +* Copyright (c) 2015, 2017-2018, 2022, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and
@@ -39,9 +39,14 @@#define CFG_GDSCR_OFFSET 0x4/* Wait 2^n CXO cycles between all states. Here, n=2 (4 cycles). */ -#define EN_REST_WAIT_VAL (0x2 << 20) -#define EN_FEW_WAIT_VAL (0x8 << 16) -#define CLK_DIS_WAIT_VAL (0x2 << 12) +#define EN_REST_WAIT_VAL 0x2 +#define EN_FEW_WAIT_VAL 0x8 +#define CLK_DIS_WAIT_VAL 0x2 + +/* Transition delay shifts */ +#define EN_REST_WAIT_SHIFT 20 +#define EN_FEW_WAIT_SHIFT 16 +#define CLK_DIS_WAIT_SHIFT 12#define RETAIN_MEM BIT(14)#define RETAIN_PERIPH BIT(13)
@@ -314,7 +319,18 @@ static int gdsc_init(struct gdsc *sc)*/ mask =HW_CONTROL_MASK |SW_OVERRIDE_MASK |EN_REST_WAIT_MASK |EN_FEW_WAIT_MASK |CLK_DIS_WAIT_MASK ; - val =EN_REST_WAIT_VAL |EN_FEW_WAIT_VAL |CLK_DIS_WAIT_VAL ; + +if (!sc->en_rest_wait_val) + sc->en_rest_wait_val =EN_REST_WAIT_VAL ; +if (!sc->en_few_wait_val) + sc->en_few_wait_val =EN_FEW_WAIT_VAL ; +if (!sc->clk_dis_wait_val) + sc->clk_dis_wait_val =CLK_DIS_WAIT_VAL ; + + val = sc->en_rest_wait_val <<EN_REST_WAIT_SHIFT | + sc->en_few_wait_val <<EN_FEW_WAIT_SHIFT | + sc->clk_dis_wait_val <<CLK_DIS_WAIT_SHIFT ; + ret =regmap_update_bits (sc->regmap, sc->gdscr, mask, val);if (ret)return ret;
drivers/clk/qcom/gdsc.h +7 -1
@@ -1,5 +1,5 @@/* -* Copyright (c) 2015, 2017-2018, The Linux Foundation. All rights reserved. +* Copyright (c) 2015, 2017-2018, 2022, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and
@@ -29,6 +29,9 @@ struct reset_controller_dev;* @cxcs: offsets of branch registers to toggle mem/periph bits in * @cxc_count: number of @cxcs * @pwrsts: Possible powerdomain power states +* @en_rest_wait_val: transition delay value for receiving enr ack signal +* @en_few_wait_val: transition delay value for receiving enf ack signal +* @clk_dis_wait_val: transition delay value for halting clock * @resets: ids of resets associated with this gdsc * @reset_count: number of @resets * @rcdev: reset controller
@@ -42,6 +45,9 @@ struct gdsc {unsigned int clamp_io_ctrl;unsigned int *cxcs;unsigned int cxc_count; +unsigned int en_rest_wait_val; +unsigned int en_few_wait_val; +unsigned int clk_dis_wait_val;const u8 pwrsts;/* Powerdomain allowable state bitfields */ #define PWRSTS_OFF BIT(0)
drivers/clk/qcom/reset.c +18 -15
@@ -21,14 +21,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;
@@ -36,23 +38,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
@@ -19,6 +19,8 @@struct qcom_reset_map {unsigned int reg;u8 bit; +u8 udelay; +u32 bitmask; };struct regmap ;
drivers/firewire/core-card.c +13 -1
@@ -513,7 +513,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
@@ -306,7 +306,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/mediatek/mtk_drm_crtc.c +7 -5
@@ -79,11 +79,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
@@ -70,8 +70,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
@@ -327,10 +327,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 ;
@@ -381,7 +381,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/radeon/ni.c +1 -1
@@ -823,7 +823,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
@@ -408,7 +408,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 );
@@ -423,7 +423,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 +1 -2
@@ -373,8 +373,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master, ret = -EINVAL ; goto err_put_port; }else if (ret) { -DRM_DEV_ERROR (dev,"failed to find panel and bridge node\n" ); - ret = -EPROBE_DEFER ; +dev_err_probe (dev, ret,"failed to find panel and bridge node\n" ); 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
@@ -157,6 +157,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/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/input/keyboard/gpio_keys_polled.c +4 -6
@@ -328,12 +328,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
@@ -1733,6 +1733,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
@@ -3348,14 +3348,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
@@ -72,11 +72,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
@@ -2849,6 +2849,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)
@@ -2857,12 +2860,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/md/md.c +49 -46
160 lines not on this page · raw message
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 +73 -22
185 lines not on this page · raw message
drivers/media/dvb-frontends/drx39xyj/drxj.c +2 -3
@@ -12287,7 +12287,8 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c)if (state ==NULL ) goto error; - demod =kmalloc (sizeof (struct drx_demod_instance ),GFP_KERNEL ); + demod =kmemdup (&drxj_default_demod_g, +sizeof (struct drx_demod_instance ),GFP_KERNEL );if (demod ==NULL ) goto error;
@@ -12311,8 +12312,6 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) state->demod = demod;/* setup the demod data */ -memcpy (demod, &drxj_default_demod_g,sizeof (struct drx_demod_instance )); - demod->my_i2c_dev_addr = demod_addr; demod->my_common_attr = demod_comm_attr; demod->my_i2c_dev_addr->user_data = state;
drivers/media/dvb-frontends/stv0367.c +8 -26
@@ -128,50 +128,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/usb/em28xx/em28xx-cards.c +4 -0
@@ -3990,6 +3990,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
@@ -88,7 +88,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 ) {
@@ -117,9 +117,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
@@ -1206,7 +1206,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
@@ -99,8 +99,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 ); }
@@ -115,9 +117,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
@@ -276,9 +276,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); + mp->disconnect_flag = !0 ; }
drivers/media/usb/pvrusb2/pvrusb2-dvb.c +4 -2
@@ -97,8 +97,10 @@ static int pvr2_dvb_feed_thread(void *data)return stat; } -static void pvr2_dvb_notify (struct pvr2_dvb_adapter *adap) +static void pvr2_dvb_notify (void *ptr) { +struct pvr2_dvb_adapter *adap = ptr; +wake_up (&adap->buffer_wait_data); }
@@ -158,7 +160,7 @@ static int pvr2_dvb_stream_do_start(struct pvr2_dvb_adapter *adap) }pvr2_stream_set_callback (pvr->video_stream.stream, - (pvr2_stream_callback ) pvr2_dvb_notify, adap); + pvr2_dvb_notify, adap); ret =pvr2_stream_set_buffer_count (stream,PVR2_DVB_BUFFER_COUNT );if (ret <0 )return ret;
drivers/media/usb/pvrusb2/pvrusb2-v4l2.c +4 -2
@@ -1055,8 +1055,10 @@ static int pvr2_v4l2_open(struct file *file) } -static void pvr2_v4l2_notify (struct pvr2_v4l2_fh *fhp) +static void pvr2_v4l2_notify (void *ptr) { +struct pvr2_v4l2_fh *fhp = ptr; +wake_up (&fhp->wait_data); }
@@ -1089,7 +1091,7 @@ static int pvr2_v4l2_iosetup(struct pvr2_v4l2_fh *fh) hdw = fh->channel.mc_head->hdw; sp = fh->pdi->stream->stream; -pvr2_stream_set_callback (sp,(pvr2_stream_callback )pvr2_v4l2_notify,fh); +pvr2_stream_set_callback (sp, pvr2_v4l2_notify, fh);pvr2_hdw_set_stream_type (hdw,fh->pdi->config);if ((ret =pvr2_hdw_set_streaming (hdw,!0 )) <0 )return ret;return pvr2_ioread_set_enabled (fh->rhp,!0 );
drivers/media/v4l2-core/v4l2-mem2mem.c +8 -2
@@ -775,11 +775,17 @@ static int v4l2_m2m_register_entity(struct media_device *mdev, entity->function = function; ret =media_entity_pads_init (entity, num_pads, pads); -if (ret) +if (ret) { +kfree (entity->name); + entity->name =NULL ;return ret; + } ret =media_device_register_entity (mdev, entity); -if (ret) +if (ret) { +kfree (entity->name); + entity->name =NULL ;return ret; + }return 0 ; }
drivers/mfd/syscon.c +3 -1
@@ -211,7 +211,9 @@ struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,return ERR_PTR (-ENODEV ); regmap =syscon_node_to_regmap (syscon_np); -of_node_put (syscon_np); + +if (property) +of_node_put (syscon_np);return regmap; }
drivers/mmc/host/wmt-sdmmc.c +0 -4
@@ -893,7 +893,6 @@ static int wmt_mci_remove(struct platform_device *pdev) {struct mmc_host *mmc;struct wmt_mci_priv *priv; -struct resource *res;u32 reg_tmp; mmc =platform_get_drvdata (pdev);
@@ -921,9 +920,6 @@ static int wmt_mci_remove(struct platform_device *pdev)clk_disable_unprepare (priv->clk_sdmmc);clk_put (priv->clk_sdmmc); - res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -release_mem_region (res->start,resource_size (res)); -mmc_free_host (mmc);dev_info (&pdev->dev,"WMT MCI device removed\n" );
drivers/mtd/nand/raw/lpc32xx_mlc.c +3 -2
@@ -316,8 +316,9 @@ static int lpc32xx_nand_device_ready(struct mtd_info *mtd)return 0 ; } -static irqreturn_t lpc3xxx_nand_irq (int irq,struct lpc32xx_nand_host *host) +static irqreturn_t lpc3xxx_nand_irq (int irq,void *data) { +struct lpc32xx_nand_host *host = data;uint8_t sr;/* Clear interrupt flag by reading status */
@@ -790,7 +791,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev) goto release_dma_chan; } -if (request_irq (host->irq, (irq_handler_t)&lpc3xxx_nand_irq, +if (request_irq (host->irq, &lpc3xxx_nand_irq,IRQF_TRIGGER_HIGH ,DRV_NAME , host)) {dev_err (&pdev->dev,"Error requesting NAND IRQ\n" ); res = -ENXIO ;
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +3 -3
@@ -1008,9 +1008,6 @@ static inline void bnx2x_set_fw_mac_addr(__le16 *fw_hi, __le16 *fw_mid,static inline void bnx2x_free_rx_mem_pool (struct bnx2x *bp,struct bnx2x_alloc_pool *pool) { -if (!pool->page) -return ; -put_page (pool->page); pool->page =NULL ;
@@ -1021,6 +1018,9 @@ static inline void bnx2x_free_rx_sge_range(struct bnx2x *bp, {int i; +if (!fp->page_pool.page) +return ; +if (fp->mode ==TPA_MODE_DISABLED )return ;
drivers/net/ethernet/intel/igb/igb_main.c +55 -57
132 lines not on this page · raw message
drivers/net/ethernet/netronome/nfp/flower/lag_conf.c +5 -0
@@ -336,6 +336,11 @@ static void nfp_fl_lag_do_work(struct work_struct *work) acti_netdevs =kmalloc_array (entry->slave_cnt,sizeof (*acti_netdevs),GFP_KERNEL ); +if (!acti_netdevs) { +schedule_delayed_work (&lag->work, +NFP_FL_LAG_DELAY ); +continue ; + }/* Include sanity check in the loop. It may be that a bond has * changed between processing the last notification and the
drivers/net/usb/sr9800.c +3 -1
@@ -737,7 +737,9 @@ static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf) data->eeprom_len =SR9800_EEPROM_LEN ; -usbnet_get_endpoints (dev, intf); + ret =usbnet_get_endpoints (dev, intf); +if (ret) + goto out;/* LED Setting Rule : * AABB:CCDD
drivers/net/wireless/ath/ath10k/wmi-tlv.c +4 -0
@@ -684,6 +684,10 @@ ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev(struct ath10k *ar, struct sk_buff *skb, } ev = tb[WMI_TLV_TAG_STRUCT_MGMT_TX_COMPL_EVENT ]; +if (!ev) { +kfree (tb); +return -EPROTO ; + } arg->desc_id = ev->desc_id; arg->status = ev->status;
drivers/net/wireless/broadcom/b43/b43.h +16 -0
@@ -1082,6 +1082,22 @@ static inline bool b43_using_pio_transfers(struct b43_wldev *dev)return dev->__using_pio_transfers; } +static inline void b43_wake_queue (struct b43_wldev *dev,int queue_prio) +{ +if (dev->qos_enabled) +ieee80211_wake_queue (dev->wl->hw, queue_prio); +else +ieee80211_wake_queue (dev->wl->hw,0 ); +} + +static inline void b43_stop_queue (struct b43_wldev *dev,int queue_prio) +{ +if (dev->qos_enabled) +ieee80211_stop_queue (dev->wl->hw, queue_prio); +else +ieee80211_stop_queue (dev->wl->hw,0 ); +} +/* Message printing */ __printf(2, 3) void b43info(struct b43_wl *wl, const char *fmt, ...); __printf(2, 3) void b43err(struct b43_wl *wl, const char *fmt, ...);
drivers/net/wireless/broadcom/b43/dma.c +4 -4
@@ -1461,8 +1461,8 @@ int b43_dma_tx(struct b43_wldev *dev, struct sk_buff *skb) should_inject_overflow(ring)) {/* This TX ring is full. */ unsigned int skb_mapping =skb_get_queue_mapping (skb); -ieee80211_stop_queue (dev->wl->hw, skb_mapping); - dev->wl->tx_queue_stopped[skb_mapping] =1 ; +b43_stop_queue (dev, skb_mapping); + dev->wl->tx_queue_stopped[skb_mapping] = true; ring->stopped = true;if (b43_debug (dev,B43_DBG_DMAVERBOSE )) {b43dbg (dev->wl,"Stopped TX ring %d\n" , ring->index);
@@ -1628,11 +1628,11 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev, }if (dev->wl->tx_queue_stopped[ring->queue_prio]) { - dev->wl->tx_queue_stopped[ring->queue_prio] =0 ; + dev->wl->tx_queue_stopped[ring->queue_prio] = false; }else {/* If the driver queue is running wake the corresponding * mac80211 queue. */ -ieee80211_wake_queue (dev->wl->hw, ring->queue_prio); +b43_wake_queue (dev, ring->queue_prio);if (b43_debug (dev,B43_DBG_DMAVERBOSE )) {b43dbg (dev->wl,"Woke up TX ring %d\n" , ring->index); }
drivers/net/wireless/broadcom/b43/main.c +12 -10
@@ -2605,7 +2605,8 @@ static void b43_request_firmware(struct work_struct *work) start_ieee80211: wl->hw->queues =B43_QOS_QUEUE_NUM ; -if (!modparam_qos || dev->fw.opensource) +if (!modparam_qos || dev->fw.opensource || + dev->dev->chip_id ==BCMA_CHIP_ID_BCM4331 ) wl->hw->queues =1 ; err =ieee80211_register_hw (wl->hw);
@@ -3625,8 +3626,8 @@ static void b43_tx_work(struct work_struct *work)else err =b43_dma_tx (dev, skb);if (err == -ENOSPC ) { - wl->tx_queue_stopped[queue_num] =1 ; -ieee80211_stop_queue (wl->hw, queue_num); + wl->tx_queue_stopped[queue_num] = true; +b43_stop_queue (dev, queue_num);skb_queue_head (&wl->tx_queue[queue_num], skb);break ; }
@@ -3636,7 +3637,7 @@ static void b43_tx_work(struct work_struct *work) }if (!err) - wl->tx_queue_stopped[queue_num] =0 ; + wl->tx_queue_stopped[queue_num] = false; }#if B43_DEBUG
@@ -3650,6 +3651,7 @@ static void b43_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) {struct b43_wl *wl =hw_to_b43_wl (hw); +u16 skb_queue_mapping;if (unlikely (skb->len <2 +2 +6 )) {/* Too short, this can't be a valid frame. */
@@ -3658,12 +3660,12 @@ static void b43_op_tx(struct ieee80211_hw *hw, }B43_WARN_ON (skb_shinfo (skb)->nr_frags); -skb_queue_tail (&wl->tx_queue[skb->queue_mapping], skb); -if (!wl->tx_queue_stopped[skb->queue_mapping]) { + skb_queue_mapping =skb_get_queue_mapping (skb); +skb_queue_tail (&wl->tx_queue[skb_queue_mapping], skb); +if (!wl->tx_queue_stopped[skb_queue_mapping])ieee80211_queue_work (wl->hw, &wl->tx_work); - }else { -ieee80211_stop_queue (wl->hw, skb->queue_mapping); - } +else +b43_stop_queue (wl->current_dev, skb_queue_mapping); } static void b43_qos_params_upload(struct b43_wldev *dev,
@@ -5630,7 +5632,7 @@ static struct b43_wl *b43_wireless_init(struct b43_bus_dev *dev)/* Initialize queues and flags. */ for (queue_num =0 ; queue_num <B43_QOS_QUEUE_NUM ; queue_num++) {skb_queue_head_init (&wl->tx_queue[queue_num]); - wl->tx_queue_stopped[queue_num] =0 ; + wl->tx_queue_stopped[queue_num] = false; } snprintf(chip_name, ARRAY_SIZE(chip_name),
drivers/net/wireless/broadcom/b43/pio.c +3 -3
@@ -538,7 +538,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)if (total_len > (q->buffer_size - q->buffer_used)) {/* Not enough memory on the queue. */ err = -EBUSY ; -ieee80211_stop_queue (dev->wl->hw,skb_get_queue_mapping (skb)); +b43_stop_queue (dev,skb_get_queue_mapping (skb)); q->stopped = true; goto out; }
@@ -565,7 +565,7 @@ int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)if (((q->buffer_size - q->buffer_used) <roundup (2 +2 +6 ,4 )) || (q->free_packet_slots ==0 )) {/* The queue is full. */ -ieee80211_stop_queue (dev->wl->hw,skb_get_queue_mapping (skb)); +b43_stop_queue (dev,skb_get_queue_mapping (skb)); q->stopped = true; }
@@ -600,7 +600,7 @@ void b43_pio_handle_txstatus(struct b43_wldev *dev,list_add (&pack->list, &q->packets_list);if (q->stopped) { -ieee80211_wake_queue (dev->wl->hw, q->queue_prio); +b43_wake_queue (dev, q->queue_prio); q->stopped = false; } }
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_cmn.c +2 -1
@@ -394,8 +394,9 @@ struct shared_phy *wlc_phy_shared_attach(struct shared_phy_params *shp)return sh; } -static void wlc_phy_timercb_phycal (struct brcms_phy *pi) +static void wlc_phy_timercb_phycal (void *ptr) { +struct brcms_phy *pi = ptr;uint delay =5 ;if (PHY_PERICAL_MPHASE_PENDING (pi)) {
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy_shim.c +2 -3
@@ -57,12 +57,11 @@ void wlc_phy_shim_detach(struct phy_shim_info *physhim) }struct wlapi_timer *wlapi_init_timer (struct phy_shim_info *physhim, -void (*fn)(struct brcms_phy *pi), +void (*fn)(void *pi),void *arg,const char *name) {return (struct wlapi_timer *) -brcms_init_timer (physhim->wl, (void (*)(void *))fn, - arg, name); +brcms_init_timer (physhim->wl, fn, arg, name); }void wlapi_free_timer (struct wlapi_timer *t)
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy_shim.h +1 -1
@@ -131,7 +131,7 @@ void wlc_phy_shim_detach(struct phy_shim_info *physhim);/* PHY to WL utility functions */ struct wlapi_timer *wlapi_init_timer (struct phy_shim_info *physhim, -void (*fn)(struct brcms_phy *pi), +void (*fn)(void *pi),void *arg,const char *name);void wlapi_free_timer (struct wlapi_timer *t);void wlapi_add_timer (struct wlapi_timer *t,uint ms,int periodic);
drivers/net/wireless/marvell/libertas/cmd.c +11 -2
@@ -1132,7 +1132,7 @@ int lbs_allocate_cmd_buffer(struct lbs_private *priv)if (!cmdarray[i].cmdbuf) {lbs_deb_host ("ALLOC_CMD_BUF: ptempvirtualaddr is NULL\n" ); ret =-1 ; - goto done; + goto free_cmd_array; } }
@@ -1140,8 +1140,17 @@ int lbs_allocate_cmd_buffer(struct lbs_private *priv)init_waitqueue_head (&cmdarray[i].cmdwait_q);lbs_cleanup_and_insert_cmd (priv, &cmdarray[i]); } - ret =0 ; +return 0 ; +free_cmd_array: +for (i =0 ; i <LBS_NUM_CMD_BUFFERS ; i++) { +if (cmdarray[i].cmdbuf) { +kfree (cmdarray[i].cmdbuf); + cmdarray[i].cmdbuf =NULL ; + } + } +kfree (priv->cmd_array); + priv->cmd_array =NULL ; done:return ret; }
drivers/net/wireless/marvell/mwifiex/debugfs.c +0 -3
@@ -977,9 +977,6 @@ mwifiex_dev_debugfs_init(struct mwifiex_private *priv) priv->dfs_dev_dir =debugfs_create_dir (priv->netdev->name, mwifiex_dfs_dir); -if (!priv->dfs_dev_dir) -return ; -MWIFIEX_DFS_ADD_FILE (info);MWIFIEX_DFS_ADD_FILE (debug);MWIFIEX_DFS_ADD_FILE (getlog);
drivers/pci/quirks.c +1 -0
@@ -5189,6 +5189,7 @@ static void quirk_no_ext_tags(struct pci_dev *pdev)pci_walk_bus (bridge->bus, pci_configure_extended_tags,NULL ); } +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_3WARE ,0x1004 , quirk_no_ext_tags);DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SERVERWORKS ,0x0132 , quirk_no_ext_tags);DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SERVERWORKS ,0x0140 , quirk_no_ext_tags);DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SERVERWORKS ,0x0141 , quirk_no_ext_tags);
drivers/rtc/Kconfig +2 -1
@@ -1719,7 +1719,8 @@ config RTC_DRV_MOXART config RTC_DRV_MT6397 tristate "MediaTek PMIC based RTC" - depends on MFD_MT6397 || (COMPILE_TEST && IRQ_DOMAIN) + depends on MFD_MT6397 || COMPILE_TEST + select IRQ_DOMAIN help This selects the MediaTek(R) RTC driver. RTC is part of MediaTek MT6397 PMIC. You should enable MT6397 PMIC MFD before select
drivers/scsi/bfa/bfa.h +8 -1
@@ -28,7 +28,6 @@struct bfa_s ;typedef void (*bfa_isr_func_t ) (struct bfa_s *bfa,struct bfi_msg_s *m); -typedef void (*bfa_cb_cbfn_status_t ) (void *cbarg,bfa_status_t status);/* * Interrupt message handlers
@@ -446,4 +445,12 @@ struct bfa_cb_pending_q_s { (__qe)->data = (__data); \ } while (0) +#define bfa_pending_q_init_status (__qe, __cbfn, __cbarg, __data) do { \ + bfa_q_qe_init(&((__qe)->hcb_qe.qe)); \ + (__qe)->hcb_qe.cbfn_status = (__cbfn); \ + (__qe)->hcb_qe.cbarg = (__cbarg); \ + (__qe)->hcb_qe.pre_rmv = BFA_TRUE; \ + (__qe)->data = (__data); \ +} while (0) +#endif /* __BFA_H__ */
drivers/scsi/bfa/bfa_core.c +1 -3
@@ -1915,15 +1915,13 @@ bfa_comp_process(struct bfa_s *bfa, struct list_head *comp_q)struct list_head *qe;struct list_head *qen;struct bfa_cb_qe_s *hcb_qe; -bfa_cb_cbfn_status_t cbfn;list_for_each_safe (qe, qen, comp_q) { hcb_qe = (struct bfa_cb_qe_s *) qe;if (hcb_qe->pre_rmv) {/* qe is invalid after return, dequeue before cbfn() */ list_del (qe); - cbfn = (bfa_cb_cbfn_status_t)(hcb_qe->cbfn); -cbfn (hcb_qe->cbarg, hcb_qe->fw_status); + hcb_qe->cbfn_status (hcb_qe->cbarg, hcb_qe->fw_status); }else hcb_qe->cbfn (hcb_qe->cbarg,BFA_TRUE ); }
drivers/scsi/bfa/bfa_ioc.h +6 -2
@@ -369,14 +369,18 @@ struct bfa_reqq_wait_s {void *cbarg; }; -typedef void (*bfa_cb_cbfn_t ) (void *cbarg,bfa_boolean_t complete); +typedef void (*bfa_cb_cbfn_t ) (void *cbarg,bfa_boolean_t complete); +typedef void (*bfa_cb_cbfn_status_t ) (void *cbarg,bfa_status_t status);/* * Generic BFA callback element. */ struct bfa_cb_qe_s {struct list_head qe; -bfa_cb_cbfn_t cbfn; +union { +bfa_cb_cbfn_status_t cbfn_status; +bfa_cb_cbfn_t cbfn; + };bfa_boolean_t once;bfa_boolean_t pre_rmv;/* set for stack based qe(s) */ bfa_status_t fw_status;/* to access fw status in comp proc */
drivers/scsi/bfa/bfad_bsg.c +4 -7
@@ -2143,8 +2143,7 @@ bfad_iocmd_fcport_get_stats(struct bfad_s *bfad, void *cmd)struct bfa_cb_pending_q_s cb_qe;init_completion (&fcomp.comp); -bfa_pending_q_init (&cb_qe, (bfa_cb_cbfn_t )bfad_hcb_comp, - &fcomp, &iocmd->stats); +bfa_pending_q_init_status (&cb_qe, bfad_hcb_comp, &fcomp, &iocmd->stats);spin_lock_irqsave (&bfad->bfad_lock, flags); iocmd->status =bfa_fcport_get_stats (&bfad->bfa, &cb_qe);spin_unlock_irqrestore (&bfad->bfad_lock, flags);
@@ -2167,7 +2166,7 @@ bfad_iocmd_fcport_reset_stats(struct bfad_s *bfad, void *cmd)struct bfa_cb_pending_q_s cb_qe;init_completion (&fcomp.comp); -bfa_pending_q_init (&cb_qe, (bfa_cb_cbfn_t )bfad_hcb_comp, &fcomp,NULL ); +bfa_pending_q_init_status (&cb_qe, bfad_hcb_comp, &fcomp,NULL );spin_lock_irqsave (&bfad->bfad_lock, flags); iocmd->status =bfa_fcport_clear_stats (&bfad->bfa, &cb_qe);
@@ -2451,8 +2450,7 @@ bfad_iocmd_qos_get_stats(struct bfad_s *bfad, void *cmd)struct bfa_fcport_s *fcport =BFA_FCPORT_MOD (&bfad->bfa);init_completion (&fcomp.comp); -bfa_pending_q_init (&cb_qe, (bfa_cb_cbfn_t )bfad_hcb_comp, - &fcomp, &iocmd->stats); +bfa_pending_q_init_status (&cb_qe, bfad_hcb_comp, &fcomp, &iocmd->stats);spin_lock_irqsave (&bfad->bfad_lock, flags);WARN_ON (!bfa_ioc_get_fcmode (&bfad->bfa.ioc));
@@ -2482,8 +2480,7 @@ bfad_iocmd_qos_reset_stats(struct bfad_s *bfad, void *cmd)struct bfa_fcport_s *fcport =BFA_FCPORT_MOD (&bfad->bfa);init_completion (&fcomp.comp); -bfa_pending_q_init (&cb_qe, (bfa_cb_cbfn_t )bfad_hcb_comp, - &fcomp,NULL ); +bfa_pending_q_init_status (&cb_qe, bfad_hcb_comp, &fcomp,NULL );spin_lock_irqsave (&bfad->bfad_lock, flags);WARN_ON (!bfa_ioc_get_fcmode (&bfad->bfa.ioc));
drivers/scsi/csiostor/csio_defs.h +16 -2
@@ -73,7 +73,21 @@ csio_list_deleted(struct list_head *list)#define csio_list_prev (elem) (((struct list_head *)(elem))->prev)/* State machine */ -typedef void (*csio_sm_state_t )(void *,uint32_t ); +struct csio_lnode ; + +/* State machine evets */ +enum csio_ln_ev { +CSIO_LNE_NONE = (uint32_t )0 , +CSIO_LNE_LINKUP , +CSIO_LNE_FAB_INIT_DONE , +CSIO_LNE_LINK_DOWN , +CSIO_LNE_DOWN_LINK , +CSIO_LNE_LOGO , +CSIO_LNE_CLOSE , +CSIO_LNE_MAX_EVENT , +}; + +typedef void (*csio_sm_state_t )(struct csio_lnode *ln,enum csio_ln_ev evt);struct csio_sm {struct list_head sm_list;
@@ -83,7 +97,7 @@ struct csio_sm {static inline void csio_set_state (void *smp,void *state) { - ((struct csio_sm *)smp)->sm_state = (csio_sm_state_t )state; + ((struct csio_sm *)smp)->sm_state = state; } static inline void
drivers/scsi/csiostor/csio_lnode.c +4 -4
@@ -1095,7 +1095,7 @@ csio_handle_link_down(struct csio_hw *hw, uint8_t portid, uint32_t fcfi,int csio_is_lnode_ready (struct csio_lnode *ln) { -return (csio_get_state (ln) == ((csio_sm_state_t )csio_lns_ready)); +return (csio_get_state (ln) == csio_lns_ready); }/*****************************************************************************/
@@ -1367,15 +1367,15 @@ csio_free_fcfinfo(struct kref *kref)void csio_lnode_state_to_str (struct csio_lnode *ln,int8_t *str) { -if (csio_get_state (ln) == ((csio_sm_state_t )csio_lns_uninit)) { +if (csio_get_state (ln) == csio_lns_uninit) {strcpy (str,"UNINIT" );return ; } -if (csio_get_state (ln) == ((csio_sm_state_t )csio_lns_ready)) { +if (csio_get_state (ln) == csio_lns_ready) {strcpy (str,"READY" );return ; } -if (csio_get_state (ln) == ((csio_sm_state_t )csio_lns_offline)) { +if (csio_get_state (ln) == csio_lns_offline) {strcpy (str,"OFFLINE" );return ; }
drivers/scsi/csiostor/csio_lnode.h +0 -13
@@ -53,19 +53,6 @@extern int csio_fcoe_rnodes;extern int csio_fdmi_enable; -/* State machine evets */ -enum csio_ln_ev { -CSIO_LNE_NONE = (uint32_t )0 , -CSIO_LNE_LINKUP , -CSIO_LNE_FAB_INIT_DONE , -CSIO_LNE_LINK_DOWN , -CSIO_LNE_DOWN_LINK , -CSIO_LNE_LOGO , -CSIO_LNE_CLOSE , -CSIO_LNE_MAX_EVENT , -}; - -struct csio_fcf_info {struct list_head list;uint8_t priority;
drivers/scsi/mpt3sas/mpt3sas_base.c +3 -1
@@ -5584,7 +5584,9 @@ _base_wait_for_iocstate(struct MPT3SAS_ADAPTER *ioc, int timeout)return -EFAULT ; } - issue_diag_reset: +return 0 ; + +issue_diag_reset: rc =_base_diag_reset (ioc);return rc; }
drivers/spi/spi-mt65xx.c +12 -10
@@ -524,17 +524,19 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) mdata->xfer_len =min (MTK_SPI_MAX_FIFO_SIZE , len);mtk_spi_setup_packet (master); - cnt = mdata->xfer_len /4 ; -iowrite32_rep (mdata->base +SPI_TX_DATA_REG , - trans->tx_buf + mdata->num_xfered, cnt); +if (trans->tx_buf) { + cnt = mdata->xfer_len /4 ; +iowrite32_rep (mdata->base +SPI_TX_DATA_REG , + trans->tx_buf + mdata->num_xfered, cnt); - remainder = mdata->xfer_len %4 ; -if (remainder >0 ) { - reg_val =0 ; -memcpy (®_val, - trans->tx_buf + (cnt *4 ) + mdata->num_xfered, - remainder); -writel (reg_val, mdata->base +SPI_TX_DATA_REG ); + remainder = mdata->xfer_len %4 ; +if (remainder >0 ) { + reg_val =0 ; +memcpy (®_val, + trans->tx_buf + (cnt *4 ) + mdata->num_xfered, + remainder); +writel (reg_val, mdata->base +SPI_TX_DATA_REG ); + } }mtk_spi_enable_transfer (master);
drivers/staging/greybus/light.c +4 -4
@@ -102,15 +102,15 @@ static struct led_classdev *get_channel_cdev(struct gb_channel *channel)static struct gb_channel *get_channel_from_mode (struct gb_light *light,u32 mode) { -struct gb_channel *channel =NULL ; +struct gb_channel *channel;int i;for (i =0 ; i < light->channels_count; i++) { channel = &light->channels[i]; -if (channel && channel->mode == mode) -break ; +if (channel->mode == mode) +return channel; } -return channel; +return NULL ; } static int __gb_lights_flash_intensity_set(struct gb_channel *channel,
drivers/tty/serial/8250/8250_exar.c +1 -4
@@ -553,6 +553,7 @@ static void exar_pci_remove(struct pci_dev *pcidev)for (i =0 ; i < priv->nr; i++)serial8250_unregister_port (priv->line[i]); +/* Ensure that every init quirk is properly torn down */ if (priv->board->exit) priv->board->exit (pcidev); }
@@ -567,10 +568,6 @@ static int __maybe_unused exar_suspend(struct device *dev)if (priv->line[i] >=0 )serial8250_suspend_port (priv->line[i]); -/* Ensure that every init quirk is properly torn down */ -if (priv->board->exit) - priv->board->exit (pcidev); -return 0 ; }
drivers/tty/serial/max310x.c +1 -1
@@ -1363,7 +1363,7 @@ static int max310x_probe(struct device *dev, struct max310x_devtype *devtype,if (!ret)return 0 ; -dev_err (dev,"Unable to reguest IRQ %i\n" , irq); +dev_err (dev,"Unable to request IRQ %i\n" , irq); out_uart:for (i =0 ; i < devtype->nr; i++) {
drivers/tty/serial/samsung.c +2 -3
@@ -800,11 +800,10 @@ static unsigned int s3c24xx_serial_tx_empty(struct uart_port *port)if ((ufstat & info->tx_fifomask) !=0 || (ufstat & info->tx_fifofull))return 0 ; - -return 1 ; +return TIOCSER_TEMT ; } -return s3c24xx_serial_txempty_nofifo (port); +return s3c24xx_serial_txempty_nofifo (port) ?TIOCSER_TEMT :0 ; }/* no modem control lines */
drivers/usb/gadget/udc/net2272.c +1 -1
@@ -2638,7 +2638,7 @@ net2272_plat_probe(struct platform_device *pdev) goto err_req; } - ret =net2272_probe_fin (dev,IRQF_TRIGGER_LOW ); + ret =net2272_probe_fin (dev, irqflags);if (ret) goto err_io;
drivers/video/backlight/da9052_bl.c +1 -0
@@ -122,6 +122,7 @@ static int da9052_backlight_probe(struct platform_device *pdev) wleds->led_reg =platform_get_device_id (pdev)->driver_data; wleds->state =DA9052_WLEDS_OFF ; +memset (&props,0 ,sizeof (struct backlight_properties )); props.type =BACKLIGHT_RAW ; props.max_brightness =DA9052_MAX_BRIGHTNESS ;
drivers/video/backlight/lm3630a_bl.c +5 -10
@@ -223,7 +223,7 @@ static int lm3630a_bank_a_get_brightness(struct backlight_device *bl)if (rval <0 ) goto out_i2c_err; brightness |= rval; - goto out; +return brightness; }/* disable sleep */
@@ -234,11 +234,8 @@ static int lm3630a_bank_a_get_brightness(struct backlight_device *bl) rval =lm3630a_read (pchip,REG_BRT_A );if (rval <0 ) goto out_i2c_err; - brightness = rval; +return rval; -out: - bl->props.brightness = brightness; -return bl->props.brightness; out_i2c_err:dev_err (pchip->dev,"i2c failed to access register\n" );return 0 ;
@@ -300,7 +297,7 @@ static int lm3630a_bank_b_get_brightness(struct backlight_device *bl)if (rval <0 ) goto out_i2c_err; brightness |= rval; - goto out; +return brightness; }/* disable sleep */
@@ -311,11 +308,8 @@ static int lm3630a_bank_b_get_brightness(struct backlight_device *bl) rval =lm3630a_read (pchip,REG_BRT_B );if (rval <0 ) goto out_i2c_err; - brightness = rval; +return rval; -out: - bl->props.brightness = brightness; -return bl->props.brightness; out_i2c_err:dev_err (pchip->dev,"i2c failed to access register\n" );return 0 ;
@@ -332,6 +326,7 @@ static int lm3630a_backlight_register(struct lm3630a_chip *pchip)struct backlight_properties props;struct lm3630a_platform_data *pdata = pchip->pdata; +memset (&props,0 ,sizeof (struct backlight_properties )); props.type =BACKLIGHT_RAW ;if (pdata->leda_ctrl !=LM3630A_LEDA_DISABLE ) { props.brightness = pdata->leda_init_brt;
drivers/video/backlight/lm3639_bl.c +1 -0
@@ -343,6 +343,7 @@ static int lm3639_probe(struct i2c_client *client, }/* backlight */ +memset (&props,0 ,sizeof (struct backlight_properties )); props.type =BACKLIGHT_RAW ; props.brightness = pdata->init_brt_led; props.max_brightness = pdata->max_brt_led;
drivers/video/backlight/lp8788_bl.c +1 -0
@@ -195,6 +195,7 @@ static int lp8788_backlight_register(struct lp8788_bl *bl)int init_brt;char *name; +memset (&props,0 ,sizeof (struct backlight_properties )); props.type =BACKLIGHT_PLATFORM ; props.max_brightness =MAX_BRIGHTNESS ;
fs/fhandle.c +1 -1
@@ -37,7 +37,7 @@ static long do_sys_name_to_handle(struct path *path,if (f_handle.handle_bytes >MAX_HANDLE_SZ )return -EINVAL ; - handle =kmalloc (sizeof (struct file_handle ) + f_handle.handle_bytes, + handle =kzalloc (sizeof (struct file_handle ) + f_handle.handle_bytes,GFP_KERNEL );if (!handle)return -ENOMEM ;
fs/nfs/nfsroot.c +2 -2
@@ -169,10 +169,10 @@ static int __init root_nfs_cat(char *dest, const char *src,size_t len =strlen (dest);if (len && dest[len -1 ] !=',' ) -if (strlcat (dest,"," , destlen) > destlen) +if (strlcat (dest,"," , destlen) >= destlen)return -1 ; -if (strlcat (dest, src, destlen) > destlen) +if (strlcat (dest, src, destlen) >= destlen)return -1 ;return 0 ; }
fs/quota/dquot.c +108 -130
377 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.