Linux 3.16.82
I'm announcing the release of the 3.16.82 kernel.
All users of the 3.16 kernel series should upgrade.
The updated 3.16.y git tree can be found at:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.16.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
The diff from 3.16.81 is attached to this message.
Ben.
------------
Documentation/hw-vuln/mds.rst | 7 +- Documentation/hw-vuln/tsx_async_abort.rst | 5 +- Documentation/kernel-parameters.txt | 30 +- Makefile | 2 +- arch/arm/boot/dts/s3c6410-mini6410.dts | 4 + arch/arm/boot/dts/s3c6410-smdk6410.dts | 4 + arch/arm/mach-tegra/reset-handler.S | 6 +- arch/arm/mach-ux500/board-mop500-regulators.c | 600 --------------------- arch/arm/mach-ux500/board-mop500-regulators.h | 8 - arch/powerpc/include/asm/vdso_datapage.h | 2 + arch/powerpc/kernel/asm-offsets.c | 2 +- arch/powerpc/kernel/misc_64.S | 4 +- arch/powerpc/kernel/time.c | 1 + arch/powerpc/kernel/vdso32/gettimeofday.S | 7 +- arch/powerpc/kernel/vdso64/cacheflush.S | 4 +- arch/powerpc/kernel/vdso64/gettimeofday.S | 7 +- arch/s390/kernel/runtime_instr.c | 2 +- arch/x86/kernel/apic/io_apic.c | 9 +- arch/x86/kernel/cpu/bugs.c | 17 +- arch/x86/kernel/module.c | 1 + arch/x86/kvm/x86.c | 14 +- arch/x86/pci/fixup.c | 11 + arch/x86/tools/relocs.c | 1 + arch/xtensa/mm/tlb.c | 4 +- block/blk-mq-sysfs.c | 19 +- block/blk-mq.c | 7 + drivers/acpi/bus.c | 2 +- drivers/acpi/osl.c | 28 +- drivers/block/xen-blkback/blkback.c | 2 + drivers/char/hw_random/omap3-rom-rng.c | 3 +- drivers/clk/samsung/clk-exynos5420.c | 2 + drivers/cpuidle/driver.c | 15 +- drivers/devfreq/devfreq.c | 7 +- drivers/gpu/drm/i810/i810_dma.c | 4 +- drivers/gpu/drm/i915/i915_gem_userptr.c | 22 +- drivers/gpu/drm/radeon/cik.c | 4 +- drivers/gpu/drm/radeon/r100.c | 4 +- drivers/gpu/drm/radeon/r200.c | 4 +- drivers/gpu/drm/radeon/r600.c | 4 +- drivers/gpu/drm/radeon/si.c | 4 +- drivers/iio/imu/adis16480.c | 7 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 24 + drivers/media/i2c/soc_camera/ov6650.c | 21 +- drivers/media/platform/exynos4-is/fimc-isp-video.c | 2 +- drivers/media/radio/radio-wl1273.c | 3 +- drivers/media/usb/usbvision/usbvision-core.c | 50 -- drivers/media/usb/usbvision/usbvision-video.c | 107 ++-- drivers/media/usb/usbvision/usbvision.h | 5 - drivers/mmc/host/sdhci-s3c.c | 16 +- drivers/mtd/devices/spear_smi.c | 38 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 3 +- drivers/net/ethernet/stmicro/stmmac/common.h | 2 +- drivers/net/ethernet/stmicro/stmmac/descs_com.h | 14 +- drivers/net/ethernet/stmicro/stmmac/enh_desc.c | 10 +- drivers/net/ethernet/stmicro/stmmac/norm_desc.c | 10 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 20 +- drivers/net/ethernet/ti/davinci_cpdma.c | 12 +- drivers/net/macvlan.c | 3 +- drivers/net/wireless/ath/ar5523/ar5523.c | 3 +- drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +- drivers/net/wireless/cw1200/fwio.c | 6 +- drivers/net/wireless/iwlwifi/dvm/led.c | 3 + drivers/net/wireless/iwlwifi/mvm/led.c | 3 + drivers/pci/msi.c | 3 +- drivers/pci/quirks.c | 2 +- drivers/pinctrl/pinctrl-s3c24xx.c | 6 +- drivers/pinctrl/pinctrl-s3c64xx.c | 3 + drivers/platform/x86/hp-wmi.c | 10 +- drivers/regulator/ab8500.c | 17 - drivers/rtc/rtc-msm6242.c | 3 +- drivers/s390/scsi/zfcp_dbf.c | 8 +- drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 +- drivers/scsi/csiostor/csio_lnode.c | 15 +- drivers/scsi/esas2r/esas2r_flash.c | 1 + drivers/scsi/lpfc/lpfc_els.c | 2 +- drivers/scsi/qla4xxx/ql4_mbx.c | 3 - drivers/scsi/scsi_trace.c | 125 ++--- drivers/spi/spi-atmel.c | 10 +- drivers/staging/android/binder.c | 6 +- drivers/staging/line6/pcm.c | 61 +-- drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 5 +- drivers/tty/serial/ifx6x60.c | 3 + drivers/tty/serial/imx.c | 2 +- drivers/tty/serial/msm_serial.c | 6 +- drivers/tty/serial/pch_uart.c | 5 +- drivers/tty/serial/serial_core.c | 2 +- drivers/tty/vt/keyboard.c | 2 +- drivers/usb/core/hub.c | 5 +- drivers/usb/gadget/pch_udc.c | 1 - drivers/usb/gadget/u_serial.c | 2 + drivers/usb/misc/appledisplay.c | 8 +- drivers/usb/serial/cp210x.c | 1 + drivers/usb/serial/ftdi_sio.c | 3 + drivers/usb/serial/ftdi_sio_ids.h | 7 + drivers/usb/serial/mos7720.c | 4 - drivers/usb/serial/mos7840.c | 16 +- drivers/usb/storage/uas.c | 10 + fs/btrfs/file.c | 2 +- fs/btrfs/free-space-cache.c | 6 + fs/cifs/cifsglob.h | 5 + fs/cifs/cifsproto.h | 1 + fs/cifs/file.c | 35 +- fs/cifs/smb2file.c | 2 +- fs/cifs/smb2misc.c | 7 +- fs/ext2/inode.c | 7 +- fs/ext4/namei.c | 13 +- fs/fuse/dir.c | 27 +- fs/fuse/fuse_i.h | 2 + fs/ocfs2/quota_global.c | 2 +- fs/pstore/ram.c | 11 + fs/quota/dquot.c | 11 +- fs/xfs/xfs_quotaops.c | 3 + include/linux/futex.h | 7 +- include/linux/hrtimer.h | 6 +- include/linux/jbd2.h | 4 +- include/linux/netdevice.h | 5 + include/linux/quotaops.h | 10 + include/linux/regulator/ab8500.h | 3 - include/linux/time.h | 12 + include/net/ip.h | 5 + include/net/tcp.h | 38 +- kernel/futex.c | 49 +- kernel/futex_compat.c | 5 +- kernel/hrtimer.c | 26 +- kernel/time/timer_list.c | 8 +- kernel/workqueue.c | 28 +- net/bluetooth/hci_core.c | 11 +- net/bluetooth/l2cap_core.c | 4 +- net/bridge/br_device.c | 6 + net/core/dev.c | 3 +- net/ipv4/devinet.c | 5 - net/ipv4/inetpeer.c | 12 +- net/ipv4/ip_output.c | 14 +- net/ipv4/tcp_output.c | 5 +- net/openvswitch/datapath.c | 11 +- net/socket.c | 1 + net/sunrpc/cache.c | 5 - scripts/package/builddeb | 2 +- sound/core/oss/linear.c | 2 + sound/core/oss/mulaw.c | 2 + sound/core/oss/route.c | 2 + sound/isa/cs423x/cs4236.c | 3 +- sound/soc/soc-jack.c | 3 +- tools/lib/traceevent/parse-filter.c | 9 +- tools/perf/util/dwarf-aux.c | 88 ++- tools/perf/util/dwarf-aux.h | 6 + tools/perf/util/perf_regs.h | 2 +- tools/perf/util/probe-finder.c | 70 ++- .../cpupower/utils/idle_monitor/hsw_ext_idle.c | 1 - 149 files changed, 987 insertions(+), 1226 deletions(-)
Aaro Koskinen (2):
net: stmmac: use correct DMA buffer size in the RX descriptor
net: stmmac: don't stop NAPI processing when dropping a packet
Akinobu Mita (1):
blk-mq: fix deadlock when reading cpu_list
Alan Stern (2):
media: usbvision: Fix invalid accesses after device disconnect
media: usbvision: Fix races among open, close, and disconnect
Alastair D'Silva (2):
powerpc: Allow flush_icache_range to work across ranges >4GB
powerpc: Allow 64bit VDSO __kernel_sync_dicache to work across ranges >4GB
Aleksandr Yashkin (1):
pstore/ram: Write new dumps to start of recycled zones
Alex Deucher (1):
drm/radeon: fix r1xx/r2xx register checker for POT textures
Alexandru Ardelean (1):
iio: imu: adis16480: assign bias value only if operation succeeded
Arnaldo Carvalho de Melo (1):
perf regs: Make perf_reg_name() return "unknown" instead of NULL
Arnd Bergmann (3):
net: davinci_cpdma: use dma_addr_t for DMA address
compat_ioctl: handle SIOCOUTQNSD
ARM: ux500: remove unused regulator data
Asbjoern Sloth Toennesen (1):
deb-pkg: remove obsolete -isp option to dpkg-gencontrol
Bart Van Assche (3):
scsi: core: scsi_trace: Use get_unaligned_be*()
scsi: tracing: Fix handling of TRANSFER LENGTH == 0 for READ(6) and WRITE(6) RDMA/srpt: Report the SCSI residual to the initiator
Ben Hutchings (2):
s390: Fix unmatched preempt_disable() on exit Linux 3.16.82
Chengguang Xu (1):
ext2: check err when partial != NULL
Chris Wilson (1):
drm/i915/userptr: Try to acquire the page lock around set_page_dirty()
Chuhong Yuan (1):
serial: ifx6x60: add missed pm_runtime_disable
Colin Ian King (1):
ALSA: cs4236: fix error return comparison of an unsigned integer
Dan Carpenter (6):
cw1200: Fix a signedness bug in cw1200_load_firmware() drm/i810: Prevent underflow in ioctl
usbvision-video: two use after frees
scsi: csiostor: Don't enable IRQs too early
scsi: esas2r: unlock on error in esas2r_nvram_read_direct()
Bluetooth: delete a stray unlock
Dave Wysochanski (1):
cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs
Denis Efremov (2):
ath9k_hw: fix uninitialized variable data
ar5523: check NULL before memcpy() in ar5523_cmd()
Dmitry Monakhov (2):
quota: fix livelock in dquot_writeback_dquots
quota: Check that quota is not dirty before release
Dmitry Osipenko (1):
ARM: tegra: Fix FLOW_CTLR_HALT register clobbering by tegra_resume()
Dmitry Torokhov (1):
tty: vt: keyboard: reject invalid keycodes
Eric Dumazet (4):
inetpeer: fix data-race in inet_putpeer / inet_putpeer
tcp: md5: fix potential overestimation of TCP option space
tcp: syncookies: extend validity range
inet: protect against too small mtu values.
Fabio D'Urso (1):
USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P
Filipe Manana (1):
Btrfs: fix negative subv_writers counter and data space leak after buffered write
Francesco Ruggeri (1):
ACPI: OSL: only free map once in osl.c
Giuseppe CAVALLARO (1):
stmmac: fix oversized frame reception
Greg Kroah-Hartman (1):
usb-serial: cp201x: support Mark-10 digital force gauge
Guillaume Nault (2):
tcp: fix rejected syncookies due to stale timestamps
tcp: Protect accesses to .ts_recent_stamp with {READ,WRITE}_ONCE()
Gustavo A. R. Silva (1):
usb: gadget: pch_udc: fix use after free
H.J. Lu (1):
x86: Treat R_X86_64_PLT32 as R_X86_64_PC32
Hans Verkuil (2):
usbvision: remove power_on_at_open and timed power off
usbvision: fix locking error
Hans de Goede (2):
platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size
Hewenliang (1):
libtraceevent: Fix memory leakage in copy_filter_type
Insu Yun (1):
usbvision: fix locking error
James Smart (1):
scsi: lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): Null pointer dereferences
Jan Kara (2):
xfs: Sanity check flags of Q_XQUOTARM call
jbd2: Fix possible overflow in jbd2_log_space_left()
Jann Horn (1):
binder: Handle start==NULL in binder_update_page_range()
Janusz Krzysztofik (2):
media: ov6650: Fix incorrect use of JPEG colorspace
media: ov6650: Fix stored frame format not in sync with hardware
Jeffrey Hugo (1):
tty: serial: msm_serial: Fix flow control
Jian-Hong Pan (1):
PCI/MSI: Fix incorrect MSI-X masking on resume
Jiangfeng Xiao (1):
serial: serial_core: Perform NULL checks for break_ctl ops
Johan Hovold (3):
media: radio: wl1273: fix interrupt masking on release
USB: serial: mos7720: fix remote wakeup
USB: serial: mos7840: fix remote wakeup
Johannes Berg (1):
iwlwifi: check kasprintf() return value
Josef Bacik (1):
btrfs: check page->mapping when loading free space cache
Kai-Heng Feng (2):
usb: Allow USB device to be warm reset in suspended state x86/PCI: Avoid AMD FCH XHCI USB PME# from D0 defect
Kars de Jong (1):
rtc: msm6242: Fix reading of 10-hour digit
Konstantin Khlebnikov (1):
ACPI / osl: speedup grace period in acpi_os_map_cleanup
Krzysztof Kozlowski (2):
pinctrl: samsung: Fix device node refcount leaks in S3C24xx wakeup controller init
pinctrl: samsung: Fix device node refcount leaks in S3C64xx wakeup controller init
Leonard Crestez (1):
PM / devfreq: Lock devfreq in trans_stat_show
Lihua Yao (1):
ARM: dts: s3c64xx: Fix init order of clock providers
Mans Rullgard (1):
spi: atmel: fix handling of cs_change set on non-last xfer
Marian Mihailescu (1):
clk: samsung: exynos5420: Preserve CPU clocks configuration during suspend/resume
Mark Brown (1):
mmc: sdhci-s3c: Check if clk_set_rate() succeeds
Masami Hiramatsu (15):
perf probe: Fix to handle optimized not-inlined functions
perf probe: Fix to show lines of sys_ functions correctly
perf probe: Fix to add missed brace around if block
perf probe: Skip if the function address is 0
perf probe: Fix to find range-only function instance
perf probe: Fix to show function entry line as probe-able
perf probe: Fix wrong address verification
perf probe: Fix to probe a function which has no entry pc
perf probe: Fix to probe an inline function which has no entry pc perf probe: Fix to list probe event with correct line number perf probe: Fix to show inlined function callsite without entry_pc perf probe: Skip end-of-sequence and non statement lines
perf probe: Filter out instances except for inlined subroutine and subprogram perf probe: Fix to show calling lines of inlined functions
perf probe: Skip overlapped location on searching variables
Mattijs Korpershoek (1):
Bluetooth: hci_core: fix init for HCI_USER_CHANNEL
Max Filippov (1):
xtensa: fix TLB sanity checker
Menglong Dong (1):
macvlan: schedule bc_work even if error
Michał Mirosław (1):
usb: gadget: u_serial: add missing port entry locking
Miklos Szeredi (2):
fuse: verify attributes
fuse: verify nlink
Ming Lei (2):
blk-mq: avoid sysfs buffer overflow with too many CPU cores
blk-mq: make sure that line break can be printed
Miquel Raynal (1):
mtd: spear_smi: Fix Write Burst mode
Nathan Chancellor (1):
tools/power/cpupower: Fix initializer override in hsw_ext_cstates
Nikolay Aleksandrov (1):
net: bridge: deny dev_set_mac_address() when unregistering
Nuno Sá (1):
iio: adis16480: Add debugfs_reg_access entry
Oliver Neukum (4):
appledisplay: fix error handling in the scheduled work
USB: uas: honor flag to avoid CAPACITY16
USB: uas: heed CAPACITY_HEURISTICS
USB: documentation: flags on usb-storage versus UAS
Pan Bian (3):
staging: rtl8192e: fix potential use after free
scsi: qla4xxx: fix double free bug
scsi: bnx2i: fix potential use after free
Paolo Abeni (2):
openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
openvswitch: remove another BUG_ON()
Paolo Bonzini (2):
KVM: x86: fix presentation of TSX feature in ARCH_CAPABILITIES
KVM: x86: do not modify masked bits of shared MSRs
Paul Osmialowski (1):
mmc: sdhci-s3c: solve problem with sleeping in atomic context
Pavel Löbl (1):
USB: serial: mos7840: add USB ID to support Moxa UPort 2210
Pavel Shilovsky (3):
CIFS: Respect O_SYNC and O_DIRECT flags during reconnect
CIFS: Fix SMB2 oplock break processing
CIFS: Fix NULL-pointer dereference in smb2_push_mandatory_locks
Pavel Tikhomirov (1):
sunrpc: fix crash when cache_head become valid before update
Pawel Harlozinski (1):
ASoC: Jack: Fix NULL pointer dereference in snd_soc_jack_report
Peng Fan (2):
tty: serial: imx: use the sg count from dma_map_sg
tty: serial: pch_uart: correct usage of dma_unmap_sg
Sam Bobroff (1):
drm/radeon: fix bad DMA from INTERRUPT_CNTL2
SeongJae Park (1):
xen/blkback: Avoid unmapping unmapped grant pages
Seung-Woo Kim (1):
media: exynos4-is: Fix recursive locking in isp_video_release()
Steffen Liebergeld (1):
PCI: Fix Intel ACS quirk UPDCR register address
Steffen Maier (1):
scsi: zfcp: trace channel log even for FCP command responses
Stephan Gerhold (2):
regulator: ab8500: Remove AB8505 USB regulator
regulator: ab8500: Remove SYSCLKREQ from enum ab8505_regulator_id
Sudarsana Reddy Kalluru (1):
bnx2x: Enable Multi-Cos feature.
Takashi Iwai (3):
ALSA: line6: Drop superfluous snd_device for PCM
ALSA: line6: Fix memory leak at line6_init_pcm() error path
ALSA: pcm: oss: Avoid potential buffer overflows
Tejun Heo (1):
workqueue: Fix spurious sanity check failures in destroy_workqueue()
Theodore Ts'o (1):
ext4: work around deleting a file with i_nlink == 0 safely
Thomas Gleixner (2):
x86/ioapic: Prevent inconsistent state when moving an interrupt
hrtimer: Get rid of the resolution field in hrtimer_clock_base
Tony Lindgren (1):
hwrng: omap3-rom - Call clk_disable_unprepare() on exit only if not idled
Vamshi K Sthambamkadi (1):
ACPI: bus: Fix NULL pointer check in acpi_bus_get_private_data()
Vincenzo Frascino (1):
powerpc: Fix vDSO clock_getres()
Waiman Long (1):
x86/speculation: Fix incorrect MDS/TAA mitigation status
Yang Tao (1):
futex: Prevent robust futex exit race
Zhenzhong Duan (1):
cpuidle: Do not unset the driver if it is there already
Documentation/hw-vuln/mds.rst +5 -2
@@ -262,8 +262,11 @@ The kernel command line allows to control the MDS mitigations at boot ============ ============================================================= -Not specifying this option is equivalent to "mds=full". - +Not specifying this option is equivalent to "mds=full". For processors +that are affected by both TAA (TSX Asynchronous Abort) and MDS, +specifying just "mds=off" without an accompanying "tsx_async_abort=off" +will have no effect as the same mitigation is used for both +vulnerabilities. Mitigation selection guide --------------------------
Documentation/hw-vuln/tsx_async_abort.rst +4 -1
@@ -169,7 +169,10 @@ The kernel command line allows to control the TAA mitigations at boot time with systems will have no effect. ============ ============================================================= -Not specifying this option is equivalent to "tsx_async_abort=full". +Not specifying this option is equivalent to "tsx_async_abort=full". For +processors that are affected by both TAA and MDS, specifying just +"tsx_async_abort=off" without an accompanying "mds=off" will have no +effect as the same mitigation is used for both vulnerabilities. The kernel command line also allows to control the TSX feature using the parameter "tsx=" on CPUs which support TSX control. MSR_IA32_TSX_CTRL is used
Documentation/kernel-parameters.txt +21 -9
@@ -1793,6 +1793,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. full - Enable MDS mitigation on vulnerable CPUs off - Unconditionally disable MDS mitigation + On TAA-affected machines, mds=off can be prevented by + an active TAA mitigation as both vulnerabilities are + mitigated with the same mechanism so in order to disable + this mitigation, you need to specify tsx_async_abort=off + too. + Not specifying this option is equivalent to mds=full.
@@ -3634,6 +3640,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. off - Unconditionally disable TAA mitigation + On MDS-affected machines, tsx_async_abort=off can be + prevented by an active MDS mitigation as both vulnerabilities + are mitigated with the same mechanism so in order to disable + this mitigation, you need to specify mds=off too. + Not specifying this option is equivalent to tsx_async_abort=full. On CPUs which are MDS affected and deploy MDS mitigation, TAA mitigation is not
@@ -3719,13 +3730,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. Flags is a set of characters, each corresponding to a common usb-storage quirk flag as follows: a = SANE_SENSE (collect more than 18 bytes - of sense data); + of sense data, not on uas); b = BAD_SENSE (don't collect more than 18 - bytes of sense data); + bytes of sense data, not on uas); c = FIX_CAPACITY (decrease the reported device capacity by one sector); d = NO_READ_DISC_INFO (don't use - READ_DISC_INFO command); + READ_DISC_INFO command, not on uas); e = NO_READ_CAPACITY_16 (don't use READ_CAPACITY_16 command); f = NO_REPORT_OPCODES (don't use report opcodes
@@ -3740,17 +3751,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. j = NO_REPORT_LUNS (don't use report luns command, uas only); l = NOT_LOCKABLE (don't try to lock and - unlock ejectable media); + unlock ejectable media, not on uas); m = MAX_SECTORS_64 (don't transfer more - than 64 sectors = 32 KB at a time); + than 64 sectors = 32 KB at a time, + not on uas); n = INITIAL_READ10 (force a retry of the - initial READ(10) command); + initial READ(10) command, not on uas); o = CAPACITY_OK (accept the capacity - reported by the device); + reported by the device, not on uas); p = WRITE_CACHE (the device cache is ON - by default); + by default, not on uas); r = IGNORE_RESIDUE (the device reports - bogus residue values); + bogus residue values, not on uas); s = SINGLE_LUN (the device has only one Logical Unit); t = NO_ATA_1X (don't allow ATA(12) and ATA(16)
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 16 -SUBLEVEL = 81 +SUBLEVEL = 82 EXTRAVERSION = NAME = Museum of Fishiegoodies
arch/arm/boot/dts/s3c6410-mini6410.dts +4 -0
@@ -167,6 +167,10 @@ }; }; +&clocks { + clocks = <&fin_pll>; +}; + &sdhci0 { pinctrl-names = "default"; pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
arch/arm/boot/dts/s3c6410-smdk6410.dts +4 -0
@@ -71,6 +71,10 @@ }; }; +&clocks { + clocks = <&fin_pll>; +}; + &sdhci0 { pinctrl-names = "default"; pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
arch/arm/mach-tegra/reset-handler.S +3 -3
@@ -55,16 +55,16 @@ ENTRY(tegra_resume) cmp r6, #TEGRA20 beq 1f @ Yes /* Clear the flow controller flags for this CPU. */ - cpu_to_csr_reg r1, r0 + cpu_to_csr_reg r3, r0 mov32 r2, TEGRA_FLOW_CTRL_BASE - ldr r1, [r2, r1] + ldr r1, [r2, r3] /* Clear event & intr flag */ orr r1, r1, \ #FLOW_CTRL_CSR_INTR_FLAG | FLOW_CTRL_CSR_EVENT_FLAG movw r0, #0x3FFD @ enable, cluster_switch, immed, bitmaps @ & ext flags for CPU power mgnt bic r1, r1, r0 - str r1, [r2] + str r1, [r2, r3] 1: mov32 r9, 0xc09
arch/arm/mach-ux500/board-mop500-regulators.c +0 -600
633 lines not on this page · raw message
arch/arm/mach-ux500/board-mop500-regulators.h +0 -8
@@ -11,14 +11,6 @@#ifndef __BOARD_MOP500_REGULATORS_H#define __BOARD_MOP500_REGULATORS_H -#include <linux/regulator/machine.h> -#include <linux/regulator/ab8500.h> -extern struct ab8500_regulator_platform_data ab8500_regulator_plat_data; -extern struct ab8500_regulator_platform_data ab8505_regulator_plat_data; -extern struct regulator_init_data tps61052_regulator; -extern struct regulator_init_data gpio_en_3v3_regulator; - -void mop500_regulator_init (void );#endif
arch/powerpc/include/asm/vdso_datapage.h +2 -0
@@ -86,6 +86,7 @@ struct vdso_data {__s32 wtom_clock_nsec;/* Wall to monotonic clock nsec */ __s64 wtom_clock_sec;/* Wall to monotonic clock sec */ struct timespec stamp_xtime;/* xtime as at tb_orig_stamp */ +__u32 hrtimer_res;/* hrtimer resolution */ __u32 syscall_map_64[SYSCALL_MAP_SIZE ];/* map of syscalls */ __u32 syscall_map_32[SYSCALL_MAP_SIZE ];/* map of syscalls */ };
@@ -107,6 +108,7 @@ struct vdso_data {__s32 wtom_clock_nsec;struct timespec stamp_xtime;/* xtime as at tb_orig_stamp */ __u32 stamp_sec_fraction;/* fractional seconds of stamp_xtime */ +__u32 hrtimer_res;/* hrtimer resolution */ __u32 syscall_map_32[SYSCALL_MAP_SIZE ];/* map of syscalls */ __u32 dcache_block_size;/* L1 d-cache block size */ __u32 icache_block_size;/* L1 i-cache block size */
arch/powerpc/kernel/asm-offsets.c +1 -1
@@ -397,6 +397,7 @@ int main(void)DEFINE (WTOM_CLOCK_NSEC , offsetof(struct vdso_data , wtom_clock_nsec));DEFINE (STAMP_XTIME , offsetof(struct vdso_data , stamp_xtime));DEFINE (STAMP_SEC_FRAC , offsetof(struct vdso_data , stamp_sec_fraction)); +DEFINE (CLOCK_HRTIMER_RES , offsetof(struct vdso_data , hrtimer_res));DEFINE (CFG_ICACHE_BLOCKSZ , offsetof(struct vdso_data , icache_block_size));DEFINE (CFG_DCACHE_BLOCKSZ , offsetof(struct vdso_data , dcache_block_size));DEFINE (CFG_ICACHE_LOGBLOCKSZ , offsetof(struct vdso_data , icache_log_block_size));
@@ -425,7 +426,6 @@ int main(void)DEFINE (CLOCK_REALTIME ,CLOCK_REALTIME );DEFINE (CLOCK_MONOTONIC ,CLOCK_MONOTONIC );DEFINE (NSEC_PER_SEC ,NSEC_PER_SEC ); -DEFINE (CLOCK_REALTIME_RES ,MONOTONIC_RES_NSEC );#ifdef CONFIG_BUG DEFINE (BUG_ENTRY_SIZE ,sizeof (struct bug_entry ));
arch/powerpc/kernel/misc_64.S +2 -2
@@ -84,7 +84,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE) subf r8,r6,r4 /* compute length */ add r8,r8,r5 /* ensure we get enough */ lwz r9,DCACHEL1LOGLINESIZE(r10) /* Get log-2 of cache line size */ - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ beqlr /* nothing to do? */ mtctr r8 1: dcbst 0,r6
@@ -100,7 +100,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE) subf r8,r6,r4 /* compute length */ add r8,r8,r5 lwz r9,ICACHEL1LOGLINESIZE(r10) /* Get log-2 of Icache line size */ - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ beqlr /* nothing to do? */ mtctr r8 2: icbi 0,r6
arch/powerpc/kernel/time.c +1 -0
@@ -781,6 +781,7 @@ void update_vsyscall_old(struct timespec *wall_time, struct timespec *wtm, vdso_data->wtom_clock_nsec = wtm->tv_nsec; vdso_data->stamp_xtime = *wall_time; vdso_data->stamp_sec_fraction = frac_sec; + vdso_data->hrtimer_res = hrtimer_resolution;smp_wmb (); ++(vdso_data->tb_update_count); }
arch/powerpc/kernel/vdso32/gettimeofday.S +5 -2
@@ -159,12 +159,15 @@ V_FUNCTION_BEGIN(__kernel_clock_getres) cror cr0*4+eq,cr0*4+eq,cr1*4+eq bne cr0,99f + mflr r12 + .cfi_register lr,r12 + bl __get_datapage@local /* get data page */ + lwz r5, CLOCK_HRTIMER_RES(r3) + mtlr r12 li r3,0 cmpli cr0,r4,0 crclr cr0*4+so beqlr - lis r5,CLOCK_REALTIME_RES@h - ori r5,r5,CLOCK_REALTIME_RES@l stw r3,TSPC32_TV_SEC(r4) stw r5,TSPC32_TV_NSEC(r4) blr
arch/powerpc/kernel/vdso64/cacheflush.S +2 -2
@@ -39,7 +39,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache) subf r8,r6,r4 /* compute length */ add r8,r8,r5 /* ensure we get enough */ lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ crclr cr0*4+so beqlr /* nothing to do? */ mtctr r8
@@ -56,7 +56,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache) subf r8,r6,r4 /* compute length */ add r8,r8,r5 lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ crclr cr0*4+so beqlr /* nothing to do? */ mtctr r8
arch/powerpc/kernel/vdso64/gettimeofday.S +5 -2
@@ -144,12 +144,15 @@ V_FUNCTION_BEGIN(__kernel_clock_getres) cror cr0*4+eq,cr0*4+eq,cr1*4+eq bne cr0,99f + mflr r12 + .cfi_register lr,r12 + bl V_LOCAL_FUNC(__get_datapage) + lwz r5, CLOCK_HRTIMER_RES(r3) + mtlr r12 li r3,0 cmpldi cr0,r4,0 crclr cr0*4+so beqlr - lis r5,CLOCK_REALTIME_RES@h - ori r5,r5,CLOCK_REALTIME_RES@l std r3,TSPC64_TV_SEC(r4) std r5,TSPC64_TV_NSEC(r4) blr
arch/s390/kernel/runtime_instr.c +1 -1
@@ -53,9 +53,9 @@ void exit_thread_runtime_instr(void) {struct task_struct *task = current; -preempt_disable ();if (!task->thread.ri_cb)return ; +preempt_disable ();disable_runtime_instr ();kfree (task->thread.ri_cb); task->thread.ri_signum =0 ;
arch/x86/kernel/apic/io_apic.c +6 -3
@@ -2377,9 +2377,10 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)static inline bool ioapic_irqd_mask (struct irq_data *data,struct irq_cfg *cfg) { -/* If we are moving the irq we need to mask it */ +/* If we are moving the IRQ we need to mask it */ if (unlikely (irqd_is_setaffinity_pending (data))) { -mask_ioapic (cfg); +if (!irqd_irq_masked (data)) +mask_ioapic (cfg);return true; }return false;
@@ -2417,7 +2418,9 @@ static inline void ioapic_irqd_unmask(struct irq_data *data,*/ if (!io_apic_level_ack_pending (cfg))irq_move_masked_irq (data); - unmask_ioapic(cfg); +/* If the IRQ is masked in the core, leave it: */ +if (!irqd_irq_masked (data)) + unmask_ioapic(cfg); } }#else
arch/x86/kernel/cpu/bugs.c +15 -2
@@ -349,8 +349,12 @@ static void __init taa_select_mitigation(void)return ; } -/* TAA mitigation is turned off on the cmdline (tsx_async_abort=off) */ -if (taa_mitigation ==TAA_MITIGATION_OFF ) +/* +* TAA mitigation via VERW is turned off if both +* tsx_async_abort=off and mds=off are specified. +*/ +if (taa_mitigation ==TAA_MITIGATION_OFF && + mds_mitigation ==MDS_MITIGATION_OFF ) goto out;if (boot_cpu_has (X86_FEATURE_MD_CLEAR ))
@@ -381,6 +385,15 @@ static void __init taa_select_mitigation(void)*/ static_branch_enable (&mds_user_clear); +/* +* Update MDS mitigation, if necessary, as the mds_user_clear is +* now enabled for TAA mitigation. +*/ +if (mds_mitigation ==MDS_MITIGATION_OFF && +boot_cpu_has_bug (X86_BUG_MDS )) { + mds_mitigation =MDS_MITIGATION_FULL ; +mds_select_mitigation (); + } out:pr_info ("%s\n" , taa_strings[taa_mitigation]); }
arch/x86/kernel/module.c +1 -0
@@ -180,6 +180,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, goto overflow;break ;case R_X86_64_PC32 : +case R_X86_64_PLT32 : val -= (u64 )loc; *(u32 *)loc = val;#if 0
arch/x86/kvm/x86.c +10 -4
@@ -242,13 +242,14 @@ int kvm_set_shared_msr(unsigned slot, u64 value, u64 mask)struct kvm_shared_msrs *smsr =per_cpu_ptr (shared_msrs, cpu);int err; -if (((value ^ smsr->values[slot].curr) & mask) ==0 ) + value = (value & mask) | (smsr->values[slot].host & ~mask); +if (value == smsr->values[slot].curr)return 0 ; - smsr->values[slot].curr = value; err =wrmsrl_safe (shared_msrs_global.msrs[slot], value);if (err)return 1 ; + smsr->values[slot].curr = value;if (!smsr->registered) { smsr->urn.on_user_return = kvm_on_user_return;user_return_notifier_register (&smsr->urn);
@@ -945,10 +946,15 @@ u64 kvm_get_arch_capabilities(void)* If TSX is disabled on the system, guests are also mitigated against * TAA and clear CPU buffer mitigation is not required for guests. */ -if (boot_cpu_has_bug (X86_BUG_TAA ) &&boot_cpu_has (X86_FEATURE_RTM ) && - (data &ARCH_CAP_TSX_CTRL_MSR )) +if (!boot_cpu_has (X86_FEATURE_RTM )) + data &= ~ARCH_CAP_TAA_NO ; +else if (!boot_cpu_has_bug (X86_BUG_TAA )) + data |=ARCH_CAP_TAA_NO ; +else if (data &ARCH_CAP_TSX_CTRL_MSR ) data &= ~ARCH_CAP_MDS_NO ; +/* KVM does not emulate MSR_IA32_TSX_CTRL. */ + data &= ~ARCH_CAP_TSX_CTRL_MSR ;return data; }
arch/x86/pci/fixup.c +11 -0
@@ -574,6 +574,17 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6f60, pci_invalid_bar);DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_INTEL ,0x6fa0 , pci_invalid_bar);DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_INTEL ,0x6fc0 , pci_invalid_bar); +/* +* Device [1022:7914] +* When in D0, PME# doesn't get asserted when plugging USB 2.0 device. +*/ +static void pci_fixup_amd_fch_xhci_pme (struct pci_dev *dev) +{ +dev_info (&dev->dev,"PME# does not work under D0, disabling it\n" ); + dev->pme_support &= ~(PCI_PM_CAP_PME_D0 >>PCI_PM_CAP_PME_SHIFT ); +} +DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_AMD ,0x7914 , pci_fixup_amd_fch_xhci_pme); +/* * Apple MacBook Pro: Avoid [mem 0x7fa00000-0x7fbfffff] *
arch/x86/tools/relocs.c +1 -0
@@ -763,6 +763,7 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,switch (r_type) {case R_X86_64_NONE :case R_X86_64_PC32 : +case R_X86_64_PLT32 :/* * NONE can be ignored and PC relative relocations don't * need to be adjusted.
arch/xtensa/mm/tlb.c +2 -2
@@ -218,6 +218,8 @@ static int check_tlb_entry(unsigned w, unsigned e, bool dtlb)unsigned tlbidx = w | (e <<PAGE_SHIFT );unsigned r0 = dtlb ?read_dtlb_virtual (tlbidx) :read_itlb_virtual (tlbidx); +unsigned r1 = dtlb ? +read_dtlb_translation (tlbidx) :read_itlb_translation (tlbidx);unsigned vpn = (r0 &PAGE_MASK ) | (e <<PAGE_SHIFT );unsigned pte =get_pte_for_vaddr (vpn);unsigned mm_asid = (get_rasid_register () >>8 ) &ASID_MASK ;
@@ -233,8 +235,6 @@ static int check_tlb_entry(unsigned w, unsigned e, bool dtlb) }if (tlb_asid == mm_asid) { -unsigned r1 = dtlb ?read_dtlb_translation (tlbidx) : -read_itlb_translation (tlbidx);if ((pte ^ r1) &PAGE_MASK ) {pr_err ("%cTLB: way: %u, entry: %u, mapping: %08x->%08x, PTE: %08x\n" , dtlb ?'D' :'I' , w, e, r0, r1, pte);
block/blk-mq-sysfs.c +10 -9
@@ -226,24 +226,25 @@ static ssize_t blk_mq_hw_sysfs_active_show(struct blk_mq_hw_ctx *hctx, char *pagstatic ssize_t blk_mq_hw_sysfs_cpus_show (struct blk_mq_hw_ctx *hctx,char *page) { +const size_t size =PAGE_SIZE -1 ;unsigned int i, first =1 ; -ssize_t ret =0 ; - -blk_mq_disable_hotplug (); +int ret =0 , pos =0 ;for_each_cpu (i, hctx->cpumask) {if (first) - ret +=sprintf (ret + page,"%u" , i); + ret =snprintf (pos + page, size - pos,"%u" , i);else - ret +=sprintf (ret + page,", %u" , i); + ret =snprintf (pos + page, size - pos,", %u" , i); + +if (ret >= size - pos) +break ; first =0 ; + pos += ret; } -blk_mq_enable_hotplug (); - - ret +=sprintf (ret + page,"\n" ); -return ret; + ret =snprintf (pos + page, size +1 - pos,"\n" ); +return pos + ret; }static struct blk_mq_ctx_sysfs_entry blk_mq_sysfs_dispatched = {
block/blk-mq.c +7 -0
@@ -1645,6 +1645,11 @@ static void blk_mq_map_swqueue(struct request_queue *q)struct blk_mq_ctx *ctx;struct blk_mq_tag_set *set = q->tag_set; +/* +* Avoid others reading imcomplete hctx->cpumask through sysfs +*/ +mutex_lock (&q->sysfs_lock); +queue_for_each_hw_ctx (q, hctx, i) {cpumask_clear (hctx->cpumask); hctx->nr_ctx =0 ;
@@ -1664,6 +1669,8 @@ static void blk_mq_map_swqueue(struct request_queue *q) hctx->ctxs[hctx->nr_ctx++] = ctx; } +mutex_unlock (&q->sysfs_lock); +queue_for_each_hw_ctx (q, hctx, i) {/* * If not software queues are mapped to this hardware queue,
drivers/acpi/bus.c +1 -1
@@ -154,7 +154,7 @@ int acpi_bus_get_private_data(acpi_handle handle, void **data) {acpi_status status; -if (!*data) +if (!data)return -EINVAL ; status =acpi_get_data (handle, acpi_bus_private_data_handler, data);
drivers/acpi/osl.c +17 -11
@@ -416,24 +416,27 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size) }EXPORT_SYMBOL_GPL (acpi_os_map_memory); -static void acpi_os_drop_map_ref (struct acpi_ioremap *map) +/* Must be called with mutex_lock(&acpi_ioremap_lock) */ +static unsigned long acpi_os_drop_map_ref (struct acpi_ioremap *map) { -if (!--map->refcount) +unsigned long refcount = --map->refcount; + +if (!refcount)list_del_rcu (&map->list); +return refcount; }static void acpi_os_map_cleanup (struct acpi_ioremap *map) { -if (!map->refcount) { -synchronize_rcu (); -acpi_unmap (map->phys, map->virt); -kfree (map); - } +synchronize_rcu_expedited (); +acpi_unmap (map->phys, map->virt); +kfree (map); }void __ref acpi_os_unmap_iomem (void __iomem *virt,acpi_size size) {struct acpi_ioremap *map; +unsigned long refcount;if (!acpi_gbl_permanent_mmap) {__acpi_unmap_table (virt, size);
@@ -447,10 +450,11 @@ void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size)WARN (true,PREFIX "%s: bad address %p\n" , __func__, virt);return ; } -acpi_os_drop_map_ref (map); + refcount =acpi_os_drop_map_ref (map);mutex_unlock (&acpi_ioremap_lock); -acpi_os_map_cleanup (map); +if (!refcount) +acpi_os_map_cleanup (map); }EXPORT_SYMBOL_GPL (acpi_os_unmap_iomem);
@@ -491,6 +495,7 @@ void acpi_os_unmap_generic_address(struct acpi_generic_address *gas) {u64 addr;struct acpi_ioremap *map; +unsigned long refcount;if (gas->space_id !=ACPI_ADR_SPACE_SYSTEM_MEMORY )return ;
@@ -506,10 +511,11 @@ void acpi_os_unmap_generic_address(struct acpi_generic_address *gas)mutex_unlock (&acpi_ioremap_lock);return ; } -acpi_os_drop_map_ref (map); + refcount =acpi_os_drop_map_ref (map);mutex_unlock (&acpi_ioremap_lock); -acpi_os_map_cleanup (map); +if (!refcount) +acpi_os_map_cleanup (map); }EXPORT_SYMBOL (acpi_os_unmap_generic_address);
drivers/block/xen-blkback/blkback.c +2 -0
@@ -825,6 +825,8 @@ static int xen_blkbk_map(struct xen_blkif *blkif, out_of_memory:pr_alert (DRV_PFX "%s: out of memory\n" , __func__);put_free_pages (blkif, pages_to_gnt, segs_to_map); +for (i = last_map; i < num; i++) + pages[i]->handle =BLKBACK_INVALID_HANDLE ;return -ENOMEM ; }
drivers/char/hw_random/omap3-rom-rng.c +2 -1
@@ -119,7 +119,8 @@ static int omap3_rom_rng_probe(struct platform_device *pdev)static int omap3_rom_rng_remove (struct platform_device *pdev) {hwrng_unregister (&omap3_rom_rng_ops); -clk_disable_unprepare (rng_clk); +if (!rng_idle) +clk_disable_unprepare (rng_clk);return 0 ; }
drivers/clk/samsung/clk-exynos5420.c +2 -0
@@ -162,6 +162,8 @@ static unsigned long exynos5x_clk_regs[] __initdata = {GATE_BUS_CPU ,GATE_SCLK_CPU ,CLKOUT_CMU_CPU , +APLL_CON0 , +KPLL_CON0 ,CPLL_CON0 ,DPLL_CON0 , EPLL_CON0,
drivers/cpuidle/driver.c +7 -8
@@ -60,24 +60,23 @@ static inline void __cpuidle_unset_driver(struct cpuidle_driver *drv)* __cpuidle_set_driver - set per CPU driver variables for the given driver. * @drv: a valid pointer to a struct cpuidle_driver * -* For each CPU in the driver's cpumask, unset the registered driver per CPU -* to @drv. -* -* Returns 0 on success, -EBUSY if the CPUs have driver(s) already. +* Returns 0 on success, -EBUSY if any CPU in the cpumask have a driver +* different from drv already. */ static inline int __cpuidle_set_driver (struct cpuidle_driver *drv) {int cpu;for_each_cpu (cpu, drv->cpumask) { +struct cpuidle_driver *old_drv; -if (__cpuidle_get_cpu_driver (cpu)) { -__cpuidle_unset_driver (drv); + old_drv =__cpuidle_get_cpu_driver (cpu); +if (old_drv && old_drv != drv)return -EBUSY ; - } + } +for_each_cpu (cpu, drv->cpumask)per_cpu (cpuidle_drivers, cpu) = drv; - }return 0 ; }
drivers/devfreq/devfreq.c +6 -1
@@ -95,6 +95,7 @@ static int devfreq_update_status(struct devfreq *devfreq, unsigned long freq)int lev, prev_lev, ret =0 ;unsigned long cur_time; +lockdep_assert_held (&devfreq->lock); cur_time = jiffies; prev_lev =devfreq_get_freq_level (devfreq, devfreq->previous_freq);
@@ -1054,9 +1055,13 @@ static ssize_t trans_stat_show(struct device *dev,int i, j;unsigned int max_state = devfreq->profile->max_state; +mutex_lock (&devfreq->lock);if (!devfreq->stop_polling && -devfreq_update_status (devfreq, devfreq->previous_freq)) +devfreq_update_status (devfreq, devfreq->previous_freq)) { +mutex_unlock (&devfreq->lock);return 0 ; + } +mutex_unlock (&devfreq->lock); len =sprintf (buf," From : To\n" ); len +=sprintf (buf + len," :" );
drivers/gpu/drm/i810/i810_dma.c +2 -2
@@ -724,7 +724,7 @@ static void i810_dma_dispatch_vertex(struct drm_device *dev,if (nbox >I810_NR_SAREA_CLIPRECTS ) nbox =I810_NR_SAREA_CLIPRECTS ; -if (used >4 *1024 ) +if (used <0 || used >4 *1024 ) used =0 ;if (sarea_priv->dirty)
@@ -1044,7 +1044,7 @@ static void i810_dma_dispatch_mc(struct drm_device *dev, struct drm_buf *buf, inif (u !=I810_BUF_CLIENT )DRM_DEBUG ("MC found buffer that isn't mine!\n" ); -if (used >4 *1024 ) +if (used <0 || used >4 *1024 ) used =0 ; sarea_priv->dirty =0x7f ;
drivers/gpu/drm/i915/i915_gem_userptr.c +21 -1
@@ -569,8 +569,28 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj)for_each_sg_page (obj->pages->sgl, &sg_iter, obj->pages->nents,0 ) {struct page *page =sg_page_iter_page (&sg_iter); -if (obj->dirty) +if (obj->dirty &&trylock_page (page)) { +/* +* As this may not be anonymous memory (e.g. shmem) +* but exist on a real mapping, we have to lock +* the page in order to dirty it -- holding +* the page reference is not sufficient to +* prevent the inode from being truncated. +* Play safe and take the lock. +* +* However...! +* +* The mmu-notifier can be invalidated for a +* migrate_page, that is alreadying holding the lock +* on the page. Such a try_to_unmap() will result +* in us calling put_pages() and so recursively try +* to lock the page. We avoid that deadlock with +* a trylock_page() and in exchange we risk missing +* some page dirtying. +*/ set_page_dirty (page); +unlock_page (page); + }mark_page_accessed (page);page_cache_release (page);
drivers/gpu/drm/radeon/cik.c +2 -2
@@ -6875,8 +6875,8 @@ static int cik_irq_init(struct radeon_device *rdev) }/* setup interrupt control */ -/* XXX this should actually be a bus address, not an MC address. same on older asics */ -WREG32 (INTERRUPT_CNTL2 , rdev->ih.gpu_addr >>8 ); +/* set dummy read address to dummy page address */ +WREG32 (INTERRUPT_CNTL2 , rdev->dummy_page.addr >>8 ); interrupt_cntl =RREG32 (INTERRUPT_CNTL );/* IH_DUMMY_RD_OVERRIDE=0 - dummy read disabled with msi, enabled without msi * IH_DUMMY_RD_OVERRIDE=1 - dummy read controlled by IH_DUMMY_RD_EN
drivers/gpu/drm/radeon/r100.c +2 -2
@@ -1810,8 +1810,8 @@ static int r100_packet0_check(struct radeon_cs_parser *p, track->textures[i].use_pitch =1 ; }else { track->textures[i].use_pitch =0 ; - track->textures[i].width =1 << ((idx_value >>RADEON_TXFORMAT_WIDTH_SHIFT ) &RADEON_TXFORMAT_WIDTH_MASK ); - track->textures[i].height =1 << ((idx_value >>RADEON_TXFORMAT_HEIGHT_SHIFT ) &RADEON_TXFORMAT_HEIGHT_MASK ); + track->textures[i].width =1 << ((idx_value &RADEON_TXFORMAT_WIDTH_MASK ) >>RADEON_TXFORMAT_WIDTH_SHIFT ); + track->textures[i].height =1 << ((idx_value &RADEON_TXFORMAT_HEIGHT_MASK ) >>RADEON_TXFORMAT_HEIGHT_SHIFT ); }if (idx_value &RADEON_TXFORMAT_CUBIC_MAP_ENABLE ) track->textures[i].tex_coord_type =2 ;
drivers/gpu/drm/radeon/r200.c +2 -2
@@ -473,8 +473,8 @@ int r200_packet0_check(struct radeon_cs_parser *p, track->textures[i].use_pitch =1 ; }else { track->textures[i].use_pitch =0 ; - track->textures[i].width =1 << ((idx_value >>RADEON_TXFORMAT_WIDTH_SHIFT ) &RADEON_TXFORMAT_WIDTH_MASK ); - track->textures[i].height =1 << ((idx_value >>RADEON_TXFORMAT_HEIGHT_SHIFT ) &RADEON_TXFORMAT_HEIGHT_MASK ); + track->textures[i].width =1 << ((idx_value &RADEON_TXFORMAT_WIDTH_MASK ) >>RADEON_TXFORMAT_WIDTH_SHIFT ); + track->textures[i].height =1 << ((idx_value &RADEON_TXFORMAT_HEIGHT_MASK ) >>RADEON_TXFORMAT_HEIGHT_SHIFT ); }if (idx_value &R200_TXFORMAT_LOOKUP_DISABLE ) track->textures[i].lookup_disable = true;
drivers/gpu/drm/radeon/r600.c +2 -2
@@ -3427,8 +3427,8 @@ int r600_irq_init(struct radeon_device *rdev) }/* setup interrupt control */ -/* set dummy read address to ring address */ -WREG32 (INTERRUPT_CNTL2 , rdev->ih.gpu_addr >>8 ); +/* set dummy read address to dummy page address */ +WREG32 (INTERRUPT_CNTL2 , rdev->dummy_page.addr >>8 ); interrupt_cntl =RREG32 (INTERRUPT_CNTL );/* IH_DUMMY_RD_OVERRIDE=0 - dummy read disabled with msi, enabled without msi * IH_DUMMY_RD_OVERRIDE=1 - dummy read controlled by IH_DUMMY_RD_EN
drivers/gpu/drm/radeon/si.c +2 -2
@@ -5749,8 +5749,8 @@ static int si_irq_init(struct radeon_device *rdev) }/* setup interrupt control */ -/* set dummy read address to ring address */ -WREG32 (INTERRUPT_CNTL2 , rdev->ih.gpu_addr >>8 ); +/* set dummy read address to dummy page address */ +WREG32 (INTERRUPT_CNTL2 , rdev->dummy_page.addr >>8 ); interrupt_cntl =RREG32 (INTERRUPT_CNTL );/* IH_DUMMY_RD_OVERRIDE=0 - dummy read disabled with msi, enabled without msi * IH_DUMMY_RD_OVERRIDE=1 - dummy read controlled by IH_DUMMY_RD_EN
drivers/iio/imu/adis16480.c +5 -2
@@ -405,12 +405,14 @@ static int adis16480_get_calibbias(struct iio_dev *indio_dev,case IIO_MAGN :case IIO_PRESSURE : ret =adis_read_reg_16 (&st->adis, reg, &val16); - *bias =sign_extend32 (val16,15 ); +if (ret ==0 ) + *bias =sign_extend32 (val16,15 );break ;case IIO_ANGL_VEL :case IIO_ACCEL : ret =adis_read_reg_32 (&st->adis, reg, &val32); - *bias =sign_extend32 (val32,31 ); +if (ret ==0 ) + *bias =sign_extend32 (val32,31 );break ;default : ret = -EINVAL ;
@@ -758,6 +760,7 @@ static const struct iio_info adis16480_info = { .read_raw = &adis16480_read_raw, .write_raw = &adis16480_write_raw, .update_scan_mode = adis_update_scan_mode, + .debugfs_reg_access = adis_debugfs_reg_access, .driver_module = THIS_MODULE, };
drivers/infiniband/ulp/srpt/ib_srpt.c +24 -0
@@ -1519,9 +1519,11 @@ static int srpt_build_cmd_rsp(struct srpt_rdma_ch *ch, struct srpt_send_ioctx *ioctx, u64 tag, int status) { + struct se_cmd *cmd = &ioctx->cmd;struct srp_rsp *srp_rsp;const u8 *sense_data;int sense_data_len, max_sense_len; +u32 resid = cmd->residual_count;/* * The lowest bit of all SAM-3 status codes is zero (see also
@@ -1543,6 +1545,28 @@ static int srpt_build_cmd_rsp(struct srpt_rdma_ch *ch, srp_rsp->tag = tag; srp_rsp->status = status; +if (cmd->se_cmd_flags &SCF_UNDERFLOW_BIT ) { +if (cmd->data_direction ==DMA_TO_DEVICE ) { +/* residual data from an underflow write */ + srp_rsp->flags =SRP_RSP_FLAG_DOUNDER ; + srp_rsp->data_out_res_cnt =cpu_to_be32 (resid); + }else if (cmd->data_direction ==DMA_FROM_DEVICE ) { +/* residual data from an underflow read */ + srp_rsp->flags =SRP_RSP_FLAG_DIUNDER ; + srp_rsp->data_in_res_cnt =cpu_to_be32 (resid); + } + }else if (cmd->se_cmd_flags &SCF_OVERFLOW_BIT ) { +if (cmd->data_direction ==DMA_TO_DEVICE ) { +/* residual data from an overflow write */ + srp_rsp->flags =SRP_RSP_FLAG_DOOVER ; + srp_rsp->data_out_res_cnt =cpu_to_be32 (resid); + }else if (cmd->data_direction ==DMA_FROM_DEVICE ) { +/* residual data from an overflow read */ + srp_rsp->flags =SRP_RSP_FLAG_DIOVER ; + srp_rsp->data_in_res_cnt =cpu_to_be32 (resid); + } + } +if (sense_data_len) {BUILD_BUG_ON (MIN_MAX_RSP_SIZE <=sizeof (*srp_rsp)); max_sense_len = ch->max_ti_iu_len -sizeof (*srp_rsp);
drivers/media/i2c/soc_camera/ov6650.c +7 -14
@@ -203,7 +203,6 @@ struct ov6650 {unsigned long pclk_max;/* from resolution and format */ struct v4l2_fract tpf;/* as requested with s_parm */ enum v4l2_mbus_pixelcode code; -enum v4l2_colorspace colorspace; };
@@ -508,7 +507,7 @@ static int ov6650_g_fmt(struct v4l2_subdev *sd, mf->width = priv->rect.width >> priv->half_scale; mf->height = priv->rect.height >> priv->half_scale; mf->code = priv->code; - mf->colorspace = priv->colorspace; + mf->colorspace =V4L2_COLORSPACE_SRGB ; mf->field =V4L2_FIELD_NONE ;return 0 ;
@@ -606,7 +605,6 @@ static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)dev_err (&client->dev,"Pixel format not handled: 0x%x\n" , code);return -EINVAL ; } - priv->code = code;if (code ==V4L2_MBUS_FMT_Y8_1X8 || code ==V4L2_MBUS_FMT_SBGGR8_1X8 ) {
@@ -619,11 +617,6 @@ static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf) priv->pclk_max =8000000 ; } -if (code ==V4L2_MBUS_FMT_SBGGR8_1X8 ) - priv->colorspace =V4L2_COLORSPACE_SRGB ; -else if (code !=0 ) - priv->colorspace =V4L2_COLORSPACE_JPEG ; -if (half_scale) {dev_dbg (&client->dev,"max resolution: QCIF\n" ); coma_set |=COMA_QCIF ;
@@ -632,7 +625,6 @@ static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)dev_dbg (&client->dev,"max resolution: CIF\n" ); coma_mask |=COMA_QCIF ; } - priv->half_scale = half_scale;if (sense) {if (sense->master_clock ==8000000 ) {
@@ -672,11 +664,14 @@ static int ov6650_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf) ret =ov6650_reg_rmw (client,REG_COMA , coma_set, coma_mask);if (!ret) ret =ov6650_reg_write (client,REG_CLKRC , clkrc); -if (!ret) +if (!ret) { + priv->half_scale = half_scale; + ret =ov6650_reg_rmw (client,REG_COML , coml_set, coml_mask); + }if (!ret) { - mf->colorspace = priv->colorspace; + priv->code = code; mf->width = priv->rect.width >> half_scale; mf->height = priv->rect.height >> half_scale; }
@@ -695,6 +690,7 @@ static int ov6650_try_fmt(struct v4l2_subdev *sd, &mf->height, 2, H_CIF, 1, 0); mf->field =V4L2_FIELD_NONE ; + mf->colorspace =V4L2_COLORSPACE_SRGB ;switch (mf->code) {case V4L2_MBUS_FMT_Y10_1X10 :
@@ -704,12 +700,10 @@ static int ov6650_try_fmt(struct v4l2_subdev *sd,case V4L2_MBUS_FMT_YUYV8_2X8 :case V4L2_MBUS_FMT_VYUY8_2X8 :case V4L2_MBUS_FMT_UYVY8_2X8 : - mf->colorspace =V4L2_COLORSPACE_JPEG ;break ;default : mf->code =V4L2_MBUS_FMT_SBGGR8_1X8 ;case V4L2_MBUS_FMT_SBGGR8_1X8 : - mf->colorspace =V4L2_COLORSPACE_SRGB ;break ; }
@@ -1016,7 +1010,6 @@ static int ov6650_probe(struct i2c_client *client, priv->rect.height =H_CIF ; priv->half_scale = false; priv->code =V4L2_MBUS_FMT_YUYV8_2X8 ; - priv->colorspace =V4L2_COLORSPACE_JPEG ; priv->clk =v4l2_clk_get (&client->dev,"mclk" );if (IS_ERR (priv->clk)) {
drivers/media/platform/exynos4-is/fimc-isp-video.c +1 -1
@@ -322,7 +322,7 @@ static int isp_video_release(struct file *file) ivc->streaming =0 ; } -vb2_fop_release (file); +_vb2_fop_release (file,NULL );if (v4l2_fh_is_singular_file (file)) {fimc_pipeline_call (&ivc->ve, close);
drivers/media/radio/radio-wl1273.c +1 -2
@@ -1142,8 +1142,7 @@ static int wl1273_fm_fops_release(struct file *file)if (radio->rds_users >0 ) { radio->rds_users--;if (radio->rds_users ==0 ) { -if (mutex_lock_interruptible (&core->lock)) -return -EINTR ; +mutex_lock (&core->lock); radio->irq_flags &= ~WL1273_RDS_EVENT ;
drivers/media/usb/usbvision/usbvision-core.c +0 -50
56 lines not on this page · raw message
drivers/media/usb/usbvision/usbvision-video.c +38 -69
246 lines not on this page · raw message
drivers/media/usb/usbvision/usbvision.h +0 -5
@@ -391,8 +391,6 @@ struct usb_usbvision {unsigned char iface_alt;/* Alt settings */ unsigned char vin_reg2_preset;struct mutex v4l2_lock; -struct timer_list power_off_timer; -struct work_struct power_off_work;int power;/* is the device powered on? */ int user;/* user count for exclusive use */ int initialized;/* Had we already sent init sequence? */
@@ -510,9 +508,6 @@ int usbvision_muxsel(struct usb_usbvision *usbvision, int channel);int usbvision_set_input (struct usb_usbvision *usbvision);int usbvision_set_output (struct usb_usbvision *usbvision,int width,int height); -void usbvision_init_power_off_timer (struct usb_usbvision *usbvision); -void usbvision_set_power_off_timer (struct usb_usbvision *usbvision); -void usbvision_reset_power_off_timer (struct usb_usbvision *usbvision);int usbvision_power_off (struct usb_usbvision *usbvision);int usbvision_power_on (struct usb_usbvision *usbvision);
drivers/mmc/host/sdhci-s3c.c +15 -1
@@ -12,6 +12,7 @@* published by the Free Software Foundation. */ +#include <linux/spinlock.h> #include <linux/delay.h> #include <linux/dma-mapping.h> #include <linux/platform_device.h>
@@ -300,6 +301,7 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)struct device *dev = &ourhost->pdev->dev;unsigned long timeout;u16 clk =0 ; +int ret; host->mmc->actual_clock =0 ;
@@ -311,7 +313,19 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)sdhci_s3c_set_clock (host, clock); -clk_set_rate (ourhost->clk_bus[ourhost->cur_clk], clock); +/* Reset SD Clock Enable */ + clk =sdhci_readw (host,SDHCI_CLOCK_CONTROL ); + clk &= ~SDHCI_CLOCK_CARD_EN ; +sdhci_writew (host, clk,SDHCI_CLOCK_CONTROL ); + +spin_unlock_irq (&host->lock); + ret =clk_set_rate (ourhost->clk_bus[ourhost->cur_clk], clock); +spin_lock_irq (&host->lock); +if (ret !=0 ) { +dev_err (dev,"%s: failed to set clock rate %uHz\n" , +mmc_hostname (host->mmc), clock); +return ; + } clk =SDHCI_CLOCK_INT_EN ;sdhci_writew (host, clk,SDHCI_CLOCK_CONTROL );
drivers/mtd/devices/spear_smi.c +37 -1
@@ -595,6 +595,26 @@ static int spear_mtd_read(struct mtd_info *mtd, loff_t from, size_t len,return 0 ; } +/* +* The purpose of this function is to ensure a memcpy_toio() with byte writes +* only. Its structure is inspired from the ARM implementation of _memcpy_toio() +* which also does single byte writes but cannot be used here as this is just an +* implementation detail and not part of the API. Not mentioning the comment +* stating that _memcpy_toio() should be optimized. +*/ +static void spear_smi_memcpy_toio_b (volatile void __iomem *dest, +const void *src,size_t len) +{ +const unsigned char *from = src; + +while (len) { + len--; +writeb (*from, dest); + from++; + dest++; + } +} +static inline int spear_smi_cpy_toio (struct spear_smi *dev,u32 bank,void __iomem *dest,const void *src,size_t len) {
@@ -617,7 +637,23 @@ static inline int spear_smi_cpy_toio(struct spear_smi *dev, u32 bank, ctrlreg1 =readl (dev->io_base +SMI_CR1 );writel ((ctrlreg1 |WB_MODE ) & ~SW_MODE , dev->io_base +SMI_CR1 ); -memcpy_toio (dest, src, len); +/* +* In Write Burst mode (WB_MODE), the specs states that writes must be: +* - incremental +* - of the same size +* The ARM implementation of memcpy_toio() will optimize the number of +* I/O by using as much 4-byte writes as possible, surrounded by +* 2-byte/1-byte access if: +* - the destination is not 4-byte aligned +* - the length is not a multiple of 4-byte. +* Avoid this alternance of write access size by using our own 'byte +* access' helper if at least one of the two conditions above is true. +*/ +if (IS_ALIGNED (len,sizeof (u32)) && +IS_ALIGNED ((uintptr_t )dest,sizeof (u32))) +memcpy_toio (dest, src, len); +else +spear_smi_memcpy_toio_b (dest, src, len);writel (ctrlreg1, dev->io_base +SMI_CR1 );
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +2 -1
@@ -1914,7 +1914,8 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb, }/* select a non-FCoE queue */ -return fallback (dev, skb) % (BNX2X_NUM_ETH_QUEUES (bp)); +return fallback (dev, skb) % + (BNX2X_NUM_ETH_QUEUES (bp) * bp->max_cos); }void bnx2x_set_num_queues (struct bnx2x *bp)
drivers/net/ethernet/stmicro/stmmac/common.h +1 -1
@@ -298,7 +298,7 @@ struct dma_features {struct stmmac_desc_ops {/* DMA RX descriptor ring initialization */ void (*init_rx_desc) (struct dma_desc *p,int disable_rx_ic,int mode, -int end); +int end,int bfsize);/* DMA TX descriptor ring initialization */ void (*init_tx_desc) (struct dma_desc *p,int mode,int end);
drivers/net/ethernet/stmicro/stmmac/descs_com.h +10 -4
@@ -33,9 +33,10 @@/* Specific functions used for Ring mode */ /* Enhanced descriptors */ -static inline void ehn_desc_rx_set_on_ring (struct dma_desc *p,int end) +static inline void ehn_desc_rx_set_on_ring (struct dma_desc *p,int end,int bfsize) { - p->des01.erx.buffer2_size = BUF_SIZE_8KiB; +if (bfsize == BUF_SIZE_16KiB) + p->des01.erx.buffer2_size = BUF_SIZE_8KiB;if (end) p->des01.erx.end_ring =1 ; }
@@ -61,9 +62,14 @@ static inline void enh_set_tx_desc_len_on_ring(struct dma_desc *p, int len) }/* Normal descriptors */ -static inline void ndesc_rx_set_on_ring (struct dma_desc *p,int end) +static inline void ndesc_rx_set_on_ring (struct dma_desc *p,int end,int bfsize) { - p->des01.rx.buffer2_size = BUF_SIZE_2KiB -1 ; +int size; + +if (bfsize >= BUF_SIZE_2KiB) { + size =min (bfsize - BUF_SIZE_2KiB +1 , BUF_SIZE_2KiB -1 ); + p->des01.rx.buffer2_size = size; + }if (end) p->des01.rx.end_ring =1 ; }
drivers/net/ethernet/stmicro/stmmac/enh_desc.c +7 -3
@@ -238,16 +238,20 @@ static int enh_desc_get_rx_status(void *data, struct stmmac_extra_stats *x, }static void enh_desc_init_rx_desc (struct dma_desc *p,int disable_rx_ic, -int mode,int end) +int mode,int end,int bfsize) { +int bfsize1; + p->des01.all_flags =0 ; p->des01.erx.own =1 ; - p->des01.erx.buffer1_size = BUF_SIZE_8KiB; + + bfsize1 =min (bfsize, BUF_SIZE_8KiB); + p->des01.erx.buffer1_size = bfsize1;if (mode ==STMMAC_CHAIN_MODE )ehn_desc_rx_set_on_chain (p, end);else -ehn_desc_rx_set_on_ring (p, end); +ehn_desc_rx_set_on_ring (p, end, bfsize);if (disable_rx_ic) p->des01.erx.disable_ic =1 ;
drivers/net/ethernet/stmicro/stmmac/norm_desc.c +7 -3
@@ -121,16 +121,20 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x, }static void ndesc_init_rx_desc (struct dma_desc *p,int disable_rx_ic,int mode, -int end) +int end,int bfsize) { +int bfsize1; + p->des01.all_flags =0 ; p->des01.rx.own =1 ; - p->des01.rx.buffer1_size = BUF_SIZE_2KiB -1 ; + + bfsize1 =min (bfsize, (BUF_SIZE_2KiB -1 )); + p->des01.rx.buffer1_size = bfsize1;if (mode ==STMMAC_CHAIN_MODE )ndesc_rx_set_on_chain (p, end);else -ndesc_rx_set_on_ring (p, end); +ndesc_rx_set_on_ring (p, end, bfsize);if (disable_rx_ic) p->des01.rx.disable_ic =1 ;
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +13 -7
@@ -933,11 +933,11 @@ static void stmmac_clear_descriptors(struct stmmac_priv *priv)if (priv->extend_desc) priv->hw->desc->init_rx_desc (&priv->dma_erx[i].basic, priv->use_riwt, priv->mode, - (i == rxsize -1 )); + (i == rxsize -1 ), priv->dma_buf_sz);else priv->hw->desc->init_rx_desc (&priv->dma_rx[i], priv->use_riwt, priv->mode, - (i == rxsize -1 )); + (i == rxsize -1 ), priv->dma_buf_sz);for (i =0 ; i < txsize; i++)if (priv->extend_desc) priv->hw->desc->init_tx_desc(&priv->dma_etx[i].basic,
@@ -2060,8 +2060,7 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)static int stmmac_rx (struct stmmac_priv *priv,int limit) {unsigned int rxsize = priv->dma_rx_size; -unsigned int entry = priv->cur_rx % rxsize; -unsigned int next_entry; +unsigned int next_entry = priv->cur_rx % rxsize;unsigned int count =0 ;int coe = priv->plat->rx_coe;
@@ -2073,9 +2072,11 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)stmmac_display_ring ((void *)priv->dma_rx, rxsize,0 ); }while (count < limit) { -int status; +int status, entry;struct dma_desc *p; + entry = next_entry; +if (priv->extend_desc) p = (struct dma_desc *)(priv->dma_erx + entry);else
@@ -2120,6 +2121,12 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit) frame_len = priv->hw->desc->get_rx_frame_len (p, coe); +/* check if frame_len fits the preallocated memory */ +if (frame_len > priv->dma_buf_sz) { + priv->dev->stats.rx_length_errors++; +continue ; + } +/* ACS is set; GMAC core strips PAD/FCS for IEEE 802.3 * Type frames (LLC/LLC-SNAP) */
@@ -2138,7 +2145,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)pr_err ("%s: Inconsistent Rx descriptor chain\n" , priv->dev->name); priv->dev->stats.rx_dropped++; -break ; +continue ; }prefetch (skb->data -NET_IP_ALIGN ); priv->rx_skbuff[entry] =NULL ;
@@ -2169,7 +2176,6 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit) priv->dev->stats.rx_packets++; priv->dev->stats.rx_bytes += frame_len; } - entry = next_entry; }stmmac_rx_refill (priv);
drivers/net/ethernet/ti/davinci_cpdma.c +6 -6
@@ -82,7 +82,7 @@ struct cpdma_desc {struct cpdma_desc_pool {phys_addr_t phys; -u32 hw_addr; +dma_addr_t hw_addr;void __iomem *iomap;/* ioremap map */ void *cpumap;/* dma_alloc map */ int desc_size, mem_size;
@@ -152,7 +152,7 @@ struct cpdma_chan {* abstract out these details */ static struct cpdma_desc_pool * -cpdma_desc_pool_create (struct device *dev,u32 phys,u32 hw_addr, +cpdma_desc_pool_create (struct device *dev,u32 phys,dma_addr_t hw_addr,int size,int align) {int bitmap_size;
@@ -176,13 +176,13 @@ cpdma_desc_pool_create(struct device *dev, u32 phys, u32 hw_addr,if (phys) { pool->phys = phys; - pool->iomap =ioremap (phys, size); + pool->iomap =ioremap (phys, size);/* should be memremap? */ pool->hw_addr = hw_addr; }else { - pool->cpumap =dma_alloc_coherent (dev, size, &pool->phys, + pool->cpumap =dma_alloc_coherent (dev, size, &pool->hw_addr,GFP_KERNEL ); - pool->iomap = pool->cpumap; - pool->hw_addr = pool->phys; + pool->iomap = (void __iomem __force *)pool->cpumap; + pool->phys = pool->hw_addr;/* assumes no IOMMU, don't use this value */ }if (pool->iomap)
drivers/net/macvlan.c +2 -1
@@ -262,10 +262,11 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port, }spin_unlock (&port->bc_queue.lock); +schedule_work (&port->bc_work); +if (err) goto free_nskb; -schedule_work (&port->bc_work);return ; free_nskb:
drivers/net/wireless/ath/ar5523/ar5523.c +2 -1
@@ -255,7 +255,8 @@ static int ar5523_cmd(struct ar5523 *ar, u32 code, const void *idata,if (flags &AR5523_CMD_FLAG_MAGIC ) hdr->magic =cpu_to_be32 (1 <<24 ); -memcpy (hdr +1 , idata, ilen); +if (ilen) +memcpy (hdr +1 , idata, ilen); cmd->odata = odata; cmd->olen = olen;
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +1 -1
@@ -4107,7 +4107,7 @@ static void ar9003_hw_thermometer_apply(struct ath_hw *ah)static void ar9003_hw_thermo_cal_apply (struct ath_hw *ah) { -u32 data, ko, kg; +u32 data =0 , ko, kg;if (!AR_SREV_9462_20_OR_LATER (ah))return ;
drivers/net/wireless/cw1200/fwio.c +3 -3
@@ -316,12 +316,12 @@ int cw1200_load_firmware(struct cw1200_common *priv) goto out; } - priv->hw_type =cw1200_get_hw_type (val32, &major_revision); -if (priv->hw_type <0 ) { + ret =cw1200_get_hw_type (val32, &major_revision); +if (ret <0 ) {pr_err ("Can't deduce hardware type.\n" ); - ret = -ENOTSUPP ; goto out; } + priv->hw_type = ret;/* Set DPLL Reg value, and read back to confirm writes work */ ret = cw1200_reg_write_32(priv, ST90TDS_TSET_GEN_R_W_REG_ID,
drivers/net/wireless/iwlwifi/dvm/led.c +3 -0
@@ -184,6 +184,9 @@ void iwl_leds_init(struct iwl_priv *priv) priv->led.name =kasprintf (GFP_KERNEL ,"%s-led" ,wiphy_name (priv->hw->wiphy)); +if (!priv->led.name) +return ; + priv->led.brightness_set = iwl_led_brightness_set; priv->led.blink_set = iwl_led_blink_set; priv->led.max_brightness =1 ;
drivers/net/wireless/iwlwifi/mvm/led.c +3 -0
@@ -109,6 +109,9 @@ int iwl_mvm_leds_init(struct iwl_mvm *mvm) mvm->led.name =kasprintf (GFP_KERNEL ,"%s-led" ,wiphy_name (mvm->hw->wiphy)); +if (!mvm->led.name) +return -ENOMEM ; + mvm->led.brightness_set = iwl_led_brightness_set; mvm->led.max_brightness =1 ;
drivers/pci/msi.c +2 -1
@@ -220,8 +220,9 @@ u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag)u32 mask_bits = desc->masked;unsigned offset = desc->msi_attrib.entry_nr *PCI_MSIX_ENTRY_SIZE +PCI_MSIX_ENTRY_VECTOR_CTRL ; + mask_bits &= ~PCI_MSIX_ENTRY_CTRL_MASKBIT ; -if (flag) +if (flag &PCI_MSIX_ENTRY_CTRL_MASKBIT ) mask_bits |=PCI_MSIX_ENTRY_CTRL_MASKBIT ;writel (mask_bits, desc->mask_base + offset);
drivers/pci/quirks.c +1 -1
@@ -3787,7 +3787,7 @@ int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags)#define INTEL_BSPR_REG_BPPD (1 << 9)/* Upstream Peer Decode Configuration Register */ -#define INTEL_UPDCR_REG 0x1114 +#define INTEL_UPDCR_REG 0x1014/* 5:0 Peer Decode Enable bits */ #define INTEL_UPDCR_REG_MASK 0x3f
drivers/pinctrl/pinctrl-s3c24xx.c +5 -1
@@ -497,8 +497,10 @@ static int s3c24xx_eint_init(struct samsung_pinctrl_drv_data *d)return -ENODEV ; eint_data =devm_kzalloc (dev,sizeof (*eint_data),GFP_KERNEL ); -if (!eint_data) +if (!eint_data) { +of_node_put (eint_np);return -ENOMEM ; + } eint_data->drvdata = d;
@@ -510,6 +512,7 @@ static int s3c24xx_eint_init(struct samsung_pinctrl_drv_data *d) irq =irq_of_parse_and_map (eint_np, i);if (!irq) {dev_err (dev,"failed to get wakeup EINT IRQ %d\n" , i); +of_node_put (eint_np);return -ENXIO ; }
@@ -517,6 +520,7 @@ static int s3c24xx_eint_init(struct samsung_pinctrl_drv_data *d)irq_set_chained_handler (irq, handlers[i]);irq_set_handler_data (irq, eint_data); } +of_node_put (eint_np); bank = d->ctrl->pin_banks;for (i =0 ; i < d->ctrl->nr_banks; ++i, ++bank) {
drivers/pinctrl/pinctrl-s3c64xx.c +3 -0
@@ -718,6 +718,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d) data =devm_kzalloc (dev,sizeof (*data),GFP_KERNEL );if (!data) {dev_err (dev,"could not allocate memory for wkup eint data\n" ); +of_node_put (eint0_np);return -ENOMEM ; } data->drvdata = d;
@@ -728,12 +729,14 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d) irq =irq_of_parse_and_map (eint0_np, i);if (!irq) {dev_err (dev,"failed to get wakeup EINT IRQ %d\n" , i); +of_node_put (eint0_np);return -ENXIO ; }irq_set_chained_handler (irq, s3c64xx_eint0_handlers[i]);irq_set_handler_data (irq, data); } +of_node_put (eint0_np); bank = d->ctrl->pin_banks;for (i =0 ; i < d->ctrl->nr_banks; ++i, ++bank) {
drivers/platform/x86/hp-wmi.c +5 -5
@@ -90,7 +90,7 @@ struct bios_args {u32 command;u32 commandtype;u32 datasize; -u32 data; +u8 data[128 ]; };struct bios_return {
@@ -199,7 +199,7 @@ static int hp_wmi_perform_query(int query, int write, void *buffer, .command = write ? 0x2 : 0x1, .commandtype = query, .datasize = insize, - .data = 0, + .data = { 0 }, };struct acpi_buffer input = {sizeof (struct bios_args ), &args };struct acpi_buffer output = {ACPI_ALLOCATE_BUFFER ,NULL };
@@ -207,7 +207,7 @@ static int hp_wmi_perform_query(int query, int write, void *buffer,if (WARN_ON (insize >sizeof (args.data)))return -EINVAL ; -memcpy (&args.data, buffer, insize); +memcpy (&args.data[0 ], buffer, insize);wmi_evaluate_method (HPWMI_BIOS_GUID ,0 ,0x3 , &input, &output);
@@ -400,7 +400,7 @@ static int hp_wmi_rfkill2_refresh(void)struct bios_rfkill2_state state; err =hp_wmi_perform_query (HPWMI_WIRELESS2_QUERY ,0 , &state, -0 ,sizeof (state)); +sizeof (state),sizeof (state));if (err)return err;
@@ -825,7 +825,7 @@ static int __init hp_wmi_rfkill2_setup(struct platform_device *device)int err, i;struct bios_rfkill2_state state; err =hp_wmi_perform_query (HPWMI_WIRELESS2_QUERY ,0 , &state, -0 ,sizeof (state)); +sizeof (state),sizeof (state));if (err)return err;
drivers/regulator/ab8500.c +0 -17
@@ -1099,23 +1099,6 @@ static struct ab8500_regulator_info .update_val_idle = 0x82, .update_val_normal = 0x02, }, - [AB8505_LDO_USB] = { - .desc = { - .name = "LDO-USB", - .ops = &ab8500_regulator_mode_ops, - .type = REGULATOR_VOLTAGE, - .id = AB8505_LDO_USB, - .owner = THIS_MODULE, - .n_voltages = 1, - .volt_table = fixed_3300000_voltage, - }, - .update_bank = 0x03, - .update_reg = 0x82, - .update_mask = 0x03, - .update_val = 0x01, - .update_val_idle = 0x03, - .update_val_normal = 0x01, - }, [AB8505_LDO_AUDIO] = { .desc = { .name = "LDO-AUDIO",
drivers/rtc/rtc-msm6242.c +2 -1
@@ -130,7 +130,8 @@ static int msm6242_read_time(struct device *dev, struct rtc_time *tm)msm6242_read (priv,MSM6242_SECOND1 ); tm->tm_min =msm6242_read (priv,MSM6242_MINUTE10 ) *10 +msm6242_read (priv,MSM6242_MINUTE1 ); - tm->tm_hour = (msm6242_read (priv,MSM6242_HOUR10 &3 )) *10 + + tm->tm_hour = (msm6242_read (priv,MSM6242_HOUR10 ) & +MSM6242_HOUR10_HR_MASK ) *10 +msm6242_read (priv,MSM6242_HOUR1 ); tm->tm_mday =msm6242_read (priv,MSM6242_DAY10 ) *10 +msm6242_read (priv,MSM6242_DAY1 );
drivers/s390/scsi/zfcp_dbf.c +3 -5
@@ -93,11 +93,9 @@ void zfcp_dbf_hba_fsf_res(char *tag, int level, struct zfcp_fsf_req *req)memcpy (rec->u.res.fsf_status_qual, &q_head->fsf_status_qual,FSF_STATUS_QUALIFIER_SIZE ); -if (req->fsf_command !=FSF_QTCB_FCP_CMND ) { - rec->pl_len = q_head->log_length; -zfcp_dbf_pl_write (dbf, (char *)q_pref + q_head->log_start, - rec->pl_len,"fsf_res" , req->req_id); - } + rec->pl_len = q_head->log_length; +zfcp_dbf_pl_write (dbf, (char *)q_pref + q_head->log_start, + rec->pl_len,"fsf_res" , req->req_id);debug_event (dbf->hba, level, rec,sizeof (*rec));spin_unlock_irqrestore (&dbf->hba_lock, flags);
drivers/scsi/bnx2i/bnx2i_iscsi.c +1 -1
@@ -913,12 +913,12 @@ void bnx2i_free_hba(struct bnx2i_hba *hba)INIT_LIST_HEAD (&hba->ep_ofld_list);INIT_LIST_HEAD (&hba->ep_active_list);INIT_LIST_HEAD (&hba->ep_destroy_list); -pci_dev_put (hba->pcidev);if (hba->regview) {pci_iounmap (hba->pcidev, hba->regview); hba->regview =NULL ; } +pci_dev_put (hba->pcidev);bnx2i_free_mp_bdt (hba);bnx2i_release_free_cid_que (hba);iscsi_host_free (shost);
drivers/scsi/csiostor/csio_lnode.c +9 -6
@@ -292,6 +292,7 @@ csio_ln_fdmi_rhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)struct fc_fdmi_port_name *port_name;uint8_t buf[64 ];uint8_t *fc4_type; +unsigned long flags;if (fdmi_req->wr_status !=FW_SUCCESS ) { csio_ln_dbg(ln, "WR error:%x in processing fdmi rhba cmd\n",
@@ -369,13 +370,13 @@ csio_ln_fdmi_rhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req) len = (uint32_t )(pld - (uint8_t *)cmd);/* Submit FDMI RPA request */ -spin_lock_irq (&hw->lock); +spin_lock_irqsave (&hw->lock, flags);if (csio_ln_mgmt_submit_req (fdmi_req, csio_ln_fdmi_done,FCOE_CT , &fdmi_req->dma_buf, len)) {CSIO_INC_STATS (ln, n_fdmi_err);csio_ln_dbg (ln,"Failed to issue fdmi rpa req\n" ); } -spin_unlock_irq (&hw->lock); +spin_unlock_irqrestore (&hw->lock, flags); }/*
@@ -396,6 +397,7 @@ csio_ln_fdmi_dprt_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)struct fc_fdmi_rpl *reg_pl;struct fs_fdmi_attrs *attrib_blk;uint8_t buf[64 ]; +unsigned long flags;if (fdmi_req->wr_status !=FW_SUCCESS ) { csio_ln_dbg(ln, "WR error:%x in processing fdmi dprt cmd\n",
@@ -476,13 +478,13 @@ csio_ln_fdmi_dprt_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req) attrib_blk->numattrs =htonl (numattrs);/* Submit FDMI RHBA request */ -spin_lock_irq (&hw->lock); +spin_lock_irqsave (&hw->lock, flags);if (csio_ln_mgmt_submit_req (fdmi_req, csio_ln_fdmi_rhba_cbfn,FCOE_CT , &fdmi_req->dma_buf, len)) {CSIO_INC_STATS (ln, n_fdmi_err);csio_ln_dbg (ln,"Failed to issue fdmi rhba req\n" ); } -spin_unlock_irq (&hw->lock); +spin_unlock_irqrestore (&hw->lock, flags); }/*
@@ -497,6 +499,7 @@ csio_ln_fdmi_dhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)void *cmd;struct fc_fdmi_port_name *port_name;uint32_t len; +unsigned long flags;if (fdmi_req->wr_status !=FW_SUCCESS ) { csio_ln_dbg(ln, "WR error:%x in processing fdmi dhba cmd\n",
@@ -527,13 +530,13 @@ csio_ln_fdmi_dhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req) len +=sizeof (*port_name);/* Submit FDMI request */ -spin_lock_irq (&hw->lock); +spin_lock_irqsave (&hw->lock, flags);if (csio_ln_mgmt_submit_req (fdmi_req, csio_ln_fdmi_dprt_cbfn,FCOE_CT , &fdmi_req->dma_buf, len)) {CSIO_INC_STATS (ln, n_fdmi_err);csio_ln_dbg (ln,"Failed to issue fdmi dprt req\n" ); } -spin_unlock_irq (&hw->lock); +spin_unlock_irqrestore (&hw->lock, flags); }/**
drivers/scsi/esas2r/esas2r_flash.c +1 -0
@@ -1197,6 +1197,7 @@ bool esas2r_nvram_read_direct(struct esas2r_adapter *a)if (!esas2r_read_flash_block (a, a->nvram,FLS_OFFSET_NVR ,sizeof (struct esas2r_sas_nvram ))) {esas2r_hdebug ("NVRAM read failed, using defaults" ); +up (&a->nvram_semaphore);return false; }
drivers/scsi/lpfc/lpfc_els.c +1 -1
@@ -3861,7 +3861,7 @@ lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,mempool_free (mbox, phba->mbox_mem_pool); } out: -if (ndlp &&NLP_CHK_NODE_ACT (ndlp)) { +if (ndlp &&NLP_CHK_NODE_ACT (ndlp) && shost) {spin_lock_irq (shost->host_lock); ndlp->nlp_flag &= ~(NLP_ACC_REGLOGIN |NLP_RM_DFLT_RPI );spin_unlock_irq (shost->host_lock);
drivers/scsi/qla4xxx/ql4_mbx.c +0 -3
@@ -641,9 +641,6 @@ int qla4xxx_initialize_fw_cb(struct scsi_qla_host * ha)if (qla4xxx_get_ifcb (ha, &mbox_cmd[0 ], &mbox_sts[0 ], init_fw_cb_dma) !=QLA_SUCCESS ) { -dma_free_coherent (&ha->pdev->dev, -sizeof (struct addr_ctrl_blk ), - init_fw_cb, init_fw_cb_dma); goto exit_init_fw_cb; }
drivers/scsi/scsi_trace.c +41 -84
195 lines not on this page · raw message
drivers/spi/spi-atmel.c +3 -7
@@ -242,7 +242,6 @@ struct atmel_spi {struct atmel_spi_dma dma;bool keep_cs; -bool cs_active; };/* Controller-specific per-slave state */
@@ -1190,11 +1189,9 @@ static int atmel_spi_one_transfer(struct spi_master *master, &msg->transfers)) { as->keep_cs = true; }else { - as->cs_active = !as->cs_active; -if (as->cs_active) -cs_activate (as, msg->spi); -else -cs_deactivate (as, msg->spi); +cs_deactivate (as, msg->spi); +udelay (10 ); +cs_activate (as, msg->spi); } }
@@ -1217,7 +1214,6 @@ static int atmel_spi_transfer_one_message(struct spi_master *master,atmel_spi_lock (as);cs_activate (as, spi); - as->cs_active = true; as->keep_cs = false; msg->status =0 ;
drivers/staging/android/binder.c +3 -3
@@ -624,8 +624,7 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,return 0 ; free_range: -for (page_addr = end -PAGE_SIZE ; page_addr >= start; - page_addr -=PAGE_SIZE ) { +for (page_addr = end -PAGE_SIZE ;1 ; page_addr -=PAGE_SIZE ) { page = &proc->pages[(page_addr - proc->buffer) /PAGE_SIZE ];if (vma) zap_page_range(vma, (uintptr_t)page_addr +
@@ -636,7 +635,8 @@ static int binder_update_page_range(struct binder_proc *proc, int allocate,__free_page (*page); *page =NULL ; err_alloc_page_failed: - ; +if (page_addr == start) +break ; } err_no_vma:if (mm) {
drivers/staging/line6/pcm.c +23 -38
111 lines not on this page · raw message
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +3 -2
@@ -1884,8 +1884,6 @@ void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,memcpy ((unsigned char *)(skb->cb), &dev,sizeof (dev));skb_push (skb, priv->rtllib->tx_headroom); ret =rtl8192_tx (dev, skb); -if (ret !=0 ) -kfree_skb (skb);if (queue_index !=MGNT_QUEUE ) { priv->rtllib->stats.tx_bytes += (skb->len -
@@ -1893,6 +1891,9 @@ void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, priv->rtllib->stats.tx_packets++; } +if (ret !=0 ) +kfree_skb (skb); +return ; }
drivers/tty/serial/ifx6x60.c +3 -0
@@ -1242,6 +1242,9 @@ static int ifx_spi_spi_remove(struct spi_device *spi)struct ifx_spi_device *ifx_dev =spi_get_drvdata (spi);/* stop activity */ tasklet_kill (&ifx_dev->io_work_tasklet); + +pm_runtime_disable (&spi->dev); +/* free irq */ free_irq (gpio_to_irq (ifx_dev->gpio.reset_out), (void *)ifx_dev);free_irq (gpio_to_irq (ifx_dev->gpio.srdy), (void *)ifx_dev);
drivers/tty/serial/imx.c +1 -1
@@ -541,7 +541,7 @@ static void imx_dma_tx(struct imx_port *sport)dev_err (dev,"DMA mapping error for TX.\n" );return ; } - desc =dmaengine_prep_slave_sg (chan, sgl, sport->dma_tx_nents, + desc =dmaengine_prep_slave_sg (chan, sgl, ret,DMA_MEM_TO_DEV ,DMA_PREP_INTERRUPT );if (!desc) {dev_err (dev,"We cannot prepare for the TX slave dma!\n" );
drivers/tty/serial/msm_serial.c +5 -1
@@ -316,6 +316,7 @@ static unsigned int msm_get_mctrl(struct uart_port *port)static void msm_reset (struct uart_port *port) {struct msm_port *msm_port =UART_TO_MSM (port); +unsigned int mr;/* reset everything */ msm_write (port,UART_CR_CMD_RESET_RX ,UART_CR );
@@ -323,7 +324,10 @@ static void msm_reset(struct uart_port *port)msm_write (port,UART_CR_CMD_RESET_ERR ,UART_CR );msm_write (port,UART_CR_CMD_RESET_BREAK_INT ,UART_CR );msm_write (port,UART_CR_CMD_RESET_CTS ,UART_CR ); -msm_write (port,UART_CR_CMD_SET_RFR ,UART_CR ); +msm_write (port,UART_CR_CMD_RESET_RFR ,UART_CR ); + mr =msm_read (port,UART_MR1 ); + mr &= ~UART_MR1_RX_RDY_CTL ; +msm_write (port, mr,UART_MR1 );/* Disable DM modes */ if (msm_port->is_uartdm)
drivers/tty/serial/pch_uart.c +4 -1
@@ -251,6 +251,7 @@ struct eg20t_port {struct dma_chan *chan_rx;struct scatterlist *sg_tx_p;int nent; +int orig_nent;struct scatterlist sg_rx;int tx_dma_use;void *rx_buf_virt;
@@ -803,9 +804,10 @@ static void pch_dma_tx_complete(void *arg) } xmit->tail &=UART_XMIT_SIZE -1 ;async_tx_ack (priv->desc_tx); -dma_unmap_sg (port->dev, sg, priv->nent,DMA_TO_DEVICE ); +dma_unmap_sg (port->dev, sg, priv->orig_nent,DMA_TO_DEVICE ); priv->tx_dma_use =0 ; priv->nent =0 ; + priv->orig_nent =0 ;kfree (priv->sg_tx_p);pch_uart_hal_enable_interrupt (priv,PCH_UART_HAL_TX_INT ); }
@@ -1030,6 +1032,7 @@ static unsigned int dma_handle_tx(struct eg20t_port *priv)dev_err (priv->port.dev,"%s:dma_map_sg Failed\n" , __func__);return 0 ; } + priv->orig_nent = num; priv->nent = nent;for (i =0 ; i < nent; i++, sg++) {
drivers/tty/serial/serial_core.c +1 -1
@@ -1013,7 +1013,7 @@ static int uart_break_ctl(struct tty_struct *tty, int break_state)mutex_lock (&port->mutex); -if (uport->type !=PORT_UNKNOWN ) +if (uport->type !=PORT_UNKNOWN && uport->ops->break_ctl) uport->ops->break_ctl (uport, break_state);mutex_unlock (&port->mutex);
drivers/tty/vt/keyboard.c +1 -1
@@ -1358,7 +1358,7 @@ static void kbd_event(struct input_handle *handle, unsigned int event_type,if (event_type ==EV_MSC && event_code ==MSC_RAW &&HW_RAW (handle->dev))kbd_rawcode (value); -if (event_type ==EV_KEY ) +if (event_type ==EV_KEY && event_code <=KEY_MAX )kbd_keycode (event_code, value,HW_RAW (handle->dev));spin_unlock (&kbd_event_lock);
drivers/usb/core/hub.c +2 -3
@@ -5535,7 +5535,7 @@ static int usb_reset_and_verify_device(struct usb_device *udev)/** * usb_reset_device - warn interface drivers and perform a USB port reset -* @udev: device to reset (not in SUSPENDED or NOTATTACHED state) +* @udev: device to reset (not in NOTATTACHED state) * * Warns all drivers bound to registered interfaces (using their pre_reset * method), performs the port reset, and then lets the drivers know that
@@ -5563,8 +5563,7 @@ int usb_reset_device(struct usb_device *udev)struct usb_host_config *config = udev->actconfig;struct usb_hub *hub =usb_hub_to_struct_hub (udev->parent); -if (udev->state ==USB_STATE_NOTATTACHED || - udev->state ==USB_STATE_SUSPENDED ) { +if (udev->state ==USB_STATE_NOTATTACHED ) {dev_dbg (&udev->dev,"device reset not allowed in state %d\n" , udev->state);return -EINVAL ;
drivers/usb/gadget/pch_udc.c +0 -1
@@ -1533,7 +1533,6 @@ static void pch_udc_free_dma_chain(struct pch_udc_dev *dev, td =phys_to_virt (addr); addr2 = (dma_addr_t )td->next;pci_pool_free (dev->data_requests, td, addr); - td->next =0x00 ; addr = addr2; } req->chain_len =1 ;
drivers/usb/gadget/u_serial.c +2 -0
@@ -1140,8 +1140,10 @@ int gserial_alloc_line(unsigned char *line_num) __func__, port_num, PTR_ERR(tty_dev)); ret =PTR_ERR (tty_dev); +mutex_lock (&ports[port_num].lock); port = ports[port_num].port; ports[port_num].port =NULL ; +mutex_unlock (&ports[port_num].lock);gserial_free_port (port); goto err; }
drivers/usb/misc/appledisplay.c +7 -1
@@ -180,7 +180,12 @@ static int appledisplay_bl_get_brightness(struct backlight_device *bd)0 , pdata->msgdata,2 , ACD_USB_TIMEOUT); - brightness = pdata->msgdata[1 ]; +if (retval <2 ) { +if (retval >=0 ) + retval = -EMSGSIZE ; + }else { + brightness = pdata->msgdata[1 ]; + }mutex_unlock (&pdata->sysfslock);if (retval <0 )
@@ -326,6 +331,7 @@ static int appledisplay_probe(struct usb_interface *iface,if (pdata) {if (pdata->urb) {usb_kill_urb (pdata->urb); +cancel_delayed_work_sync (&pdata->work);if (pdata->urbdata)usb_free_coherent (pdata->udev,ACD_URB_BUFFER_LEN , pdata->urbdata, pdata->urb->transfer_dma);
drivers/usb/serial/cp210x.c +1 -0
@@ -121,6 +121,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ { USB_DEVICE(0x10C4, 0x8382) }, /* Cygnal Integrated Products, Inc. */ { USB_DEVICE(0x10C4, 0x83A8) }, /* Amber Wireless AMB2560 */ + { USB_DEVICE(0x10C4, 0x83AA) }, /* Mark-10 Digital Force Gauge */ { USB_DEVICE(0x10C4, 0x83D8) }, /* DekTec DTA Plus VHF/UHF Booster/Attenuator */ { USB_DEVICE(0x10C4, 0x8411) }, /* Kyocera GPS Module */ { USB_DEVICE(0x10C4, 0x8418) }, /* IRZ Automation Teleport SG-10 GSM/GPRS Modem */
drivers/usb/serial/ftdi_sio.c +3 -0
@@ -1041,6 +1041,9 @@ static const struct usb_device_id id_table_combined[] = {/* Sienna devices */ { USB_DEVICE(FTDI_VID, FTDI_SIENNA_PID) }, { USB_DEVICE(ECHELON_VID, ECHELON_U20_PID) }, +/* U-Blox devices */ + { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) }, + { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) }, { } /* Terminating entry */ };
drivers/usb/serial/ftdi_sio_ids.h +7 -0
@@ -1557,3 +1557,10 @@*/ #define UNJO_VID 0x22B7#define UNJO_ISODEBUG_V1_PID 0x150D + +/* +* U-Blox products (http://www.u-blox.com). +*/ +#define UBLOX_VID 0x1546 +#define UBLOX_C099F9P_ZED_PID 0x0502 +#define UBLOX_C099F9P_ODIN_PID 0x0503
drivers/usb/serial/mos7720.c +0 -4
@@ -1917,10 +1917,6 @@ static int mos7720_startup(struct usb_serial *serial) } } -/* setting configuration feature to one */ -usb_control_msg (serial->dev,usb_sndctrlpipe (serial->dev,0 ), - (__u8 )0x03 ,0x00 ,0x01 ,0x00 ,NULL ,0x00 ,5000 ); -#ifdef CONFIG_USB_SERIAL_MOS7715_PARPORT if (product ==MOSCHIP_DEVICE_ID_7715 ) { ret_val =mos7715_parport_init (serial);
drivers/usb/serial/mos7840.c +11 -5
@@ -131,11 +131,15 @@/* This driver also supports * ATEN UC2324 device using Moschip MCS7840 * ATEN UC2322 device using Moschip MCS7820 +* MOXA UPort 2210 device using Moschip MCS7820 */ #define USB_VENDOR_ID_ATENINTL 0x0557#define ATENINTL_DEVICE_ID_UC2324 0x2011#define ATENINTL_DEVICE_ID_UC2322 0x7820 +#define USB_VENDOR_ID_MOXA 0x110a +#define MOXA_DEVICE_ID_2210 0x2210 +/* Interrupt Routine Defines */ #define SERIAL_IIR_RLS 0x06
@@ -206,6 +210,7 @@ static const struct usb_device_id id_table[] = { {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)}, {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)}, {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)}, + {USB_DEVICE(USB_VENDOR_ID_MOXA, MOXA_DEVICE_ID_2210)}, {} /* terminating entry */ };MODULE_DEVICE_TABLE (usb, id_table);
@@ -2139,6 +2144,7 @@ static int mos7840_probe(struct usb_serial *serial, const struct usb_device_id *id) {u16 product =le16_to_cpu (serial->dev->descriptor.idProduct); +u16 vid =le16_to_cpu (serial->dev->descriptor.idVendor);u8 *buf;int device_type;
@@ -2148,6 +2154,11 @@ static int mos7840_probe(struct usb_serial *serial, goto out; } +if (vid ==USB_VENDOR_ID_MOXA && product ==MOXA_DEVICE_ID_2210 ) { + device_type =MOSCHIP_DEVICE_ID_7820 ; + goto out; + } + buf =kzalloc (VENDOR_READ_LENGTH ,GFP_KERNEL );if (!buf)return -ENOMEM ;
@@ -2403,11 +2414,6 @@ static int mos7840_port_probe(struct usb_serial_port *port) goto error; }else dev_dbg (&port->dev,"ZLP_REG5 Writing success status%d\n" , status); - -/* setting configuration feature to one */ -usb_control_msg (serial->dev,usb_sndctrlpipe (serial->dev,0 ), -0x03 ,0x00 ,0x01 ,0x00 ,NULL ,0x00 , -MOS_WDR_TIMEOUT ); }return 0 ; error:
drivers/usb/storage/uas.c +10 -0
@@ -991,6 +991,10 @@ static int uas_slave_configure(struct scsi_device *sdev)if (devinfo->flags &US_FL_BROKEN_FUA ) sdev->broken_fua =1 ; +/* Some disks cannot handle READ_CAPACITY_16 */ +if (devinfo->flags &US_FL_NO_READ_CAPACITY_16 ) + sdev->no_read_capacity_16 =1 ; +/* * Some disks return the total number of blocks in response * to READ CAPACITY rather than the highest block number.
@@ -999,6 +1003,12 @@ static int uas_slave_configure(struct scsi_device *sdev)if (devinfo->flags &US_FL_FIX_CAPACITY ) sdev->fix_capacity =1 ; +/* +* in some cases we have to guess +*/ +if (devinfo->flags &US_FL_CAPACITY_HEURISTICS ) + sdev->guess_capacity =1 ; +/* * Some devices don't like MODE SENSE with page=0x3f, * which is the command used for checking if a device
fs/btrfs/file.c +1 -1
@@ -1540,6 +1540,7 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file,break ; } + only_release_metadata = false; reserve_bytes = num_pages <<PAGE_CACHE_SHIFT ; ret =btrfs_check_data_free_space (inode, reserve_bytes);
Lines of this file are not shown. View the raw message.
kernel/futex.c +44 -5
49 lines not on this page · raw message
tools/perf/util/dwarf-aux.c +80 -8
88 lines not on this page · raw message
tools/perf/util/probe-finder.c +44 -26
70 lines not on this page · raw message
tools/power/cpupower/utils/idle_monitor/hsw_ext_idle.c +0 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.