Merge 4.9.237 into android-4.9-q
Linux 4.9.237
x86/defconfig: Enable CONFIG_USB_XHCI_HCD=y
powerpc/dma: Fix dma_map_ops::get_required_mask
ehci-hcd: Move include to keep CRC stable
serial: 8250_pci: Add Realtek 816a and 816b
Input: i8042 - add Entroware Proteus EL07R4 to nomux and reset lists
usblp: fix race between disconnect() and read()
USB: UAS: fix disconnect by unplugging a hub
* USB: quirks: Add USB_QUIRK_IGNORE_REMOTE_WAKEUP quirk for BYD zhaoxin notebook
drivers/usb/core/quirks.c
drm/mediatek: Add exception handing in mtk_drm_probe() if component init fail
MIPS: SNI: Fix spurious interrupts
fbcon: Fix user font detection test at fbcon_resize().
perf test: Free formats for perf pmu parse test
MIPS: SNI: Fix MIPS_L1_CACHE_SHIFT
Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload
clk: rockchip: Fix initialization of mux_pll_src_4plls_p
i2c: algo: pca: Reapply i2c bus settings after reset
rapidio: Replace 'select' DMAENGINES 'with depends on'
SUNRPC: stop printk reading past end of string
spi: spi-loopback-test: Fix out-of-bounds read
scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery
scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort
NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall
* net: handle the return value of pskb_carve_frag_list() correctly
net/core/skbuff.c
* gcov: add support for GCC 10.1
kernel/gcov/Kconfig
RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars
IB/rxe: Remove a pointless indirection layer
* usb: Fix out of sync data toggle if a configured device is reconfigured
drivers/usb/core/message.c
USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules
USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter
* usb: core: fix slab-out-of-bounds Read in read_descriptors
drivers/usb/core/sysfs.c
staging: greybus: audio: fix uninitialized value issue
video: fbdev: fix OOB read in vga_8planes_imageblit()
KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit
* vgacon: remove software scrollback support
drivers/video/console/Kconfig
fbcon: remove now unusued 'softback_lines' cursor() argument
fbcon: remove soft scrollback code
rbd: require global CAP_SYS_ADMIN for mapping and unmapping
scsi: target: iscsi: Fix hang in iscsit_access_np() when getting tpg->np_login_sem
scsi: target: iscsi: Fix data digest calculation
* regulator: push allocation in set_consumer_device_supply() out of lock
drivers/regulator/core.c
btrfs: fix wrong address when faulting in pages in the search ioctl
staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb()
* USB: core: add helpers to retrieve endpoints
drivers/usb/core/usb.c
include/linux/usb.h
iio:accel:mma8452: Fix timestamp alignment and prevent data leak.
iio:accel:mma7455: Fix timestamp alignment and prevent data leak.
iio: accel: kxsd9: Fix alignment of local buffer.
iio:light:max44000 Fix timestamp alignment and prevent data leak.
iio:magnetometer:ak8975 Fix alignment and data leak issues.
drivers: iio: magnetometer: Fix sparse endianness warnings cast to restricted __be16
iio:adc:ti-adc081c Fix alignment and data leak issues
iio:adc:ina2xx Fix timestamp alignment issue.
iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak.
iio:light:ltr501 Fix timestamp alignment issue.
iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set
iio: adc: mcp3422: fix locking on error path
iio: adc: mcp3422: fix locking scope
* gcov: Disable gcov build with GCC 10
kernel/gcov/Kconfig
ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled
drivers/net/wan/hdlc_cisco: Add hard_header_len
irqchip/eznps: Fix build error for !ARC700 builds
xfs: initialize the shortform attr header padding entry
drivers/net/wan/lapbether: Set network_header before transmitting
ALSA: hda: Fix 2 channel swapping for Tegra
firestream: Fix memleak in fs_open
NFC: st95hf: Fix memleak in st95hf_in_send_cmd
drivers/net/wan/lapbether: Added needed_tailroom
scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA
RDMA/rxe: Drop pointless checks in rxe_init_ports
RDMA/rxe: Fix memleak in rxe_mem_init_user
ARM: dts: socfpga: fix register entry for timer3 on Arria10
Merge 4.9.236 into android-4.9-q
Linux 4.9.236
* net: disable netpoll on fresh napis
net/core/dev.c
sctp: not disable bh in the whole sctp_get_port_local()
net: usb: dm9601: Add USB ID of Keenetic Plus DSL
* netlabel: fix problems with mapping removal
net/netlabel/netlabel_domainhash.c
bnxt: don't enable NAPI until rings are ready
net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init()
affs: fix basic permission bits to actually work
fs/affs: use octal for permissions
ALSA; firewire-tascam: exclude Tascam FE-8 from detection
* net: usb: Fix uninit-was-stored issue in asix_read_phy_addr()
drivers/net/usb/asix_common.c
* cfg80211: regulatory: reject invalid hints
net/wireless/reg.c
mm/hugetlb: fix a race between hugetlb sysctl handlers
checkpatch: fix the usage of capture group ( ... )
vfio/pci: Fix SR-IOV VF handling with MMIO blocking
* net: initialize fastreuse on inet_inherit_port
net/ipv4/inet_hashtables.c
* net: refactor bind_bucket fastreuse into helper
include/net/inet_connection_sock.h
net/ipv4/inet_connection_sock.c
* KVM: arm64: Set HCR_EL2.PTW to prevent AT taking synchronous exception
arch/arm64/include/asm/kvm_arm.h
* KVM: arm64: Survive synchronous exceptions caused by AT instructions
arch/arm64/include/asm/kvm_asm.h
KVM: arm64: Defer guest entry when an asynchronous exception is pending
* KVM: arm64: Add kvm_extable for vaxorcism code
arch/arm64/include/asm/kvm_asm.h
arch/arm64/kernel/vmlinux.lds.S
vfio-pci: Invalidate mmaps and block MMIO access on disabled memory
vfio-pci: Fault mmaps to enable vma tracking
vfio/type1: Support faulting PFNMAP vmas
* mm: slub: fix conversion of freelist_corrupted()
mm/slub.c
dm thin metadata: Avoid returning cmd->bm wild pointer on error
dm cache metadata: Avoid returning cmd->bm wild pointer on error
libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks
* block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
drivers/block/brd.c
drivers/block/zram/zram_drv.h
include/linux/blkdev.h
include/linux/device-mapper.h
include/uapi/linux/msdos_fs.h
* block: allow for_each_bvec to support zero len bvec
include/linux/bvec.h
ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check
ALSA: ca0106: fix error code handling
usb: qmi_wwan: add D-Link DWM-222 A2 device ID
qmi_wwan: new Telewell and Sierra device IDs
drivers: net: usb: qmi_wwan: add QMI_QUIRK_SET_DTR for Telit PID 0x1201
net: usb: qmi_wwan: add Telit 0x1050 composition
btrfs: fix potential deadlock in the search ioctl
* uaccess: Add non-pagefault user-space write function
include/linux/uaccess.h
mm/maccess.c
* uaccess: Add non-pagefault user-space read functions
include/linux/uaccess.h
mm/maccess.c
btrfs: set the lockdep class for log tree extent buffers
btrfs: Remove extraneous extent_buffer_get from tree_mod_log_rewind
btrfs: Remove redundant extent_buffer_get in get_old_root
btrfs: drop path before adding new uuid tree entry
* include/linux/log2.h: add missing () around n in roundup_pow_of_two()
include/linux/log2.h
thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430
iommu/vt-d: Serialize IOMMU GCMD register modifications
tg3: Fix soft lockup when tg3_reset_task() fails.
* fix regression in "epoll: Keep a reference on files added to the check list"
fs/eventpoll.c
bnxt_en: Fix PCI AER error recovery flow
bnxt_en: Check for zero dir entries in NVRAM.
dmaengine: pl330: Fix burst length if burst size is smaller than bus width
net: arc_emac: Fix memleak in arc_mdio_probe
ravb: Fixed to be able to unload modules
net: hns: Fix memleak in hns_nic_dev_probe
netfilter: nf_tables: fix destination register zeroing
netfilter: nf_tables: incorrect enum nft_list_attributes definition
netfilter: nf_tables: add NFTA_SET_USERDATA if not null
MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores
MIPS: mm: BMIPS5000 has inclusive physical caches
dmaengine: at_hdmac: check return value of of_find_device_by_node() in at_dma_xlate()
batman-adv: bla: use netif_rx_ni when not in interrupt context
batman-adv: Avoid uninitialized chaddr when handling DHCP
* dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling
drivers/dma/of-dma.c
xen/xenbus: Fix granting of vmalloc'd memory
s390: don't trace preemption in percpu macros
ceph: don't allow setlease on cephfs
nvmet: Disable keep-alive timer when kato is cleared to 0h
hwmon: (applesmc) check status earlier.
perf record/stat: Explicitly call out event modifiers in the documentation
* HID: core: Sanitize event code and type when mapping input
drivers/hid/hid-input.c
drivers/hid/hid-multitouch.c
include/linux/hid.h
* HID: core: Correctly handle ReportSize being zero
drivers/hid/hid-core.c
* ANDROID: overflow.h: fix merge issue with 4.9.235
include/linux/overflow.h
Merge 4.9.235 into android-4.9-q
Linux 4.9.235
* ALSA: usb-audio: Update documentation comment for MS2109 quirk
sound/usb/quirks-table.h
* HID: hiddev: Fix slab-out-of-bounds write in hiddev_ioctl_usage()
drivers/hid/usbhid/hiddev.c
btrfs: check the right error variable in btrfs_del_dir_entries_in_log
usb: storage: Add unusual_uas entry for Sony PSZ drives
* USB: gadget: u_f: Unbreak offset calculation in VLAs
drivers/usb/gadget/u_f.h
USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb()
* USB: gadget: u_f: add overflow checks to VLA macros
drivers/usb/gadget/u_f.h
* overflow.h: Add allocation size calculation helpers
drivers/md/dm-table.c
include/linux/overflow.h
usb: host: ohci-exynos: Fix error handling in exynos_ohci_probe()
* USB: Ignore UAS for JMicron JMS567 ATA/ATAPI Bridge
drivers/usb/storage/unusual_devs.h
* USB: quirks: Add no-lpm quirk for another Raydium touchscreen
drivers/usb/core/quirks.c
usb: uas: Add quirk for PNY Pro Elite
USB: yurex: Fix bad gfp argument
* device property: Fix the secondary firmware node handling in set_primary_fwnode()
drivers/base/core.c
* PM: sleep: core: Fix the handling of pending runtime resume requests
drivers/base/power/main.c
* xhci: Do warm-reset when both CAS and XDEV_RESUME are set
drivers/usb/host/xhci-hub.c
XEN uses irqdesc::irq_data_common::handler_data to store a per interrupt XEN data pointer which contains XEN specific information.
* writeback: Fix sync livelock due to b_dirty_time processing
fs/fs-writeback.c
include/trace/events/writeback.h
* writeback: Avoid skipping inode writeback
fs/fs-writeback.c
include/linux/fs.h
* writeback: Protect inode->i_io_list with inode->i_lock
fs/fs-writeback.c
serial: 8250: change lock order in serial8250_do_startup()
serial: pl011: Don't leak amba_ports entry on driver register error
serial: pl011: Fix oops on -EPROBE_DEFER
serial: samsung: Removes the IRQ not found warning
* vt_ioctl: change VT_RESIZEX ioctl to check for error return from vc_resize()
drivers/tty/vt/vt_ioctl.c
* vt: defer kfree() of vc_screenbuf in vc_do_resize()
drivers/tty/vt/vt.c
* USB: lvtest: return proper error code in probe
drivers/usb/misc/lvstest.c
fbcon: prevent user font height or width change from causing potential out-of-bounds access
btrfs: fix space cache memory leak after transaction abort
HID: i2c-hid: Always sleep 60ms after I2C_HID_PWR_ON commands
powerpc/perf: Fix soft lockups due to missed interrupt accounting
net: gianfar: Add of_node_put() before goto statement
* scsi: ufs: Improve interrupt handling for shared interrupts
drivers/scsi/ufs/ufshcd.c
* scsi: ufs: Fix possible infinite loop in ufshcd_hold
drivers/scsi/ufs/ufshcd.c
s390/cio: add cond_resched() in the slow_eval_known_fn() loop
* fs: prevent BUG_ON in submit_bh_wbc()
fs/buffer.c
fs/ext4/super.c
* jbd2: abort journal if free a async write error metadata buffer
fs/jbd2/transaction.c
* jbd2: make sure jh have b_transaction set in refile/unfile_buffer
fs/jbd2/transaction.c
usb: gadget: f_tcm: Fix some resource leaks in some error paths
i2c: rcar: in slave mode, clear NACK earlier
Revert "ath10k: fix DMA related firmware crashes on multiple devices"
* efi: provide empty efi_enter_virtual_mode implementation
include/linux/efi.h
USB: sisusbvga: Fix a potential UB casued by left shifting a negative value
powerpc/spufs: add CONFIG_COREDUMP dependency
KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe
media: davinci: vpif_capture: fix potential double free
EDAC/ie31200: Fallback if host bridge device is already initialized
scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del()
ceph: fix potential mdsc use-after-free crash
scsi: iscsi: Do not put host in iscsi_set_flashnode_param()
locking/lockdep: Fix overflow in presentation of average lock-time
drm/nouveau: Fix reference count leak in nouveau_connector_detect
drm/nouveau/drm/noveau: fix reference count leak in nouveau_fbcon_open
cec-api: prevent leaking memory through hole in structure
mips/vdso: Fix resource leaks in genvdso.c
rtlwifi: rtl8192cu: Prevent leaking urb
* PCI: Fix pci_create_slot() reference count leak
drivers/pci/slot.c
omapfb: fix multiple reference count leaks due to pm_runtime_get_sync
selftests/powerpc: Purge extra count_pmc() calls of ebb selftests
scsi: lpfc: Fix shost refcount mismatch when deleting vport
drm/amdgpu/display: fix ref count leak when pm_runtime_get_sync fails
drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config
drm/amd/display: fix ref count leak in amdgpu_drm_ioctl
drm/amdgpu: fix ref count leak in amdgpu_driver_open_kms
drm/radeon: fix multiple reference count leak
drm/amdkfd: Fix reference count leaks.
* iommu/iova: Don't BUG on invalid PFNs
drivers/iommu/iova.c
scsi: target: tcmu: Fix crash on ARM during cmd completion
media: pci: ttpci: av7110: fix possible buffer overflow caused by bad DMA value in debiirq()
arm64: dts: qcom: msm8916: Pull down PDM GPIOs during sleep
ASoC: tegra: Fix reference count leaks.
ALSA: pci: delete repeated words in comments
* gre6: Fix reception with IP6_TNL_F_RCV_DSCP_COPY
net/ipv6/ip6_tunnel.c
ipvlan: fix device features
tipc: fix uninit skb->data in tipc_nl_compat_dumpit()
* net: Fix potential wrong skb->protocol in skb_vlan_untag()
net/core/skbuff.c
* bonding: show saner speed for broadcast mode
drivers/net/bonding/bond_main.c
* bonding: fix a potential double-unregister
drivers/net/bonding/bond_main.c
Change-Id: Ic5e975d213782585fedbf8a5869b9b0aaad0bf66
Signed-off-by: lucaswei <lucaswei@google.com>
108 lines
3.0 KiB
C
108 lines
3.0 KiB
C
/*
|
|
* bvec iterator
|
|
*
|
|
* Copyright (C) 2001 Ming Lei <ming.lei@canonical.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
*
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public Licens
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-
|
|
*/
|
|
#ifndef __LINUX_BVEC_ITER_H
|
|
#define __LINUX_BVEC_ITER_H
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/bug.h>
|
|
|
|
/*
|
|
* was unsigned short, but we might as well be ready for > 64kB I/O pages
|
|
*/
|
|
struct bio_vec {
|
|
struct page *bv_page;
|
|
unsigned int bv_len;
|
|
unsigned int bv_offset;
|
|
};
|
|
|
|
struct bvec_iter {
|
|
sector_t bi_sector; /* device address in 512 byte
|
|
sectors */
|
|
unsigned int bi_size; /* residual I/O count */
|
|
|
|
unsigned int bi_idx; /* current index into bvl_vec */
|
|
|
|
unsigned int bi_bvec_done; /* number of bytes completed in
|
|
current bvec */
|
|
#ifdef CONFIG_PFK
|
|
u64 bi_dun; /* DUN setting for bio */
|
|
#endif
|
|
};
|
|
|
|
/*
|
|
* various member access, note that bio_data should of course not be used
|
|
* on highmem page vectors
|
|
*/
|
|
#define __bvec_iter_bvec(bvec, iter) (&(bvec)[(iter).bi_idx])
|
|
|
|
#define bvec_iter_page(bvec, iter) \
|
|
(__bvec_iter_bvec((bvec), (iter))->bv_page)
|
|
|
|
#define bvec_iter_len(bvec, iter) \
|
|
min((iter).bi_size, \
|
|
__bvec_iter_bvec((bvec), (iter))->bv_len - (iter).bi_bvec_done)
|
|
|
|
#define bvec_iter_offset(bvec, iter) \
|
|
(__bvec_iter_bvec((bvec), (iter))->bv_offset + (iter).bi_bvec_done)
|
|
|
|
#define bvec_iter_bvec(bvec, iter) \
|
|
((struct bio_vec) { \
|
|
.bv_page = bvec_iter_page((bvec), (iter)), \
|
|
.bv_len = bvec_iter_len((bvec), (iter)), \
|
|
.bv_offset = bvec_iter_offset((bvec), (iter)), \
|
|
})
|
|
|
|
static inline void bvec_iter_advance(const struct bio_vec *bv,
|
|
struct bvec_iter *iter,
|
|
unsigned bytes)
|
|
{
|
|
WARN_ONCE(bytes > iter->bi_size,
|
|
"Attempted to advance past end of bvec iter\n");
|
|
|
|
while (bytes) {
|
|
unsigned iter_len = bvec_iter_len(bv, *iter);
|
|
unsigned len = min(bytes, iter_len);
|
|
|
|
bytes -= len;
|
|
iter->bi_size -= len;
|
|
iter->bi_bvec_done += len;
|
|
|
|
if (iter->bi_bvec_done == __bvec_iter_bvec(bv, *iter)->bv_len) {
|
|
iter->bi_bvec_done = 0;
|
|
iter->bi_idx++;
|
|
}
|
|
}
|
|
}
|
|
|
|
static inline void bvec_iter_skip_zero_bvec(struct bvec_iter *iter)
|
|
{
|
|
iter->bi_bvec_done = 0;
|
|
iter->bi_idx++;
|
|
}
|
|
|
|
#define for_each_bvec(bvl, bio_vec, iter, start) \
|
|
for (iter = (start); \
|
|
(iter).bi_size && \
|
|
((bvl = bvec_iter_bvec((bio_vec), (iter))), 1); \
|
|
(bvl).bv_len ? (void)bvec_iter_advance((bio_vec), &(iter), \
|
|
(bvl).bv_len) : bvec_iter_skip_zero_bvec(&(iter)))
|
|
|
|
#endif /* __LINUX_BVEC_ITER_H */
|