mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
This is the 5.4.53 stable release
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl8X674ACgkQONu9yGCS
aT5F9g/+PdG5XSPhoGEhO2FW43cQKuGp5vWJ3IhVFyEXFdboWIa5laWNBh1ZC/Kg
Ua0vxBGGJDTGZNTJAQd6Re1RfAbptEstrNlwC3BaxUQn5Qn4YQMCNbAeFEj7D2nw
Tez3r3gjpGc9uo0EqfeJStqhFZfh+D3apHz1/RFZ/12T5d4dIEtCXDUAP89zib0w
lHBOH37Mc0WqXSUPLdabIbemlbZv4prYn7gnzIeoxl3h+TKzdjM4pGjrjzKJwy2D
9XDB3Dw9BA225uoextJl3GCOm7IF+TGaR10YxuHCtxJAkdPSt2BUUAFC0XrV7KPw
fGMy8/a8EZj5PoNNjKHzDD2IJf9PhLZgcn7AjOW6x9XXu7lJls4Wx4/k5TpIO1I1
paO8kGex8jk751X4U1Bu8LowLPjiL3fKp0lSeysSw9IIzTBW1DlhSR9Mf/CEihib
xbS6k8/uF9HGtYJKIW4o/iL/3D0MGKTuOX18tlhnZ92Hp5WcAEZKrUKgYTY/exvF
WDYDRSFv17tw6XT7Jfey3veP1z+3kVMZ3KD0CnpJ7poS/f8H730yyEgIDO0dRO3I
Rd1r/uCmgr0GkeNDp46eoTYCgvhCQruxWul0/6/pw4VdzIBSRlPjsZBR+2Frnmuw
dRim972ocnvVzxKe1N2fD+whfjok85h30Xg7uvFgZGEZ7/wOUL8=
=mqst
-----END PGP SIGNATURE-----
Merge 5.4.53 into android11-5.4
Changes in 5.4.53
crypto: atmel - Fix selection of CRYPTO_AUTHENC
crypto: atmel - Fix build error of CRYPTO_AUTHENC
net: atlantic: fix ip dst and ipv6 address filters
net: rmnet: fix lower interface leak
bridge: mcast: Fix MLD2 Report IPv6 payload length check
genetlink: remove genl_bind
ipv4: fill fl4_icmp_{type,code} in ping_v4_sendmsg
ipv6: fib6_select_path can not use out path for nexthop objects
ipv6: Fix use of anycast address with loopback
l2tp: remove skb_dst_set() from l2tp_xmit_skb()
llc: make sure applications use ARPHRD_ETHER
net: Added pointer check for dst->ops->neigh_lookup in dst_neigh_lookup_skb
net: dsa: microchip: set the correct number of ports
net_sched: fix a memory leak in atm_tc_init()
net: usb: qmi_wwan: add support for Quectel EG95 LTE modem
sched: consistently handle layer3 header accesses in the presence of VLANs
tcp: fix SO_RCVLOWAT possible hangs under high mem pressure
tcp: make sure listeners don't initialize congestion-control state
tcp: md5: add missing memory barriers in tcp_md5_do_add()/tcp_md5_hash_key()
tcp: md5: do not send silly options in SYNCOOKIES
vlan: consolidate VLAN parsing code and limit max parsing depth
tcp: md5: refine tcp_md5_do_add()/tcp_md5_hash_key() barriers
tcp: md5: allow changing MD5 keys in all socket states
cgroup: fix cgroup_sk_alloc() for sk_clone_lock()
cgroup: Fix sock_cgroup_data on big-endian.
ip: Fix SO_MARK in RST, ACK and ICMP packets
arm64: Introduce a way to disable the 32bit vdso
arm64: arch_timer: Allow an workaround descriptor to disable compat vdso
arm64: arch_timer: Disable the compat vdso for cores affected by ARM64_WORKAROUND_1418040
drm/msm: fix potential memleak in error branch
drm/msm/dpu: allow initialization of encoder locks during encoder init
drm/exynos: Properly propagate return value in drm_iommu_attach_device()
drm/exynos: fix ref count leak in mic_pre_enable
x86/fpu: Reset MXCSR to default in kernel_fpu_begin()
thermal/drivers: imx: Fix missing of_node_put() at probe time
blk-mq-debugfs: update blk_queue_flag_name[] accordingly for new flags
m68k: nommu: register start of the memory with memblock
m68k: mm: fix node memblock init
dt-bindings: mailbox: zynqmp_ipi: fix unit address
cifs: prevent truncation from long to int in wait_for_free_credits
arm64/alternatives: use subsections for replacement sequences
tpm_tis: extra chip->ops check on error path in tpm_tis_core_init
gfs2: read-only mounts should grab the sd_freeze_gl glock
i2c: eg20t: Load module automatically if ID matches
arm64/alternatives: don't patch up internal branches
iio:magnetometer:ak8974: Fix alignment and data leak issues
iio:humidity:hdc100x Fix alignment and data leak issues
iio: magnetometer: ak8974: Fix runtime PM imbalance on error
iio: core: add missing IIO_MOD_H2/ETHANOL string identifiers
iio: mma8452: Add missed iio_device_unregister() call in mma8452_probe()
iio: pressure: zpa2326: handle pm_runtime_get_sync failure
iio:humidity:hts221 Fix alignment and data leak issues
iio:pressure:ms5611 Fix buffer element alignment
iio:health:afe4403 Fix timestamp alignment and prevent data leak.
spi: spi-fsl-dspi: Fix lockup if device is shutdown during SPI transfer
net: dsa: bcm_sf2: Fix node reference count
of: of_mdio: Correct loop scanning logic
net: macb: call pm_runtime_put_sync on failure path
net: ethernet: mvneta: Do not error out in non serdes modes
net: ethernet: mvneta: Add back interface mode validation
Revert "usb/ohci-platform: Fix a warning when hibernating"
Revert "usb/ehci-platform: Set PM runtime as active on resume"
Revert "usb/xhci-plat: Set PM runtime as active on resume"
net: sfp: add support for module quirks
net: sfp: add some quirks for GPON modules
ARM: OMAP4+: remove pdata quirks for omap4+ iommus
ARM: OMAP2+: Add workaround for DRA7 DSP MStandby errata i879
ARM: OMAP2+: use separate IOMMU pdata to fix DRA7 IPU1 boot
mmc: mmci: Support any block sizes for ux500v2 and qcom variant
HID: quirks: Remove ITE 8595 entry from hid_have_special_driver
ARM: at91: pm: add quirk for sam9x60's ulp1
drm/sun4i: tcon: Separate quirks for tcon0 and tcon1 on A20
scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled
bus: ti-sysc: Rename clk related quirks to pre_reset and post_reset quirks
bus: ti-sysc: Consider non-existing registers too when matching quirks
bus: ti-sysc: Handle module unlock quirk needed for some RTC
bus: ti-sysc: Detect display subsystem related devices
arm64: dts: g12-common: add parkmode_disable_ss_quirk on DWC3 controller
bus: ti-sysc: Detect EDMA and set quirk flags for tptc
ALSA: usb-audio: Add support for MOTU MicroBook IIc
Input: goodix - fix touch coordinates on Cube I15-TC
ALSA: usb-audio: Create a registration quirk for Kingston HyperX Amp (0951:16d8)
doc: dt: bindings: usb: dwc3: Update entries for disabling SS instances in park mode
mmc: sdhci: do not enable card detect interrupt for gpio cd type
ALSA: usb-audio: Rewrite registration quirk handling
ACPI: video: Use native backlight on Acer Aspire 5783z
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Alpha S
ALSA: usb-audio: Add quirk for Focusrite Scarlett 2i2
Input: mms114 - add extra compatible for mms345l
ACPI: video: Use native backlight on Acer TravelMate 5735Z
bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Flight S
iio:health:afe4404 Fix timestamp alignment and prevent data leak.
soundwire: intel: fix memory leak with devm_kasprintf
dmaengine: sh: usb-dmac: set tx_result parameters
phy: sun4i-usb: fix dereference of pointer phy0 before it is null checked
arm64: dts: meson: add missing gxl rng clock
arm64: dts: meson-gxl-s805x: reduce initial Mali450 core frequency
bus: ti-sysc: Fix wakeirq sleeping function called from invalid context
bus: ti-sysc: Fix sleeping function called from invalid context for RTC quirk
bus: ti-sysc: Do not disable on suspend for no-idle
iio: adc: ad7780: Fix a resource handling path in 'ad7780_probe()'
dmaengine: dw: Initialize channel before each transfer
dmaengine: dmatest: stop completed threads when running without set channel
spi: spi-sun6i: sun6i_spi_transfer_one(): fix setting of clock rate
usb: gadget: udc: atmel: fix uninitialized read in debug printk
staging: comedi: verify array index is correct before using it
clk: mvebu: ARMADA_AP_CPU_CLK needs to select ARMADA_AP_CP_HELPER
clk: AST2600: Add mux for EMMC clock
NFS: Fix interrupted slots by sending a solo SEQUENCE operation
fuse: don't ignore errors from fuse_writepages_fill()
ARM: dts: Fix dcan driver probe failed on am437x platform
Revert "thermal: mediatek: fix register index error"
xprtrdma: fix incorrect header size calculations
ARM: dts: socfpga: Align L2 cache-controller nodename with dtschema
arm64: dts: spcfpga: Align GIC, NAND and UART nodenames with dtschema
keys: asymmetric: fix error return code in software_key_query()
regmap: debugfs: Don't sleep while atomic for fast_io regmaps
copy_xstate_to_kernel: Fix typo which caused GDB regression
arm: dts: mt7623: add phy-mode property for gmac2
soc: qcom: socinfo: add missing soc_id sysfs entry
apparmor: ensure that dfa state tables have entries
habanalabs: Align protection bits configuration of all TPCs
PCI/PM: Call .bridge_d3() hook only if non-NULL
perf stat: Zero all the 'ena' and 'run' array slot stats for interval mode
soc: qcom: rpmh: Update dirty flag only when data changes
soc: qcom: rpmh: Invalidate SLEEP and WAKE TCSes before flushing new data
soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS
soc: qcom: rpmh-rsc: Allow using free WAKE TCS for active request
RDMA/mlx5: Verify that QP is created with RQ or SQ
mtd: rawnand: marvell: Fix the condition on a return code
mtd: rawnand: marvell: Use nand_cleanup() when the device is not yet registered
mtd: rawnand: marvell: Fix probe error path
mtd: rawnand: timings: Fix default tR_max and tCCS_min timings
mtd: rawnand: brcmnand: correctly verify erased pages
mtd: rawnand: brcmnand: fix CS0 layout
mtd: rawnand: oxnas: Keep track of registered devices
mtd: rawnand: oxnas: Unregister all devices on error
mtd: rawnand: oxnas: Release all devices in the _remove() path
clk: qcom: gcc: Add GPU and NPU clocks for SM8150
clk: qcom: gcc: Add missing UFS clocks for SM8150
slimbus: core: Fix mismatch in of_node_get/put
HID: logitech-hidpp: avoid repeated "multiplier = " log messages
HID: magicmouse: do not set up autorepeat
HID: quirks: Always poll Obins Anne Pro 2 keyboard
HID: quirks: Ignore Simply Automated UPB PIM
ALSA: line6: Perform sanity check for each URB creation
ALSA: line6: Sync the pending work cancel at disconnection
ALSA: usb-audio: Fix race against the error recovery URB submission
ALSA: hda/realtek - change to suitable link model for ASUS platform
ALSA: hda/realtek: enable headset mic of ASUS ROG Zephyrus G14(G401) series with ALC289
ALSA: hda/realtek: Enable headset mic of Acer TravelMate B311R-31 with ALC256
ALSA: hda/realtek - Enable Speaker for ASUS UX533 and UX534
ALSA: hda/realtek - Enable Speaker for ASUS UX563
USB: c67x00: fix use after free in c67x00_giveback_urb
usb: dwc2: Fix shutdown callback in platform
usb: chipidea: core: add wakeup support for extcon
usb: gadget: function: fix missing spinlock in f_uac1_legacy
USB: serial: iuu_phoenix: fix memory corruption
USB: serial: cypress_m8: enable Simply Automated UPB PIM
USB: serial: ch341: add new Product ID for CH340
USB: serial: option: add GosunCn GM500 series
USB: serial: option: add Quectel EG95 LTE modem
virt: vbox: Fix VBGL_IOCTL_VMMDEV_REQUEST_BIG and _LOG req numbers to match upstream
virt: vbox: Fix guest capabilities mask check
Revert "tty: xilinx_uartps: Fix missing id assignment to the console"
virtio: virtio_console: add missing MODULE_DEVICE_TABLE() for rproc serial
serial: mxs-auart: add missed iounmap() in probe failure and remove
ovl: fix regression with re-formatted lower squashfs
ovl: inode reference leak in ovl_is_inuse true case.
ovl: relax WARN_ON() when decoding lower directory file handle
ovl: fix unneeded call to ovl_change_flags()
fuse: ignore 'data' argument of mount(..., MS_REMOUNT)
fuse: use ->reconfigure() instead of ->remount_fs()
fuse: Fix parameter for FS_IOC_{GET,SET}FLAGS
Revert "zram: convert remaining CLASS_ATTR() to CLASS_ATTR_RO()"
mei: bus: don't clean driver pointer
Input: i8042 - add Lenovo XiaoXin Air 12 to i8042 nomux list
Input: elan_i2c - add more hardware ID for Lenovo laptops
uio_pdrv_genirq: Remove warning when irq is not specified
uio_pdrv_genirq: fix use without device tree and no interrupt
scsi: megaraid_sas: Remove undefined ENABLE_IRQ_POLL macro
timer: Prevent base->clk from moving backward
timer: Fix wheel index calculation on last level
riscv: use 16KB kernel stack on 64-bit
hwmon: (emc2103) fix unable to change fan pwm1_enable attribute
powerpc/book3s64/pkeys: Fix pkey_access_permitted() for execute disable pkey
powerpc/pseries/svm: Fix incorrect check for shared_lppaca_size
intel_th: pci: Add Jasper Lake CPU support
intel_th: pci: Add Tiger Lake PCH-H support
intel_th: pci: Add Emmitsburg PCH support
intel_th: Fix a NULL dereference when hub driver is not loaded
dmaengine: fsl-edma: Fix NULL pointer exception in fsl_edma_tx_handler
dmaengine: mcf-edma: Fix NULL pointer exception in mcf_edma_tx_handler
dmaengine: fsl-edma-common: correct DSIZE_32BYTE
misc: atmel-ssc: lock with mutex instead of spinlock
thermal: int3403_thermal: Downgrade error message
thermal/drivers/cpufreq_cooling: Fix wrong frequency converted from power
arm64: ptrace: Override SPSR.SS when single-stepping is enabled
arm64: ptrace: Consistently use pseudo-singlestep exceptions
arm64: compat: Ensure upper 32 bits of x0 are zero on syscall return
sched: Fix unreliable rseq cpu_id for new tasks
sched/fair: handle case of task_h_load() returning 0
genirq/affinity: Handle affinity setting on inactive interrupts correctly
drm/amdgpu/sdma5: fix wptr overwritten in ->get_wptr()
drm/i915/gt: Ignore irq enabling on the virtual engines
block: fix splitting segments on boundary masks
block: fix get_max_segment_size() overflow on 32bit arch
libceph: don't omit recovery_deletes in target_copy()
rxrpc: Fix trace string
spi: sprd: switch the sequence of setting WDG_LOAD_LOW and _HIGH
ionic: export features for vlans to use
iommu/vt-d: Make Intel SVM code 64-bit only
drm/i915/gvt: Fix two CFL MMIO handling caused by regression.
gpio: pca953x: disable regmap locking for automatic address incrementing
Linux 5.4.53
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Change-Id: I2347f0f12d1e95a90cff2f3999940e1f82231df2
This commit is contained in:
commit
171202d5b0
264 changed files with 1987 additions and 920 deletions
|
|
@ -528,7 +528,7 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits,
|
|||
const int timeout, const int flags,
|
||||
unsigned int *instance)
|
||||
{
|
||||
int rc;
|
||||
long rc;
|
||||
int *credits;
|
||||
int optype;
|
||||
long int t;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include <linux/swap.h>
|
||||
#include <linux/falloc.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/fs.h>
|
||||
|
||||
static struct page **fuse_pages_alloc(unsigned int npages, gfp_t flags,
|
||||
struct fuse_page_desc **desc)
|
||||
|
|
@ -2148,10 +2149,8 @@ static int fuse_writepages(struct address_space *mapping,
|
|||
|
||||
err = write_cache_pages(mapping, wbc, fuse_writepages_fill, &data);
|
||||
if (data.wpa) {
|
||||
/* Ignore errors if we can write at least one page */
|
||||
WARN_ON(!data.wpa->ia.ap.num_pages);
|
||||
fuse_writepages_send(&data);
|
||||
err = 0;
|
||||
}
|
||||
if (data.ff)
|
||||
fuse_file_put(data.ff, false, false);
|
||||
|
|
@ -2760,7 +2759,16 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
|
|||
struct iovec *iov = iov_page;
|
||||
|
||||
iov->iov_base = (void __user *)arg;
|
||||
iov->iov_len = _IOC_SIZE(cmd);
|
||||
|
||||
switch (cmd) {
|
||||
case FS_IOC_GETFLAGS:
|
||||
case FS_IOC_SETFLAGS:
|
||||
iov->iov_len = sizeof(int);
|
||||
break;
|
||||
default:
|
||||
iov->iov_len = _IOC_SIZE(cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
if (_IOC_DIR(cmd) & _IOC_WRITE) {
|
||||
in_iov = iov;
|
||||
|
|
|
|||
|
|
@ -121,10 +121,12 @@ static void fuse_evict_inode(struct inode *inode)
|
|||
}
|
||||
}
|
||||
|
||||
static int fuse_remount_fs(struct super_block *sb, int *flags, char *data)
|
||||
static int fuse_reconfigure(struct fs_context *fc)
|
||||
{
|
||||
struct super_block *sb = fc->root->d_sb;
|
||||
|
||||
sync_filesystem(sb);
|
||||
if (*flags & SB_MANDLOCK)
|
||||
if (fc->sb_flags & SB_MANDLOCK)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
|
@ -473,6 +475,13 @@ static int fuse_parse_param(struct fs_context *fc, struct fs_parameter *param)
|
|||
struct fuse_fs_context *ctx = fc->fs_private;
|
||||
int opt;
|
||||
|
||||
/*
|
||||
* Ignore options coming from mount(MS_REMOUNT) for backward
|
||||
* compatibility.
|
||||
*/
|
||||
if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE)
|
||||
return 0;
|
||||
|
||||
opt = fs_parse(fc, &fuse_fs_parameters, param, &result);
|
||||
if (opt < 0)
|
||||
return opt;
|
||||
|
|
@ -815,7 +824,6 @@ static const struct super_operations fuse_super_operations = {
|
|||
.evict_inode = fuse_evict_inode,
|
||||
.write_inode = fuse_write_inode,
|
||||
.drop_inode = generic_delete_inode,
|
||||
.remount_fs = fuse_remount_fs,
|
||||
.put_super = fuse_put_super,
|
||||
.umount_begin = fuse_umount_begin,
|
||||
.statfs = fuse_statfs,
|
||||
|
|
@ -1289,6 +1297,7 @@ static int fuse_get_tree(struct fs_context *fc)
|
|||
static const struct fs_context_operations fuse_context_ops = {
|
||||
.free = fuse_free_fc,
|
||||
.parse_param = fuse_parse_param,
|
||||
.reconfigure = fuse_reconfigure,
|
||||
.get_tree = fuse_get_tree,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1168,7 +1168,17 @@ static int gfs2_fill_super(struct super_block *sb, struct fs_context *fc)
|
|||
goto fail_per_node;
|
||||
}
|
||||
|
||||
if (!sb_rdonly(sb)) {
|
||||
if (sb_rdonly(sb)) {
|
||||
struct gfs2_holder freeze_gh;
|
||||
|
||||
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED,
|
||||
GL_EXACT, &freeze_gh);
|
||||
if (error) {
|
||||
fs_err(sdp, "can't make FS RO: %d\n", error);
|
||||
goto fail_per_node;
|
||||
}
|
||||
gfs2_glock_dq_uninit(&freeze_gh);
|
||||
} else {
|
||||
error = gfs2_make_fs_rw(sdp);
|
||||
if (error) {
|
||||
fs_err(sdp, "can't make FS RW: %d\n", error);
|
||||
|
|
|
|||
|
|
@ -774,6 +774,14 @@ static void nfs4_slot_sequence_acked(struct nfs4_slot *slot,
|
|||
slot->seq_nr_last_acked = seqnr;
|
||||
}
|
||||
|
||||
static void nfs4_probe_sequence(struct nfs_client *client, const struct cred *cred,
|
||||
struct nfs4_slot *slot)
|
||||
{
|
||||
struct rpc_task *task = _nfs41_proc_sequence(client, cred, slot, true);
|
||||
if (!IS_ERR(task))
|
||||
rpc_put_task_async(task);
|
||||
}
|
||||
|
||||
static int nfs41_sequence_process(struct rpc_task *task,
|
||||
struct nfs4_sequence_res *res)
|
||||
{
|
||||
|
|
@ -790,6 +798,7 @@ static int nfs41_sequence_process(struct rpc_task *task,
|
|||
goto out;
|
||||
|
||||
session = slot->table->session;
|
||||
clp = session->clp;
|
||||
|
||||
trace_nfs4_sequence_done(session, res);
|
||||
|
||||
|
|
@ -804,7 +813,6 @@ static int nfs41_sequence_process(struct rpc_task *task,
|
|||
nfs4_slot_sequence_acked(slot, slot->seq_nr);
|
||||
/* Update the slot's sequence and clientid lease timer */
|
||||
slot->seq_done = 1;
|
||||
clp = session->clp;
|
||||
do_renew_lease(clp, res->sr_timestamp);
|
||||
/* Check sequence flags */
|
||||
nfs41_handle_sequence_flag_errors(clp, res->sr_status_flags,
|
||||
|
|
@ -852,10 +860,18 @@ static int nfs41_sequence_process(struct rpc_task *task,
|
|||
/*
|
||||
* Were one or more calls using this slot interrupted?
|
||||
* If the server never received the request, then our
|
||||
* transmitted slot sequence number may be too high.
|
||||
* transmitted slot sequence number may be too high. However,
|
||||
* if the server did receive the request then it might
|
||||
* accidentally give us a reply with a mismatched operation.
|
||||
* We can sort this out by sending a lone sequence operation
|
||||
* to the server on the same slot.
|
||||
*/
|
||||
if ((s32)(slot->seq_nr - slot->seq_nr_last_acked) > 1) {
|
||||
slot->seq_nr--;
|
||||
if (task->tk_msg.rpc_proc != &nfs4_procedures[NFSPROC4_CLNT_SEQUENCE]) {
|
||||
nfs4_probe_sequence(clp, task->tk_msg.rpc_cred, slot);
|
||||
res->sr_slot = NULL;
|
||||
}
|
||||
goto retry_nowait;
|
||||
}
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ static struct dentry *ovl_lookup_real_inode(struct super_block *sb,
|
|||
if (IS_ERR_OR_NULL(this))
|
||||
return this;
|
||||
|
||||
if (WARN_ON(ovl_dentry_real_at(this, layer->idx) != real)) {
|
||||
if (ovl_dentry_real_at(this, layer->idx) != real) {
|
||||
dput(this);
|
||||
this = ERR_PTR(-EIO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,13 +21,16 @@ static char ovl_whatisit(struct inode *inode, struct inode *realinode)
|
|||
return 'm';
|
||||
}
|
||||
|
||||
/* No atime modificaton nor notify on underlying */
|
||||
#define OVL_OPEN_FLAGS (O_NOATIME | FMODE_NONOTIFY)
|
||||
|
||||
static struct file *ovl_open_realfile(const struct file *file,
|
||||
struct inode *realinode)
|
||||
{
|
||||
struct inode *inode = file_inode(file);
|
||||
struct file *realfile;
|
||||
const struct cred *old_cred;
|
||||
int flags = file->f_flags | O_NOATIME | FMODE_NONOTIFY;
|
||||
int flags = file->f_flags | OVL_OPEN_FLAGS;
|
||||
|
||||
old_cred = ovl_override_creds(inode->i_sb);
|
||||
realfile = open_with_fake_path(&file->f_path, flags, realinode,
|
||||
|
|
@ -48,8 +51,7 @@ static int ovl_change_flags(struct file *file, unsigned int flags)
|
|||
struct inode *inode = file_inode(file);
|
||||
int err;
|
||||
|
||||
/* No atime modificaton on underlying */
|
||||
flags |= O_NOATIME | FMODE_NONOTIFY;
|
||||
flags |= OVL_OPEN_FLAGS;
|
||||
|
||||
/* If some flag changed that cannot be changed then something's amiss */
|
||||
if (WARN_ON((file->f_flags ^ flags) & ~OVL_SETFL_MASK))
|
||||
|
|
@ -102,7 +104,7 @@ static int ovl_real_fdget_meta(const struct file *file, struct fd *real,
|
|||
}
|
||||
|
||||
/* Did the flags change since open? */
|
||||
if (unlikely((file->f_flags ^ real->file->f_flags) & ~O_NOATIME))
|
||||
if (unlikely((file->f_flags ^ real->file->f_flags) & ~OVL_OPEN_FLAGS))
|
||||
return ovl_change_flags(real->file, file->f_flags);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1281,6 +1281,18 @@ static bool ovl_lower_uuid_ok(struct ovl_fs *ofs, const uuid_t *uuid)
|
|||
if (!ofs->config.nfs_export && !ofs->upper_mnt)
|
||||
return true;
|
||||
|
||||
/*
|
||||
* We allow using single lower with null uuid for index and nfs_export
|
||||
* for example to support those features with single lower squashfs.
|
||||
* To avoid regressions in setups of overlay with re-formatted lower
|
||||
* squashfs, do not allow decoding origin with lower null uuid unless
|
||||
* user opted-in to one of the new features that require following the
|
||||
* lower inode of non-dir upper.
|
||||
*/
|
||||
if (!ofs->config.index && !ofs->config.metacopy && !ofs->config.xino &&
|
||||
uuid_is_null(uuid))
|
||||
return false;
|
||||
|
||||
for (i = 0; i < ofs->numlowerfs; i++) {
|
||||
/*
|
||||
* We use uuid to associate an overlay lower file handle with a
|
||||
|
|
@ -1367,14 +1379,23 @@ static int ovl_get_lower_layers(struct super_block *sb, struct ovl_fs *ofs,
|
|||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
* Check if lower root conflicts with this overlay layers before
|
||||
* checking if it is in-use as upperdir/workdir of "another"
|
||||
* mount, because we do not bother to check in ovl_is_inuse() if
|
||||
* the upperdir/workdir is in fact in-use by our
|
||||
* upperdir/workdir.
|
||||
*/
|
||||
err = ovl_setup_trap(sb, stack[i].dentry, &trap, "lowerdir");
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
if (ovl_is_inuse(stack[i].dentry)) {
|
||||
err = ovl_report_in_use(ofs, "lowerdir");
|
||||
if (err)
|
||||
if (err) {
|
||||
iput(trap);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
mnt = clone_private_mount(&stack[i]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue