From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Pavel Shilovsky <pshilov@microsoft.com>,
Steve French <stfrench@microsoft.com>,
Sasha Levin <sashal@kernel.org>,
linux-cifs@vger.kernel.org, samba-technical@lists.samba.org
Subject: [PATCH AUTOSEL 4.19 038/206] CIFS: Properly process SMB3 lease breaks
Date: Thu, 17 Sep 2020 22:05:14 -0400 [thread overview]
Message-ID: <20200918020802.2065198-38-sashal@kernel.org> (raw)
In-Reply-To: <20200918020802.2065198-1-sashal@kernel.org>
From: Pavel Shilovsky <pshilov@microsoft.com>
[ Upstream commit 9bd4540836684013aaad6070a65d6fcdd9006625 ]
Currenly we doesn't assume that a server may break a lease
from RWH to RW which causes us setting a wrong lease state
on a file and thus mistakenly flushing data and byte-range
locks and purging cached data on the client. This leads to
performance degradation because subsequent IOs go directly
to the server.
Fix this by propagating new lease state and epoch values
to the oplock break handler through cifsFileInfo structure
and removing the use of cifsInodeInfo flags for that. It
allows to avoid some races of several lease/oplock breaks
using those flags in parallel.
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/cifs/cifsglob.h | 9 ++++++---
fs/cifs/file.c | 10 +++++++---
fs/cifs/misc.c | 17 +++--------------
fs/cifs/smb1ops.c | 8 +++-----
fs/cifs/smb2misc.c | 32 +++++++-------------------------
fs/cifs/smb2ops.c | 44 ++++++++++++++++++++++++++++++--------------
fs/cifs/smb2pdu.h | 2 +-
7 files changed, 57 insertions(+), 65 deletions(-)
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 71c2dd0c7f038..2c632793c88c5 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -259,8 +259,9 @@ struct smb_version_operations {
int (*check_message)(char *, unsigned int, struct TCP_Server_Info *);
bool (*is_oplock_break)(char *, struct TCP_Server_Info *);
int (*handle_cancelled_mid)(char *, struct TCP_Server_Info *);
- void (*downgrade_oplock)(struct TCP_Server_Info *,
- struct cifsInodeInfo *, bool);
+ void (*downgrade_oplock)(struct TCP_Server_Info *server,
+ struct cifsInodeInfo *cinode, __u32 oplock,
+ unsigned int epoch, bool *purge_cache);
/* process transaction2 response */
bool (*check_trans2)(struct mid_q_entry *, struct TCP_Server_Info *,
char *, int);
@@ -1160,6 +1161,8 @@ struct cifsFileInfo {
unsigned int f_flags;
bool invalidHandle:1; /* file closed via session abend */
bool oplock_break_cancelled:1;
+ unsigned int oplock_epoch; /* epoch from the lease break */
+ __u32 oplock_level; /* oplock/lease level from the lease break */
int count;
spinlock_t file_info_lock; /* protects four flag/count fields above */
struct mutex fh_mutex; /* prevents reopen race after dead ses*/
@@ -1300,7 +1303,7 @@ struct cifsInodeInfo {
unsigned int epoch; /* used to track lease state changes */
#define CIFS_INODE_PENDING_OPLOCK_BREAK (0) /* oplock break in progress */
#define CIFS_INODE_PENDING_WRITERS (1) /* Writes in progress */
-#define CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2 (2) /* Downgrade oplock to L2 */
+#define CIFS_INODE_FLAG_UNUSED (2) /* Unused flag */
#define CIFS_INO_DELETE_PENDING (3) /* delete pending on server */
#define CIFS_INO_INVALID_MAPPING (4) /* pagecache is invalid */
#define CIFS_INO_LOCK (5) /* lock bit for synchronization */
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 128cbd69911b4..e78b52c582f18 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -4185,12 +4185,13 @@ void cifs_oplock_break(struct work_struct *work)
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
struct TCP_Server_Info *server = tcon->ses->server;
int rc = 0;
+ bool purge_cache = false;
wait_on_bit(&cinode->flags, CIFS_INODE_PENDING_WRITERS,
TASK_UNINTERRUPTIBLE);
- server->ops->downgrade_oplock(server, cinode,
- test_bit(CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2, &cinode->flags));
+ server->ops->downgrade_oplock(server, cinode, cfile->oplock_level,
+ cfile->oplock_epoch, &purge_cache);
if (!CIFS_CACHE_WRITE(cinode) && CIFS_CACHE_READ(cinode) &&
cifs_has_mand_locks(cinode)) {
@@ -4205,18 +4206,21 @@ void cifs_oplock_break(struct work_struct *work)
else
break_lease(inode, O_WRONLY);
rc = filemap_fdatawrite(inode->i_mapping);
- if (!CIFS_CACHE_READ(cinode)) {
+ if (!CIFS_CACHE_READ(cinode) || purge_cache) {
rc = filemap_fdatawait(inode->i_mapping);
mapping_set_error(inode->i_mapping, rc);
cifs_zap_mapping(inode);
}
cifs_dbg(FYI, "Oplock flush inode %p rc %d\n", inode, rc);
+ if (CIFS_CACHE_WRITE(cinode))
+ goto oplock_break_ack;
}
rc = cifs_push_locks(cfile);
if (rc)
cifs_dbg(VFS, "Push locks rc = %d\n", rc);
+oplock_break_ack:
/*
* releasing stale oplock after recent reconnect of smb session using
* a now incorrect file handle is not a data integrity issue but do
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index e45f8e321371c..dd67f56ea61e5 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -477,21 +477,10 @@ is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv)
set_bit(CIFS_INODE_PENDING_OPLOCK_BREAK,
&pCifsInode->flags);
- /*
- * Set flag if the server downgrades the oplock
- * to L2 else clear.
- */
- if (pSMB->OplockLevel)
- set_bit(
- CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &pCifsInode->flags);
- else
- clear_bit(
- CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &pCifsInode->flags);
-
- cifs_queue_oplock_break(netfile);
+ netfile->oplock_epoch = 0;
+ netfile->oplock_level = pSMB->OplockLevel;
netfile->oplock_break_cancelled = false;
+ cifs_queue_oplock_break(netfile);
spin_unlock(&tcon->open_file_lock);
spin_unlock(&cifs_tcp_ses_lock);
diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
index c7f0c85664425..0b7f924512848 100644
--- a/fs/cifs/smb1ops.c
+++ b/fs/cifs/smb1ops.c
@@ -381,12 +381,10 @@ coalesce_t2(char *second_buf, struct smb_hdr *target_hdr)
static void
cifs_downgrade_oplock(struct TCP_Server_Info *server,
- struct cifsInodeInfo *cinode, bool set_level2)
+ struct cifsInodeInfo *cinode, __u32 oplock,
+ unsigned int epoch, bool *purge_cache)
{
- if (set_level2)
- cifs_set_oplock_level(cinode, OPLOCK_READ);
- else
- cifs_set_oplock_level(cinode, 0);
+ cifs_set_oplock_level(cinode, oplock);
}
static bool
diff --git a/fs/cifs/smb2misc.c b/fs/cifs/smb2misc.c
index 2fc96f7923ee5..7d875a47d0226 100644
--- a/fs/cifs/smb2misc.c
+++ b/fs/cifs/smb2misc.c
@@ -550,7 +550,7 @@ smb2_tcon_has_lease(struct cifs_tcon *tcon, struct smb2_lease_break *rsp)
cifs_dbg(FYI, "found in the open list\n");
cifs_dbg(FYI, "lease key match, lease break 0x%x\n",
- le32_to_cpu(rsp->NewLeaseState));
+ lease_state);
if (ack_req)
cfile->oplock_break_cancelled = false;
@@ -559,17 +559,8 @@ smb2_tcon_has_lease(struct cifs_tcon *tcon, struct smb2_lease_break *rsp)
set_bit(CIFS_INODE_PENDING_OPLOCK_BREAK, &cinode->flags);
- /*
- * Set or clear flags depending on the lease state being READ.
- * HANDLE caching flag should be added when the client starts
- * to defer closing remote file handles with HANDLE leases.
- */
- if (lease_state & SMB2_LEASE_READ_CACHING_HE)
- set_bit(CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &cinode->flags);
- else
- clear_bit(CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &cinode->flags);
+ cfile->oplock_epoch = le16_to_cpu(rsp->Epoch);
+ cfile->oplock_level = lease_state;
cifs_queue_oplock_break(cfile);
return true;
@@ -599,7 +590,7 @@ smb2_tcon_find_pending_open_lease(struct cifs_tcon *tcon,
cifs_dbg(FYI, "found in the pending open list\n");
cifs_dbg(FYI, "lease key match, lease break 0x%x\n",
- le32_to_cpu(rsp->NewLeaseState));
+ lease_state);
open->oplock = lease_state;
}
@@ -732,18 +723,9 @@ smb2_is_valid_oplock_break(char *buffer, struct TCP_Server_Info *server)
set_bit(CIFS_INODE_PENDING_OPLOCK_BREAK,
&cinode->flags);
- /*
- * Set flag if the server downgrades the oplock
- * to L2 else clear.
- */
- if (rsp->OplockLevel)
- set_bit(
- CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &cinode->flags);
- else
- clear_bit(
- CIFS_INODE_DOWNGRADE_OPLOCK_TO_L2,
- &cinode->flags);
+ cfile->oplock_epoch = 0;
+ cfile->oplock_level = rsp->OplockLevel;
+
spin_unlock(&cfile->file_info_lock);
cifs_queue_oplock_break(cfile);
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 2a523139a05fb..947a40069d246 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -2358,22 +2358,38 @@ static long smb3_fallocate(struct file *file, struct cifs_tcon *tcon, int mode,
static void
smb2_downgrade_oplock(struct TCP_Server_Info *server,
- struct cifsInodeInfo *cinode, bool set_level2)
+ struct cifsInodeInfo *cinode, __u32 oplock,
+ unsigned int epoch, bool *purge_cache)
{
- if (set_level2)
- server->ops->set_oplock_level(cinode, SMB2_OPLOCK_LEVEL_II,
- 0, NULL);
- else
- server->ops->set_oplock_level(cinode, 0, 0, NULL);
+ server->ops->set_oplock_level(cinode, oplock, 0, NULL);
}
static void
-smb21_downgrade_oplock(struct TCP_Server_Info *server,
- struct cifsInodeInfo *cinode, bool set_level2)
+smb21_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock,
+ unsigned int epoch, bool *purge_cache);
+
+static void
+smb3_downgrade_oplock(struct TCP_Server_Info *server,
+ struct cifsInodeInfo *cinode, __u32 oplock,
+ unsigned int epoch, bool *purge_cache)
{
- server->ops->set_oplock_level(cinode,
- set_level2 ? SMB2_LEASE_READ_CACHING_HE :
- 0, 0, NULL);
+ unsigned int old_state = cinode->oplock;
+ unsigned int old_epoch = cinode->epoch;
+ unsigned int new_state;
+
+ if (epoch > old_epoch) {
+ smb21_set_oplock_level(cinode, oplock, 0, NULL);
+ cinode->epoch = epoch;
+ }
+
+ new_state = cinode->oplock;
+ *purge_cache = false;
+
+ if ((old_state & CIFS_CACHE_READ_FLG) != 0 &&
+ (new_state & CIFS_CACHE_READ_FLG) == 0)
+ *purge_cache = true;
+ else if (old_state == new_state && (epoch - old_epoch > 1))
+ *purge_cache = true;
}
static void
@@ -3449,7 +3465,7 @@ struct smb_version_operations smb21_operations = {
.print_stats = smb2_print_stats,
.is_oplock_break = smb2_is_valid_oplock_break,
.handle_cancelled_mid = smb2_handle_cancelled_mid,
- .downgrade_oplock = smb21_downgrade_oplock,
+ .downgrade_oplock = smb2_downgrade_oplock,
.need_neg = smb2_need_neg,
.negotiate = smb2_negotiate,
.negotiate_wsize = smb2_negotiate_wsize,
@@ -3546,7 +3562,7 @@ struct smb_version_operations smb30_operations = {
.dump_share_caps = smb2_dump_share_caps,
.is_oplock_break = smb2_is_valid_oplock_break,
.handle_cancelled_mid = smb2_handle_cancelled_mid,
- .downgrade_oplock = smb21_downgrade_oplock,
+ .downgrade_oplock = smb3_downgrade_oplock,
.need_neg = smb2_need_neg,
.negotiate = smb2_negotiate,
.negotiate_wsize = smb2_negotiate_wsize,
@@ -3651,7 +3667,7 @@ struct smb_version_operations smb311_operations = {
.dump_share_caps = smb2_dump_share_caps,
.is_oplock_break = smb2_is_valid_oplock_break,
.handle_cancelled_mid = smb2_handle_cancelled_mid,
- .downgrade_oplock = smb21_downgrade_oplock,
+ .downgrade_oplock = smb3_downgrade_oplock,
.need_neg = smb2_need_neg,
.negotiate = smb2_negotiate,
.negotiate_wsize = smb2_negotiate_wsize,
diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
index 308c682fa4d3b..44501f8cbd75e 100644
--- a/fs/cifs/smb2pdu.h
+++ b/fs/cifs/smb2pdu.h
@@ -1209,7 +1209,7 @@ struct smb2_oplock_break {
struct smb2_lease_break {
struct smb2_sync_hdr sync_hdr;
__le16 StructureSize; /* Must be 44 */
- __le16 Reserved;
+ __le16 Epoch;
__le32 Flags;
__u8 LeaseKey[16];
__le32 CurrentLeaseState;
--
2.25.1
next prev parent reply other threads:[~2020-09-18 2:50 UTC|newest]
Thread overview: 209+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-18 2:04 [PATCH AUTOSEL 4.19 001/206] selinux: allow labeling before policy is loaded Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 002/206] media: mc-device.c: fix memleak in media_device_register_entity Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 003/206] dma-fence: Serialise signal enabling (dma_fence_enable_sw_signaling) Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 004/206] ath10k: fix array out-of-bounds access Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 005/206] ath10k: fix memory leak for tpc_stats_final Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 006/206] mm: fix double page fault on arm64 if PTE_AF is cleared Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 007/206] scsi: aacraid: fix illegal IO beyond last LBA Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 008/206] m68k: q40: Fix info-leak in rtc_ioctl Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 009/206] gma/gma500: fix a memory disclosure bug due to uninitialized bytes Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 010/206] ASoC: kirkwood: fix IRQ error handling Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 011/206] media: smiapp: Fix error handling at NVM reading Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 012/206] ata: sata_mv, avoid trigerrable BUG_ON Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 013/206] leds: mlxreg: Fix possible buffer overflow Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 014/206] PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 015/206] scsi: fnic: fix use after free Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 016/206] scsi: lpfc: Fix kernel crash at lpfc_nvme_info_show during remote port bounce Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 017/206] net: silence data-races on sk_backlog.tail Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 018/206] clk/ti/adpll: allocate room for terminating null Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 019/206] drm/amdgpu/powerplay: fix AVFS handling with custom powerplay table Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 020/206] mtd: cfi_cmdset_0002: don't free cfi->cfiq in error path of cfi_amdstd_setup() Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 021/206] mfd: mfd-core: Protect against NULL call-back function pointer Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 022/206] drm/amdgpu/powerplay/smu7: fix AVFS handling with custom powerplay table Sasha Levin
2020-09-18 2:04 ` [PATCH AUTOSEL 4.19 023/206] USB: serial: mos7840: fix probe error handling Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 024/206] tpm_crb: fix fTPM on AMD Zen+ CPUs Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 025/206] tracing: Adding NULL checks for trace_array descriptor pointer Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 026/206] bcache: fix a lost wake-up problem caused by mca_cannibalize_lock Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 027/206] dmaengine: mediatek: hsdma_probe: fixed a memory leak when devm_request_irq fails Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 028/206] RDMA/qedr: Fix potential use after free Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 029/206] RDMA/i40iw: " Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 030/206] fix dget_parent() fastpath race Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 031/206] xfs: fix attr leaf header freemap.size underflow Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 032/206] RDMA/iw_cgxb4: Fix an error handling path in 'c4iw_connect()' Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 033/206] ubi: Fix producing anchor PEBs Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 034/206] mmc: core: Fix size overflow for mmc partitions Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 035/206] gfs2: clean up iopen glock mess in gfs2_create_inode Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 036/206] scsi: pm80xx: Cleanup command when a reset times out Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 037/206] debugfs: Fix !DEBUG_FS debugfs_create_automount Sasha Levin
2020-09-18 2:05 ` Sasha Levin [this message]
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 039/206] ASoC: max98090: remove msleep in PLL unlocked workaround Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 040/206] kernel/sys.c: avoid copying possible padding bytes in copy_to_user Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 041/206] KVM: arm/arm64: vgic: Fix potential double free dist->spis in __kvm_vgic_destroy() Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 042/206] xfs: fix log reservation overflows when allocating large rt extents Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 043/206] neigh_stat_seq_next() should increase position index Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 044/206] rt_cpu_seq_next " Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 045/206] ipv6_route_seq_next " Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 046/206] seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 047/206] media: ti-vpe: cal: Restrict DMA to avoid memory corruption Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 048/206] sctp: move trace_sctp_probe_path into sctp_outq_sack Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 049/206] ACPI: EC: Reference count query handlers under lock Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 050/206] scsi: ufs: Make ufshcd_add_command_trace() easier to read Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 051/206] scsi: ufs: Fix a race condition in the tracing code Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 052/206] efi/arm: Defer probe of PCIe backed efifb on DT systems Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 053/206] dmaengine: zynqmp_dma: fix burst length configuration Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 054/206] s390/cpum_sf: Use kzalloc and minor changes Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 055/206] powerpc/powernv/ioda: Fix ref count for devices with their own PE Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 056/206] powerpc/eeh: Only dump stack once if an MMIO loop is detected Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 057/206] Bluetooth: btrtl: Use kvmalloc for FW allocations Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 058/206] tracing: Set kernel_stack's caller size properly Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 059/206] ext4: make dioread_nolock the default Sasha Levin
2020-09-18 2:58 ` Eric Biggers
2020-09-18 17:18 ` Theodore Y. Ts'o
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 060/206] ARM: 8948/1: Prevent OOB access in stacktrace Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 061/206] ar5523: Add USB ID of SMCWUSBT-G2 wireless adapter Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 062/206] ceph: ensure we have a new cap before continuing in fill_inode Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 063/206] selftests/ftrace: fix glob selftest Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 064/206] tools/power/x86/intel_pstate_tracer: changes for python 3 compatibility Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 065/206] Bluetooth: Fix refcount use-after-free issue Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 066/206] mm/swapfile.c: swap_next should increase position index Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 067/206] mm: pagewalk: fix termination condition in walk_pte_range() Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 068/206] Bluetooth: prefetch channel before killing sock Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 069/206] KVM: fix overflow of zero page refcount with ksm running Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 070/206] ALSA: hda: Clear RIRB status before reading WP Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 071/206] skbuff: fix a data race in skb_queue_len() Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 072/206] audit: CONFIG_CHANGE don't log internal bookkeeping as an event Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 073/206] selinux: sel_avc_get_stat_idx should increase position index Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 074/206] scsi: lpfc: Fix RQ buffer leakage when no IOCBs available Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 075/206] scsi: lpfc: Fix coverity errors in fmdi attribute handling Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 076/206] drm/omap: fix possible object reference leak Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 077/206] clk: stratix10: use do_div() for 64-bit calculation Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 078/206] crypto: chelsio - This fixes the kernel panic which occurs during a libkcapi test Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 079/206] mt76: clear skb pointers from rx aggregation reorder buffer during cleanup Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 080/206] ALSA: usb-audio: Don't create a mixer element with bogus volume range Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 081/206] perf test: Fix test trace+probe_vfs_getname.sh on s390 Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 082/206] RDMA/rxe: Fix configuration of atomic queue pair attributes Sasha Levin
2020-09-18 2:05 ` [PATCH AUTOSEL 4.19 083/206] KVM: x86: fix incorrect comparison in trace event Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 084/206] dmaengine: stm32-mdma: use vchan_terminate_vdesc() in .terminate_all Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 085/206] media: staging/imx: Missing assignment in imx_media_capture_device_register() Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 086/206] x86/pkeys: Add check for pkey "overflow" Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 087/206] bpf: Remove recursion prevention from rcu free callback Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 088/206] dmaengine: stm32-dma: use vchan_terminate_vdesc() in .terminate_all Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 089/206] dmaengine: tegra-apb: Prevent race conditions on channel's freeing Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 090/206] drm/amd/display: dal_ddc_i2c_payloads_create can fail causing panic Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 091/206] firmware: arm_sdei: Use cpus_read_lock() to avoid races with cpuhp Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 092/206] random: fix data races at timer_rand_state Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 093/206] bus: hisi_lpc: Fixup IO ports addresses to avoid use-after-free in host removal Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 094/206] media: go7007: Fix URB type for interrupt handling Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 095/206] Bluetooth: guard against controllers sending zero'd events Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 096/206] timekeeping: Prevent 32bit truncation in scale64_check_overflow() Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 097/206] ext4: fix a data race at inode->i_disksize Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 098/206] perf jevents: Fix leak of mapfile memory Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 099/206] mm: avoid data corruption on CoW fault into PFN-mapped VMA Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 100/206] drm/amdgpu: increase atombios cmd timeout Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 101/206] drm/amd/display: Stop if retimer is not available Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 102/206] ath10k: use kzalloc to read for ath10k_sdio_hif_diag_read Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 103/206] scsi: aacraid: Disabling TM path and only processing IOP reset Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 104/206] Bluetooth: L2CAP: handle l2cap config request during open state Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 105/206] media: tda10071: fix unsigned sign extension overflow Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 106/206] xfs: don't ever return a stale pointer from __xfs_dir3_free_read Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 107/206] xfs: mark dir corrupt when lookup-by-hash fails Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 108/206] ext4: mark block bitmap corrupted when found instead of BUGON Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 109/206] tpm: ibmvtpm: Wait for buffer to be set before proceeding Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 110/206] rtc: sa1100: fix possible race condition Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 111/206] rtc: ds1374: " Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 112/206] nfsd: Don't add locks to closed or closing open stateids Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 113/206] RDMA/cm: Remove a race freeing timewait_info Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 114/206] KVM: PPC: Book3S HV: Treat TM-related invalid form instructions on P9 like the valid ones Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 115/206] drm/msm: fix leaks if initialization fails Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 116/206] drm/msm/a5xx: Always set an OPP supported hardware value Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 117/206] tracing: Use address-of operator on section symbols Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 118/206] thermal: rcar_thermal: Handle probe error gracefully Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 119/206] perf parse-events: Fix 3 use after frees found with clang ASAN Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 120/206] serial: 8250_port: Don't service RX FIFO if throttled Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 121/206] serial: 8250_omap: Fix sleeping function called from invalid context during probe Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 122/206] serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 123/206] perf cpumap: Fix snprintf overflow check Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 124/206] cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 125/206] tools: gpio-hammer: Avoid potential overflow in main Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 126/206] nvme-multipath: do not reset on unknown status Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 127/206] nvme: Fix controller creation races with teardown flow Sasha Levin
2020-09-18 18:46 ` Sagi Grimberg
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 128/206] RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 129/206] scsi: hpsa: correct race condition in offload enabled Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 130/206] SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()' Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 131/206] svcrdma: Fix leak of transport addresses Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 132/206] PCI: Use ioremap(), not phys_to_virt() for platform ROM Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 133/206] ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 134/206] ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 135/206] PCI: pciehp: Fix MSI interrupt race Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 136/206] NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests() Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 137/206] mm/kmemleak.c: use address-of operator on section symbols Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 138/206] mm/filemap.c: clear page error before actual read Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 139/206] mm/vmscan.c: fix data races using kswapd_classzone_idx Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 140/206] nvmet-rdma: fix double free of rdma queue Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 141/206] mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 142/206] scsi: qedi: Fix termination timeouts in session logout Sasha Levin
2020-09-18 2:06 ` [PATCH AUTOSEL 4.19 143/206] serial: uartps: Wait for tx_empty in console setup Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 144/206] KVM: Remove CREATE_IRQCHIP/SET_PIT2 race Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 145/206] perf stat: Force error in fallback on :k events Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 146/206] bdev: Reduce time holding bd_mutex in sync in blkdev_close() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 147/206] drivers: char: tlclk.c: Avoid data race between init and interrupt handler Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 148/206] KVM: arm64: vgic-its: Fix memory leak on the error path of vgic_add_lpi() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 149/206] net: openvswitch: use u64 for meter bucket Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 150/206] scsi: aacraid: Fix error handling paths in aac_probe_one() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 151/206] staging:r8188eu: avoid skb_clone for amsdu to msdu conversion Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 152/206] sparc64: vcc: Fix error return code in vcc_probe() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 153/206] arm64: cpufeature: Relax checks for AArch32 support at EL[0-2] Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 154/206] dt-bindings: sound: wm8994: Correct required supplies based on actual implementaion Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 155/206] atm: fix a memory leak of vcc->user_back Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 156/206] perf parse-events: Fix memory leaks found on parse_events Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 157/206] perf mem2node: Avoid double free related to realloc Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 158/206] power: supply: max17040: Correct voltage reading Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 159/206] phy: samsung: s5pv210-usb2: Add delay after reset Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 160/206] Bluetooth: Handle Inquiry Cancel error after Inquiry Complete Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 161/206] USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 162/206] tipc: fix memory leak in service subscripting Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 163/206] tty: serial: samsung: Correct clock selection logic Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 164/206] ALSA: hda: Fix potential race in unsol event handler Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 165/206] powerpc/traps: Make unrecoverable NMIs die instead of panic Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 166/206] fuse: don't check refcount after stealing page Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 167/206] USB: EHCI: ehci-mv: fix less than zero comparison of an unsigned int Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 168/206] scsi: cxlflash: Fix error return code in cxlflash_probe() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 169/206] arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 170/206] e1000: Do not perform reset in reset_task if we are already down Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 171/206] drm/nouveau/debugfs: fix runtime pm imbalance on error Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 172/206] drm/nouveau: " Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 173/206] drm/nouveau/dispnv50: " Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 174/206] printk: handle blank console arguments passed in Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 175/206] usb: dwc3: Increase timeout for CmdAct cleared by device controller Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 176/206] btrfs: don't force read-only after error in drop snapshot Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 177/206] vfio/pci: fix memory leaks of eventfd ctx Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 178/206] perf parse-events: Fix incorrect conversion of 'if () free()' to 'zfree()' Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 179/206] perf evsel: Fix 2 memory leaks Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 180/206] perf trace: Fix the selection for architectures to generate the errno name tables Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 181/206] perf stat: Fix duration_time value for higher intervals Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 182/206] perf util: Fix memory leak of prefix_if_not_in Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 183/206] perf metricgroup: Free metric_events on error Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 184/206] perf kcore_copy: Fix module map when there are no modules loaded Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 185/206] ASoC: img-i2s-out: Fix runtime PM imbalance on error Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 186/206] wlcore: fix runtime pm imbalance in wl1271_tx_work Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 187/206] wlcore: fix runtime pm imbalance in wlcore_regdomain_config Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 188/206] mtd: rawnand: omap_elm: Fix runtime PM imbalance on error Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 189/206] PCI: tegra: " Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 190/206] ceph: fix potential race in ceph_check_caps Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 191/206] mm/swap_state: fix a data race in swapin_nr_pages Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 192/206] rapidio: avoid data race between file operation callbacks and mport_cdev_add() Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 193/206] mtd: parser: cmdline: Support MTD names containing one or more colons Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 194/206] x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 195/206] vfio/pci: Clear error and request eventfd ctx after releasing Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 196/206] cifs: Fix double add page to memcg when cifs_readpages Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 197/206] nvme: fix possible deadlock when I/O is blocked Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 198/206] scsi: libfc: Handling of extra kref Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 199/206] scsi: libfc: Skip additional kref updating work event Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 200/206] selftests/x86/syscall_nt: Clear weird flags after each test Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 201/206] vfio/pci: fix racy on error and request eventfd ctx Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 202/206] btrfs: qgroup: fix data leak caused by race between writeback and truncate Sasha Levin
2020-09-18 2:07 ` [PATCH AUTOSEL 4.19 203/206] ubi: fastmap: Free unused fastmap anchor peb during detach Sasha Levin
2020-09-18 2:08 ` [PATCH AUTOSEL 4.19 204/206] perf parse-events: Use strcmp() to compare the PMU name Sasha Levin
2020-09-18 2:08 ` [PATCH AUTOSEL 4.19 205/206] net: openvswitch: use div_u64() for 64-by-32 divisions Sasha Levin
2020-09-18 2:08 ` [PATCH AUTOSEL 4.19 206/206] nvme: explicitly update mpath disk capacity on revalidation Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200918020802.2065198-38-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pshilov@microsoft.com \
--cc=samba-technical@lists.samba.org \
--cc=stable@vger.kernel.org \
--cc=stfrench@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox