Merge 4.19.307 into android-4.19-stable
Changes in 4.19.307
PCI: mediatek: Clear interrupt status before dispatching handler
include/linux/units.h: add helpers for kelvin to/from Celsius conversion
units: Add Watt units
units: change from 'L' to 'UL'
units: add the HZ macros
serial: sc16is7xx: set safe default SPI clock frequency
driver core: add device probe log helper
spi: introduce SPI_MODE_X_MASK macro
serial: sc16is7xx: add check for unsupported SPI modes during probe
ext4: allow for the last group to be marked as trimmed
crypto: api - Disallow identical driver names
PM: hibernate: Enforce ordering during image compression/decompression
hwrng: core - Fix page fault dead lock on mmap-ed hwrng
rpmsg: virtio: Free driver_override when rpmsg_remove()
parisc/firmware: Fix F-extend for PDC addresses
nouveau/vmm: don't set addr on the fail path to avoid warning
block: Remove special-casing of compound pages
powerpc: Use always instead of always-y in for crtsavres.o
x86/CPU/AMD: Fix disabling XSAVES on AMD family 0x17 due to erratum
driver core: Annotate dev_err_probe() with __must_check
Revert "driver core: Annotate dev_err_probe() with __must_check"
driver code: print symbolic error code
drivers: core: fix kernel-doc markup for dev_err_probe()
net/smc: fix illegal rmb_desc access in SMC-D connection dump
vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING
llc: make llc_ui_sendmsg() more robust against bonding changes
llc: Drop support for ETH_P_TR_802_2.
net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv
tracing: Ensure visibility when inserting an element into tracing_map
tcp: Add memory barrier to tcp_push()
netlink: fix potential sleeping issue in mqueue_flush_file
net/mlx5: Use kfree(ft->g) in arfs_create_groups()
net/mlx5e: fix a double-free in arfs_create_groups
netfilter: nf_tables: restrict anonymous set and map names to 16 bytes
fjes: fix memleaks in fjes_hw_setup
net: fec: fix the unhandled context fault from smmu
btrfs: don't warn if discard range is not aligned to sector
btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args
netfilter: nf_tables: reject QUEUE/DROP verdict parameters
gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04
drm: Don't unref the same fb many times by mistake due to deadlock handling
drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking
drm/bridge: nxp-ptn3460: simplify some error checking
drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume
gpio: eic-sprd: Clear interrupt after set the interrupt type
mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan
tick/sched: Preserve number of idle sleeps across CPU hotplug events
x86/entry/ia32: Ensure s32 is sign extended to s64
net/sched: cbs: Fix not adding cbs instance to list
powerpc/mm: Fix null-pointer dereference in pgtable_cache_add
powerpc: Fix build error due to is_valid_bugaddr()
powerpc/mm: Fix build failures due to arch_reserved_kernel_pages()
powerpc/lib: Validate size for vector operations
audit: Send netlink ACK before setting connection in auditd_set
ACPI: video: Add quirk for the Colorful X15 AT 23 Laptop
PNP: ACPI: fix fortify warning
ACPI: extlog: fix NULL pointer dereference check
FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree
UBSAN: array-index-out-of-bounds in dtSplitRoot
jfs: fix slab-out-of-bounds Read in dtSearch
jfs: fix array-index-out-of-bounds in dbAdjTree
jfs: fix uaf in jfs_evict_inode
pstore/ram: Fix crash when setting number of cpus to an odd number
crypto: stm32/crc32 - fix parsing list of devices
afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*()
rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock()
jfs: fix array-index-out-of-bounds in diNewExt
s390/ptrace: handle setting of fpc register correctly
KVM: s390: fix setting of fpc register
SUNRPC: Fix a suspicious RCU usage warning
ext4: fix inconsistent between segment fstrim and full fstrim
ext4: unify the type of flexbg_size to unsigned int
ext4: remove unnecessary check from alloc_flex_gd()
ext4: avoid online resizing failures due to oversized flex bg
scsi: lpfc: Fix possible file string name overflow when updating firmware
PCI: Add no PM reset quirk for NVIDIA Spectrum devices
bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk
ARM: dts: imx7s: Fix lcdif compatible
ARM: dts: imx7s: Fix nand-controller #size-cells
wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus()
bpf: Add map and need_defer parameters to .map_fd_put_ptr()
scsi: libfc: Don't schedule abort twice
scsi: libfc: Fix up timeout error in fc_fcp_rec_error()
ARM: dts: rockchip: fix rk3036 hdmi ports node
ARM: dts: imx25/27-eukrea: Fix RTC node name
ARM: dts: imx: Use flash@0,0 pattern
ARM: dts: imx27: Fix sram node
ARM: dts: imx1: Fix sram node
ARM: dts: imx27-apf27dev: Fix LED name
ARM: dts: imx23-sansa: Use preferred i2c-gpios properties
ARM: dts: imx23/28: Fix the DMA controller node name
md: Whenassemble the array, consult the superblock of the freshest device
wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices
wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift()
wifi: cfg80211: free beacon_ies when overridden from hidden BSS
f2fs: fix to check return value of f2fs_reserve_new_block()
ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument
fast_dput(): handle underflows gracefully
RDMA/IPoIB: Fix error code return in ipoib_mcast_join
drm/drm_file: fix use of uninitialized variable
drm/framebuffer: Fix use of uninitialized variable
drm/mipi-dsi: Fix detach call without attach
media: stk1160: Fixed high volume of stk1160_dbg messages
media: rockchip: rga: fix swizzling for RGB formats
PCI: add INTEL_HDA_ARL to pci_ids.h
ALSA: hda: Intel: add HDA_ARL PCI ID support
drm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time
IB/ipoib: Fix mcast list locking
media: ddbridge: fix an error code problem in ddb_probe
drm/msm/dpu: Ratelimit framedone timeout msgs
clk: hi3620: Fix memory leak in hi3620_mmc_clk_init()
clk: mmp: pxa168: Fix memory leak in pxa168_clk_init()
drm/amdgpu: Let KFD sync with VM fences
drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()'
leds: trigger: panic: Don't register panic notifier if creating the trigger failed
um: Fix naming clash between UML and scheduler
um: Don't use vfprintf() for os_info()
um: net: Fix return type of uml_net_start_xmit()
mfd: ti_am335x_tscadc: Fix TI SoC dependencies
PCI: Only override AMD USB controller if required
usb: hub: Replace hardcoded quirk value with BIT() macro
libsubcmd: Fix memory leak in uniq()
virtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region of size 10" warnings
blk-mq: fix IO hang from sbitmap wakeup race
ceph: fix deadlock or deadcode of misusing dget()
drm/amdgpu: Release 'adev->pm.fw' before return in 'amdgpu_device_need_post()'
wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update
scsi: isci: Fix an error code problem in isci_io_request_build()
net: remove unneeded break
ixgbe: Remove non-inclusive language
ixgbe: Refactor returning internal error codes
ixgbe: Refactor overtemp event handling
ixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550()
ipv6: Ensure natural alignment of const ipv6 loopback and router addresses
llc: call sock_orphan() at release time
netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger
net: ipv4: fix a memleak in ip_setup_cork
af_unix: fix lockdep positive in sk_diag_dump_icons()
net: sysfs: Fix /sys/class/net/<iface> path
HID: apple: Add support for the 2021 Magic Keyboard
HID: apple: Swap the Fn and Left Control keys on Apple keyboards
HID: apple: Add 2021 magic keyboard FN key mapping
bonding: remove print in bond_verify_device_path
dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV
phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP
atm: idt77252: fix a memleak in open_card_ubr0
hwmon: (aspeed-pwm-tacho) mutex for tach reading
hwmon: (coretemp) Fix out-of-bounds memory access
hwmon: (coretemp) Fix bogus core_id to attr name mapping
inet: read sk->sk_family once in inet_recv_error()
rxrpc: Fix response to PING RESPONSE ACKs to a dead call
tipc: Check the bearer type before calling tipc_udp_nl_bearer_add()
ppp_async: limit MRU to 64K
netfilter: nft_compat: reject unused compat flag
netfilter: nft_compat: restrict match/target protocol to u16
net/af_iucv: clean up a try_then_request_module()
USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e
USB: serial: option: add Fibocom FM101-GL variant
USB: serial: cp210x: add ID for IMST iM871A-USB
Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID
vhost: use kzalloc() instead of kmalloc() followed by memset()
hrtimer: Report offline hrtimer enqueue
btrfs: forbid creating subvol qgroups
btrfs: send: return EOPNOTSUPP on unknown flags
spi: ppc4xx: Drop write-only variable
ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()
Documentation: net-sysfs: describe missing statistics
net: sysfs: Fix /sys/class/net/<iface> path for statistics
MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler
i40e: Fix waiting for queues of all VSIs to be disabled
tracing/trigger: Fix to return error if failed to alloc snapshot
mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again
HID: wacom: generic: Avoid reporting a serial of '0' to userspace
HID: wacom: Do not register input devices until after hid_hw_start
USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT
usb: f_mass_storage: forbid async queue when shutdown happen
scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock"
firewire: core: correct documentation of fw_csr_string() kernel API
nfc: nci: free rx_data_reassembly skb on NCI device cleanup
xen-netback: properly sync TX responses
binder: signal epoll threads of self-work
ext4: fix double-free of blocks due to wrong extents moved_len
staging: iio: ad5933: fix type mismatch regression
ring-buffer: Clean ring_buffer_poll_wait() error return
serial: max310x: set default value when reading clock ready bit
serial: max310x: improve crystal stable clock detection
x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6
x86/mm/ident_map: Use gbpages only where full GB page should be mapped.
ALSA: hda/conexant: Add quirk for SWS JS201D
nilfs2: fix data corruption in dsync block recovery for small block sizes
nilfs2: fix hang in nilfs_lookup_dirty_data_buffers()
nfp: use correct macro for LengthSelect in BAR config
irqchip/irq-brcmstb-l2: Add write memory barrier before exit
pmdomain: core: Move the unused cleanup to a _sync initcall
Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"
sched/membarrier: reduce the ability to hammer on sys_membarrier
nilfs2: fix potential bug in end_buffer_async_write
lsm: new security_file_ioctl_compat() hook
netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
Linux 4.19.307
Change-Id: Ib05aec445afe9920e2502bcfce1c52db76e27139
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -5213,13 +5213,15 @@ static int ext4_try_to_trim_range(struct super_block *sb,
|
||||
struct ext4_buddy *e4b, ext4_grpblk_t start,
|
||||
ext4_grpblk_t max, ext4_grpblk_t minblocks)
|
||||
{
|
||||
ext4_grpblk_t next, count, free_count;
|
||||
ext4_grpblk_t next, count, free_count, last, origin_start;
|
||||
bool set_trimmed = false;
|
||||
void *bitmap;
|
||||
|
||||
last = ext4_last_grp_cluster(sb, e4b->bd_group);
|
||||
bitmap = e4b->bd_bitmap;
|
||||
if (start == 0 && max >= ext4_last_grp_cluster(sb, e4b->bd_group))
|
||||
if (start == 0 && max >= last)
|
||||
set_trimmed = true;
|
||||
origin_start = start;
|
||||
start = max(e4b->bd_info->bb_first_free, start);
|
||||
count = 0;
|
||||
free_count = 0;
|
||||
@@ -5228,7 +5230,10 @@ static int ext4_try_to_trim_range(struct super_block *sb,
|
||||
start = mb_find_next_zero_bit(bitmap, max + 1, start);
|
||||
if (start > max)
|
||||
break;
|
||||
next = mb_find_next_bit(bitmap, max + 1, start);
|
||||
|
||||
next = mb_find_next_bit(bitmap, last + 1, start);
|
||||
if (origin_start == 0 && next >= last)
|
||||
set_trimmed = true;
|
||||
|
||||
if ((next - start) >= minblocks) {
|
||||
int ret = ext4_trim_extent(sb, start, next - start, e4b);
|
||||
|
||||
@@ -615,6 +615,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
|
||||
goto out;
|
||||
o_end = o_start + len;
|
||||
|
||||
*moved_len = 0;
|
||||
while (o_start < o_end) {
|
||||
struct ext4_extent *ex;
|
||||
ext4_lblk_t cur_blk, next_blk;
|
||||
@@ -670,7 +671,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
|
||||
*/
|
||||
ext4_double_up_write_data_sem(orig_inode, donor_inode);
|
||||
/* Swap original branches with new branches */
|
||||
move_extent_per_page(o_filp, donor_inode,
|
||||
*moved_len += move_extent_per_page(o_filp, donor_inode,
|
||||
orig_page_index, donor_page_index,
|
||||
offset_in_page, cur_len,
|
||||
unwritten, &ret);
|
||||
@@ -680,9 +681,6 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
|
||||
o_start += cur_len;
|
||||
d_start += cur_len;
|
||||
}
|
||||
*moved_len = o_start - orig_blk;
|
||||
if (*moved_len > len)
|
||||
*moved_len = len;
|
||||
|
||||
out:
|
||||
if (*moved_len) {
|
||||
|
||||
@@ -227,17 +227,24 @@ struct ext4_new_flex_group_data {
|
||||
in the flex group */
|
||||
__u16 *bg_flags; /* block group flags of groups
|
||||
in @groups */
|
||||
ext4_group_t resize_bg; /* number of allocated
|
||||
new_group_data */
|
||||
ext4_group_t count; /* number of groups in @groups
|
||||
*/
|
||||
};
|
||||
|
||||
/*
|
||||
* Avoiding memory allocation failures due to too many groups added each time.
|
||||
*/
|
||||
#define MAX_RESIZE_BG 16384
|
||||
|
||||
/*
|
||||
* alloc_flex_gd() allocates a ext4_new_flex_group_data with size of
|
||||
* @flexbg_size.
|
||||
*
|
||||
* Returns NULL on failure otherwise address of the allocated structure.
|
||||
*/
|
||||
static struct ext4_new_flex_group_data *alloc_flex_gd(unsigned long flexbg_size)
|
||||
static struct ext4_new_flex_group_data *alloc_flex_gd(unsigned int flexbg_size)
|
||||
{
|
||||
struct ext4_new_flex_group_data *flex_gd;
|
||||
|
||||
@@ -245,17 +252,18 @@ static struct ext4_new_flex_group_data *alloc_flex_gd(unsigned long flexbg_size)
|
||||
if (flex_gd == NULL)
|
||||
goto out3;
|
||||
|
||||
if (flexbg_size >= UINT_MAX / sizeof(struct ext4_new_group_data))
|
||||
goto out2;
|
||||
flex_gd->count = flexbg_size;
|
||||
if (unlikely(flexbg_size > MAX_RESIZE_BG))
|
||||
flex_gd->resize_bg = MAX_RESIZE_BG;
|
||||
else
|
||||
flex_gd->resize_bg = flexbg_size;
|
||||
|
||||
flex_gd->groups = kmalloc_array(flexbg_size,
|
||||
flex_gd->groups = kmalloc_array(flex_gd->resize_bg,
|
||||
sizeof(struct ext4_new_group_data),
|
||||
GFP_NOFS);
|
||||
if (flex_gd->groups == NULL)
|
||||
goto out2;
|
||||
|
||||
flex_gd->bg_flags = kmalloc_array(flexbg_size, sizeof(__u16),
|
||||
flex_gd->bg_flags = kmalloc_array(flex_gd->resize_bg, sizeof(__u16),
|
||||
GFP_NOFS);
|
||||
if (flex_gd->bg_flags == NULL)
|
||||
goto out1;
|
||||
@@ -292,7 +300,7 @@ static void free_flex_gd(struct ext4_new_flex_group_data *flex_gd)
|
||||
*/
|
||||
static int ext4_alloc_group_tables(struct super_block *sb,
|
||||
struct ext4_new_flex_group_data *flex_gd,
|
||||
int flexbg_size)
|
||||
unsigned int flexbg_size)
|
||||
{
|
||||
struct ext4_new_group_data *group_data = flex_gd->groups;
|
||||
ext4_fsblk_t start_blk;
|
||||
@@ -393,12 +401,12 @@ static int ext4_alloc_group_tables(struct super_block *sb,
|
||||
group = group_data[0].group;
|
||||
|
||||
printk(KERN_DEBUG "EXT4-fs: adding a flex group with "
|
||||
"%d groups, flexbg size is %d:\n", flex_gd->count,
|
||||
"%u groups, flexbg size is %u:\n", flex_gd->count,
|
||||
flexbg_size);
|
||||
|
||||
for (i = 0; i < flex_gd->count; i++) {
|
||||
ext4_debug(
|
||||
"adding %s group %u: %u blocks (%d free, %d mdata blocks)\n",
|
||||
"adding %s group %u: %u blocks (%u free, %u mdata blocks)\n",
|
||||
ext4_bg_has_super(sb, group + i) ? "normal" :
|
||||
"no-super", group + i,
|
||||
group_data[i].blocks_count,
|
||||
@@ -1584,8 +1592,7 @@ static int ext4_flex_group_add(struct super_block *sb,
|
||||
|
||||
static int ext4_setup_next_flex_gd(struct super_block *sb,
|
||||
struct ext4_new_flex_group_data *flex_gd,
|
||||
ext4_fsblk_t n_blocks_count,
|
||||
unsigned long flexbg_size)
|
||||
ext4_fsblk_t n_blocks_count)
|
||||
{
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_super_block *es = sbi->s_es;
|
||||
@@ -1609,7 +1616,7 @@ static int ext4_setup_next_flex_gd(struct super_block *sb,
|
||||
BUG_ON(last);
|
||||
ext4_get_group_no_and_offset(sb, n_blocks_count - 1, &n_group, &last);
|
||||
|
||||
last_group = group | (flexbg_size - 1);
|
||||
last_group = group | (flex_gd->resize_bg - 1);
|
||||
if (last_group > n_group)
|
||||
last_group = n_group;
|
||||
|
||||
@@ -1965,8 +1972,9 @@ int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count)
|
||||
ext4_fsblk_t o_blocks_count;
|
||||
ext4_fsblk_t n_blocks_count_retry = 0;
|
||||
unsigned long last_update_time = 0;
|
||||
int err = 0, flexbg_size = 1 << sbi->s_log_groups_per_flex;
|
||||
int err = 0;
|
||||
int meta_bg;
|
||||
unsigned int flexbg_size = ext4_flex_bg_size(sbi);
|
||||
|
||||
/* See if the device is actually as big as what was requested */
|
||||
bh = sb_bread(sb, n_blocks_count - 1);
|
||||
@@ -2107,8 +2115,7 @@ int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count)
|
||||
/* Add flex groups. Note that a regular group is a
|
||||
* flex group with 1 group.
|
||||
*/
|
||||
while (ext4_setup_next_flex_gd(sb, flex_gd, n_blocks_count,
|
||||
flexbg_size)) {
|
||||
while (ext4_setup_next_flex_gd(sb, flex_gd, n_blocks_count)) {
|
||||
if (jiffies - last_update_time > HZ * 10) {
|
||||
if (last_update_time)
|
||||
ext4_msg(sb, KERN_INFO,
|
||||
|
||||
Reference in New Issue
Block a user