mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org,
	"Pavel Shilovsky" <pshilov@microsoft.com>,
	"Sachin Prabhu" <sprabhu@redhat.com>
Subject: [PATCH 3.16 135/178] CIFS: Handle mismatched open calls
Date: Sun, 16 Jul 2017 14:56:46 +0100	[thread overview]
Message-ID: <lsq.1500213406.69352680@decadent.org.uk> (raw)
In-Reply-To: <lsq.1500213404.466735591@decadent.org.uk>

3.16.46-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Pavel Shilovsky <pshilov@microsoft.com>

commit 38bd49064a1ecb67baad33598e3d824448ab11ec upstream.

A signal can interrupt a SendReceive call which result in incoming
responses to the call being ignored. This is a problem for calls such as
open which results in the successful response being ignored. This
results in an open file resource on the server.

The patch looks into responses which were cancelled after being sent and
in case of successful open closes the open fids.

For this patch, the check is only done in SendReceive2()

RH-bz: 1403319

Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Acked-by: Sachin Prabhu <sprabhu@redhat.com>
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
[bwh: For 3.16, drop initialisation of smb31_operations.handle_cancelled_mid]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -223,6 +223,7 @@ struct smb_version_operations {
 	/* verify the message */
 	int (*check_message)(char *, unsigned int);
 	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);
 	/* process transaction2 response */
@@ -1246,12 +1247,19 @@ struct mid_q_entry {
 	void *callback_data;	  /* general purpose pointer for callback */
 	void *resp_buf;		/* pointer to received SMB header */
 	int mid_state;	/* wish this were enum but can not pass to wait_event */
+	unsigned int mid_flags;
 	__le16 command;		/* smb command code */
 	bool large_buf:1;	/* if valid response, is pointer to large buf */
 	bool multiRsp:1;	/* multiple trans2 responses for one request  */
 	bool multiEnd:1;	/* both received */
 };
 
+struct close_cancelled_open {
+	struct cifs_fid         fid;
+	struct cifs_tcon        *tcon;
+	struct work_struct      work;
+};
+
 /*	Make code in transport.c a little cleaner by moving
 	update of optional stats into function below */
 #ifdef CONFIG_CIFS_STATS2
@@ -1383,6 +1391,9 @@ static inline void free_dfs_info_array(s
 #define   MID_RESPONSE_MALFORMED 0x10
 #define   MID_SHUTDOWN		 0x20
 
+/* Flags */
+#define   MID_WAIT_CANCELLED	 1 /* Cancelled while waiting for response */
+
 /* Types of response buffer returned from SendReceive2 */
 #define   CIFS_NO_BUFFER        0    /* Response buffer not returned */
 #define   CIFS_SMALL_BUFFER     1
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -1427,6 +1427,8 @@ cifs_readv_discard(struct TCP_Server_Inf
 
 	length = discard_remaining_data(server);
 	dequeue_mid(mid, rdata->result);
+	mid->resp_buf = server->smallbuf;
+	server->smallbuf = NULL;
 	return length;
 }
 
@@ -1542,6 +1544,8 @@ cifs_readv_receive(struct TCP_Server_Inf
 		return cifs_readv_discard(server, mid);
 
 	dequeue_mid(mid, false);
+	mid->resp_buf = server->smallbuf;
+	server->smallbuf = NULL;
 	return length;
 }
 
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -911,10 +911,19 @@ cifs_demultiplex_thread(void *p)
 
 		server->lstrp = jiffies;
 		if (mid_entry != NULL) {
+			if ((mid_entry->mid_flags & MID_WAIT_CANCELLED) &&
+			     mid_entry->mid_state == MID_RESPONSE_RECEIVED &&
+					server->ops->handle_cancelled_mid)
+				server->ops->handle_cancelled_mid(
+							mid_entry->resp_buf,
+							server);
+
 			if (!mid_entry->multiRsp || mid_entry->multiEnd)
 				mid_entry->callback(mid_entry);
-		} else if (!server->ops->is_oplock_break ||
-			   !server->ops->is_oplock_break(buf, server)) {
+		} else if (server->ops->is_oplock_break &&
+			   server->ops->is_oplock_break(buf, server)) {
+			cifs_dbg(FYI, "Received oplock break\n");
+		} else {
 			cifs_dbg(VFS, "No task to wake, unknown frame received! NumMids %d\n",
 				 atomic_read(&midCount));
 			cifs_dump_mem("Received Data is: ", buf,
--- a/fs/cifs/smb2misc.c
+++ b/fs/cifs/smb2misc.c
@@ -607,3 +607,47 @@ smb2_is_valid_oplock_break(char *buffer,
 	cifs_dbg(FYI, "Can not process oplock break for non-existent connection\n");
 	return false;
 }
+
+void
+smb2_cancelled_close_fid(struct work_struct *work)
+{
+	struct close_cancelled_open *cancelled = container_of(work,
+					struct close_cancelled_open, work);
+
+	cifs_dbg(VFS, "Close unmatched open\n");
+
+	SMB2_close(0, cancelled->tcon, cancelled->fid.persistent_fid,
+		   cancelled->fid.volatile_fid);
+	cifs_put_tcon(cancelled->tcon);
+	kfree(cancelled);
+}
+
+int
+smb2_handle_cancelled_mid(char *buffer, struct TCP_Server_Info *server)
+{
+	struct smb2_hdr *hdr = (struct smb2_hdr *)buffer;
+	struct smb2_create_rsp *rsp = (struct smb2_create_rsp *)buffer;
+	struct cifs_tcon *tcon;
+	struct close_cancelled_open *cancelled;
+
+	if (hdr->Command != SMB2_CREATE || hdr->Status != STATUS_SUCCESS)
+		return 0;
+
+	cancelled = kzalloc(sizeof(*cancelled), GFP_KERNEL);
+	if (!cancelled)
+		return -ENOMEM;
+
+	tcon = smb2_find_smb_tcon(server, hdr->SessionId, hdr->TreeId);
+	if (!tcon) {
+		kfree(cancelled);
+		return -ENOENT;
+	}
+
+	cancelled->fid.persistent_fid = rsp->PersistentFileId;
+	cancelled->fid.volatile_fid = rsp->VolatileFileId;
+	cancelled->tcon = tcon;
+	INIT_WORK(&cancelled->work, smb2_cancelled_close_fid);
+	queue_work(cifsiod_wq, &cancelled->work);
+
+	return 0;
+}
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -1163,6 +1163,7 @@ struct smb_version_operations smb20_oper
 	.clear_stats = smb2_clear_stats,
 	.print_stats = smb2_print_stats,
 	.is_oplock_break = smb2_is_valid_oplock_break,
+	.handle_cancelled_mid = smb2_handle_cancelled_mid,
 	.downgrade_oplock = smb2_downgrade_oplock,
 	.need_neg = smb2_need_neg,
 	.negotiate = smb2_negotiate,
@@ -1239,6 +1240,7 @@ struct smb_version_operations smb21_oper
 	.clear_stats = smb2_clear_stats,
 	.print_stats = smb2_print_stats,
 	.is_oplock_break = smb2_is_valid_oplock_break,
+	.handle_cancelled_mid = smb2_handle_cancelled_mid,
 	.downgrade_oplock = smb2_downgrade_oplock,
 	.need_neg = smb2_need_neg,
 	.negotiate = smb2_negotiate,
@@ -1316,6 +1318,7 @@ struct smb_version_operations smb30_oper
 	.print_stats = smb2_print_stats,
 	.dump_share_caps = smb2_dump_share_caps,
 	.is_oplock_break = smb2_is_valid_oplock_break,
+	.handle_cancelled_mid = smb2_handle_cancelled_mid,
 	.downgrade_oplock = smb2_downgrade_oplock,
 	.need_neg = smb2_need_neg,
 	.negotiate = smb2_negotiate,
--- a/fs/cifs/smb2proto.h
+++ b/fs/cifs/smb2proto.h
@@ -47,6 +47,10 @@ extern struct mid_q_entry *smb2_setup_re
 			      struct smb_rqst *rqst);
 extern struct mid_q_entry *smb2_setup_async_request(
 			struct TCP_Server_Info *server, struct smb_rqst *rqst);
+extern struct cifs_ses *smb2_find_smb_ses(struct TCP_Server_Info *server,
+					   __u64 ses_id);
+extern struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server,
+						__u64 ses_id, __u32  tid);
 extern int smb2_calc_signature(struct smb_rqst *rqst,
 				struct TCP_Server_Info *server);
 extern int smb3_calc_signature(struct smb_rqst *rqst,
@@ -151,6 +155,9 @@ extern int SMB2_set_compression(const un
 extern int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon,
 			     const u64 persistent_fid, const u64 volatile_fid,
 			     const __u8 oplock_level);
+extern int smb2_handle_cancelled_mid(char *buffer,
+					struct TCP_Server_Info *server);
+void smb2_cancelled_close_fid(struct work_struct *work);
 extern int SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon,
 			 u64 persistent_file_id, u64 volatile_file_id,
 			 struct kstatfs *FSData);
--- a/fs/cifs/smb2transport.c
+++ b/fs/cifs/smb2transport.c
@@ -115,22 +115,68 @@ smb3_crypto_shash_allocate(struct TCP_Se
 }
 
 static struct cifs_ses *
-smb2_find_smb_ses(struct smb2_hdr *smb2hdr, struct TCP_Server_Info *server)
+smb2_find_smb_ses_unlocked(struct TCP_Server_Info *server, __u64 ses_id)
 {
 	struct cifs_ses *ses;
 
-	spin_lock(&cifs_tcp_ses_lock);
 	list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
-		if (ses->Suid != smb2hdr->SessionId)
+		if (ses->Suid != ses_id)
 			continue;
-		spin_unlock(&cifs_tcp_ses_lock);
 		return ses;
 	}
+
+	return NULL;
+}
+
+struct cifs_ses *
+smb2_find_smb_ses(struct TCP_Server_Info *server, __u64 ses_id)
+{
+	struct cifs_ses *ses;
+
+	spin_lock(&cifs_tcp_ses_lock);
+	ses = smb2_find_smb_ses_unlocked(server, ses_id);
 	spin_unlock(&cifs_tcp_ses_lock);
 
+	return ses;
+}
+
+static struct cifs_tcon *
+smb2_find_smb_sess_tcon_unlocked(struct cifs_ses *ses, __u32  tid)
+{
+	struct cifs_tcon *tcon;
+
+	list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
+		if (tcon->tid != tid)
+			continue;
+		++tcon->tc_count;
+		return tcon;
+	}
+
 	return NULL;
 }
 
+/*
+ * Obtain tcon corresponding to the tid in the given
+ * cifs_ses
+ */
+
+struct cifs_tcon *
+smb2_find_smb_tcon(struct TCP_Server_Info *server, __u64 ses_id, __u32 tid)
+{
+	struct cifs_ses *ses;
+	struct cifs_tcon *tcon;
+
+	spin_lock(&cifs_tcp_ses_lock);
+	ses = smb2_find_smb_ses_unlocked(server, ses_id);
+	if (!ses) {
+		spin_unlock(&cifs_tcp_ses_lock);
+		return NULL;
+	}
+	tcon = smb2_find_smb_sess_tcon_unlocked(ses, tid);
+	spin_unlock(&cifs_tcp_ses_lock);
+
+	return tcon;
+}
 
 int
 smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
@@ -143,7 +189,7 @@ smb2_calc_signature(struct smb_rqst *rqs
 	struct smb2_hdr *smb2_pdu = (struct smb2_hdr *)iov[0].iov_base;
 	struct cifs_ses *ses;
 
-	ses = smb2_find_smb_ses(smb2_pdu, server);
+	ses = smb2_find_smb_ses(server, smb2_pdu->SessionId);
 	if (!ses) {
 		cifs_dbg(VFS, "%s: Could not find session\n", __func__);
 		return 0;
@@ -314,7 +360,7 @@ smb3_calc_signature(struct smb_rqst *rqs
 	struct smb2_hdr *smb2_pdu = (struct smb2_hdr *)iov[0].iov_base;
 	struct cifs_ses *ses;
 
-	ses = smb2_find_smb_ses(smb2_pdu, server);
+	ses = smb2_find_smb_ses(server, smb2_pdu->SessionId);
 	if (!ses) {
 		cifs_dbg(VFS, "%s: Could not find session\n", __func__);
 		return 0;
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -773,9 +773,11 @@ SendReceive2(const unsigned int xid, str
 
 	rc = wait_for_response(ses->server, midQ);
 	if (rc != 0) {
+		cifs_dbg(FYI, "Cancelling wait for mid %llu\n",	midQ->mid);
 		send_cancel(ses->server, buf, midQ);
 		spin_lock(&GlobalMid_Lock);
 		if (midQ->mid_state == MID_REQUEST_SUBMITTED) {
+			midQ->mid_flags |= MID_WAIT_CANCELLED;
 			midQ->callback = DeleteMidQEntry;
 			spin_unlock(&GlobalMid_Lock);
 			cifs_small_buf_release(buf);

  parent reply	other threads:[~2017-07-16 14:13 UTC|newest]

Thread overview: 185+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-16 13:56 [PATCH 3.16 000/178] 3.16.46-rc1 review Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 172/178] mm: Tighten x86 /dev/mem with zeroing reads Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 146/178] CIFS: remove bad_network_name flag Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 126/178] crypto: caam - fix RNG deinstantiation error checking Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 145/178] x86/vdso: Plug race between mapping and ELF header setup Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 053/178] nl80211: fix dumpit error path RTNL deadlocks Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 064/178] USB: usbtmc: add missing endpoint sanity check Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 029/178] net: bcmgenet: correct MIB access of UniMAC RUNT counters Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 011/178] usb: gadget: function: f_fs: pass companion descriptor along Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 148/178] MIPS: KGDB: Use kernel context for sleeping threads Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 174/178] xen-blkback: don't leak stack data via response ring Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 168/178] macvlan: Fix device ref leak when purging bc_queue Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 102/178] ubi/upd: Always flush after prepared for an update Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 037/178] net: wimax/i2400m: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 155/178] cifs: Do not send echoes before Negotiate is complete Ben Hutchings
2017-07-18 22:45   ` Pavel Shilovskiy
2017-07-16 13:56 ` [PATCH 3.16 156/178] KEYS: Change the name of the dead type to ".dead" to prevent user access Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 056/178] Input: iforce - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 027/178] udp: avoid ufo handling on IP payload compression packets Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 150/178] cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 012/178] USB: serial: digi_acceleport: fix OOB-event processing Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 023/178] [media] dvb-usb: don't use stack for firmware load Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 100/178] l2tp: purge socket queues in the .destruct() callback Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 153/178] ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 047/178] futex: Fix potential use-after-free in FUTEX_REQUEUE_PI Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 018/178] target/pscsi: Fix TYPE_TAPE + TYPE_MEDIMUM_CHANGER export Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 069/178] USB: serial: qcserial: add Dell DW5811e Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 038/178] dccp/tcp: fix routing redirect race Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 108/178] mmc: sdhci: Disable runtime pm when the sdio_irq is enabled Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 078/178] usb: gadget: uvc: Fix endianness mismatches Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 152/178] perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 157/178] Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 122/178] powerpc: Don't try to fix up misaligned load-with-reservation instructions Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 033/178] x86/platform/intel-mid: Correct MSI IRQ line for watchdog device Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 163/178] cx82310_eth: use skb_cow_head() to deal with cloned skbs Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 110/178] serial: mxs-auart: Fix baudrate calculation Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 099/178] xhci: Manually give back cancelled URB if we can't queue it for cancel Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 164/178] sr9700: use skb_cow_head() to deal with cloned skbs Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 013/178] scsi: aacraid: Fix typo in blink status Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 161/178] mac80211: reject ToDS broadcast data frames Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 131/178] metag/usercopy: Zero rest of buffer from copy_from_user Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 086/178] hwmon: (asus_atk0110) fix uninitialized data access Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 067/178] gpio:mcp23s08 Fixed missing interrupts Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 048/178] futex: Add missing error handling to FUTEX_REQUEUE_PI Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 111/178] l2tp: fix race in l2tp_recv_common() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 004/178] kprobes/x86: Fix kernel panic when certain exception-handling addresses are probed Ben Hutchings
2017-07-16 13:56 ` Ben Hutchings [this message]
2017-07-16 13:56 ` [PATCH 3.16 080/178] net/mlx5: Increase number of max QPs in default profile Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 024/178] [media] dvb-usb-firmware: don't do DMA on stack Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 070/178] ALSA: ctxfi: Fix the incorrect check of dma_set_mask() call Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 050/178] iio: adc: ti_am335x_adc: fix fifo overrun recovery Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 176/178] fs/exec.c: account for argv/envp pointers Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 066/178] usb: hub: Fix crash after failure to read BOS descriptor Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 003/178] scsi: libiscsi: add lock around task lists to fix list corruption regression Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 132/178] metag/usercopy: Set flags before ADDZ Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 089/178] IB/qib: fix false-postive maybe-uninitialized warning Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 171/178] ceph: fix recursion between ceph_set_acl() and __ceph_setattr() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 129/178] metag/usercopy: Fix alignment error checking Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 021/178] USB: serial: io_ti: fix NULL-deref in interrupt callback Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 095/178] virtio_balloon: prevent uninitialized variable use Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 118/178] iio: hid-sensor-attributes: Fix sensor property setting failure Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 130/178] metag/usercopy: Add early abort to copy_to_user Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 082/178] libceph: force GFP_NOIO for socket allocations Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 178/178] ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 115/178] kernel.h: make abs() work with 64-bit types Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 063/178] net: ipv6: set route type for anycast routes Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 169/178] team: fix memory leaks Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 074/178] bpf: try harder on clones when writing into skb Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 154/178] p9_client_readdir() fix Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 109/178] serial: mxs-auart: fix baud rate range Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 022/178] USB: serial: safe_serial: fix information leak in completion handler Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 177/178] ALSA: timer: Fix race between read and ioctl Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 085/178] KVM: kvm_io_bus_unregister_dev() should never fail Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 083/178] xen/acpi: upload PM state from init-domain to Xen Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 090/178] ext4: lock the xattr block before checksuming it Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 054/178] perf/core: Fix event inheritance on fork() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 093/178] powerpc: Disable HFSCR[TM] if TM is not supported Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 005/178] KVM: s390: Fix guest migration for huge guests resulting in panic Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 059/178] Input: yealink - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 032/178] net: bcmgenet: add begin/complete ethtool ops Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 058/178] Input: ims-pcu - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 142/178] l2tp: don't mask errors in pppol2tp_setsockopt() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 015/178] Input: i8042 - add noloop quirk for Dell Embedded Box PC 3000 Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 025/178] USB: iowarrior: fix NULL-deref in write Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 175/178] char: lp: fix possible integer overflow in lp_setup() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 049/178] ext4: mark inode dirty after converting inline directory Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 113/178] l2tp: fix duplicate session creation Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 165/178] net: tc35815: move free after the dereference Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 124/178] powerpc/kernel: Use kprobe blacklist for asm functions Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 046/178] mmc: sdhci-of-arasan: fix incorrect timeout clock Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 170/178] ipv6: move stub initialization after ipv6 setup completion Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 147/178] s390/mm: fix CMMA vs KSM vs others Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 159/178] ACPI / power: Avoid maybe-uninitialized warning Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 014/178] libceph: don't set weight to IN when OSD is destroyed Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 104/178] drm/vmwgfx: Type-check lookups of fence objects Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 020/178] MIPS: End spinlocks with .insn Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 042/178] uwb: hwa-rc: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 051/178] net: properly release sk_frag.page Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 114/178] l2tp: take a reference on sessions used in genetlink handlers Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 097/178] ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 061/178] Input: kbtab - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 106/178] drm/ttm, drm/vmwgfx: Relax permission checking when opening surfaces Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 120/178] af_key: Add lock to key dump Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 138/178] xen, fbfront: fix connecting to backend Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 035/178] ipv6: make ECMP route replacement less greedy Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 107/178] drm/vmwgfx: Remove getparam error message Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 072/178] ALSA: seq: Fix racy cell insertions during snd_seq_pool_done() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 136/178] Reset TreeId to zero on SMB2 TREE_CONNECT Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 123/178] l2tp: take reference on sessions being dumped Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 117/178] iio: core: Fix IIO_VAL_FRACTIONAL_LOG2 for negative values Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 068/178] perf symbols: Fix symbols__fixup_end heuristic for corner cases Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 039/178] USB: idmouse: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 073/178] net: unix: properly re-increment inflight counter of GC discarded candidates Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 162/178] smsc75xx: use skb_cow_head() to deal with cloned skbs Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 127/178] ring-buffer: Fix return value check in test_ringbuffer() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 010/178] usb: dwc3: gadget: make Set Endpoint Configuration macros safe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 125/178] powerpc/64: Fix flush_(d|i)cache_range() called from modules Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 026/178] md/raid1/10: fix potential deadlock Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 031/178] net: bcmgenet: Power up the internal PHY before probing the MII Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 043/178] uwb: i1480-dfu: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 151/178] zram: do not use copy_page with non-page aligned address Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 017/178] scsi: lpfc: Add shutdown method for kexec Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 139/178] scsi: sr: Sanity check returned mode data Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 019/178] target: Fix VERIFY_16 handling in sbc_parse_cdb Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 007/178] batman-adv: Keep fragments equally sized Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 119/178] iscsi-target: Drop work-around for legacy GlobalSAN initiator Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 141/178] ptrace: fix PTRACE_LISTEN race corrupting task->state Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 094/178] virtio_balloon: init 1st buffer in stats vq Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 040/178] USB: uss720: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 041/178] USB: wusbcore: " Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 084/178] KVM: x86: clear bus pointer when destroyed Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 101/178] s390/uaccess: get_user() should zero on failure (again) Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 076/178] bna: integer overflow bug in debugfs Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 006/178] tracing: Add #undef to fix compile error Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 103/178] iscsi-target: Fix TMR reference leak during session shutdown Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 140/178] scsi: sd: Fix capacity calculation with 32-bit sector_t Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 055/178] mmc: ushc: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 098/178] ACPI: Fix incompatibility with mcount-based function graph tracing Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 034/178] NFSv4: fix a reference leak caused WARNING messages Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 160/178] ring-buffer: Have ring_buffer_iter_empty() return true when empty Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 096/178] ACPI: Do not create a platform_device for IOAPIC/IOxAPIC Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 002/178] xen: do not re-use pirq number cached in pci device msi msg data Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 008/178] ARM: dts: BCM5301X: Correct GIC_PPI interrupt flags Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 105/178] drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 087/178] ALSA: seq: Fix race during FIFO resize Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 060/178] Input: hanwang - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 166/178] net: ipv6: send unsolicited NA if enabled for all interfaces Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 091/178] USB: fix linked-list corruption in rh_call_control() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 044/178] usb-core: Add LINEAR_FRAME_INTR_BINTERVAL USB quirk Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 137/178] virtio_console: fix uninitialized variable use Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 121/178] kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd Ben Hutchings
2017-07-17 15:12   ` Suzuki K Poulose
2017-07-18 16:19     ` Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 075/178] sch_dsmark: fix invalid skb_cow() usage Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 158/178] tracing: Allocate the snapshot buffer before enabling probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 133/178] metag/usercopy: Fix src fixup in from user rapf loops Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 167/178] Input: i8042 - add Clevo P650RS to the i8042 reset list Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 062/178] Input: sur40 - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 071/178] scsi: libsas: fix ata xfer length Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 143/178] l2tp: don't mask errors in pppol2tp_getsockopt() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 016/178] powerpc/boot: Fix zImage TOC alignment Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 009/178] net: phy: Do not perform software reset for Generic PHY Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 001/178] xfrm: policy: init locks early Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 081/178] mmc: sdhci: Do not disable interrupts while waiting for clock Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 092/178] netfilter: nf_nat_snmp: Fix panic when snmp_trap_helper fails to register Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 057/178] Input: cm109 - validate number of endpoints before using them Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 128/178] metag/usercopy: Drop unused macros Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 134/178] metag/usercopy: Add missing fixups Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 052/178] sched/loadavg: Avoid loadavg spikes caused by delayed NO_HZ accounting Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 030/178] net: bcmgenet: synchronize irq0 status between the isr and task Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 116/178] include/linux/kernel.h: change abs() macro so it uses consistent return type Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 144/178] x86/vdso: Ensure vdso32_enabled gets set to valid values only Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 077/178] s390/decompressor: fix initrd corruption caused by bss clear Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 112/178] l2tp: ensure session can't get removed during pppol2tp_session_ioctl() Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 065/178] ACM gadget: fix endianness in notifications Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 079/178] usb: gadget: f_uvc: Fix SuperSpeed companion descriptor's wBytesPerInterval Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 173/178] drm/vmwgfx: Make sure backup_handle is always valid Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 045/178] USB: serial: option: add Quectel UC15, UC20, EC21, and EC25 modems Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 088/178] net: phy: handle state correctly in phy_stop_machine Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 036/178] isdn/gigaset: fix NULL-deref at probe Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 028/178] net: bcmgenet: correct the RBUF_OVFL_CNT and RBUF_ERR_CNT MIB values Ben Hutchings
2017-07-16 13:56 ` [PATCH 3.16 149/178] ALSA: seq: Don't break snd_use_lock_sync() loop by timeout Ben Hutchings
2017-07-16 14:31 ` [PATCH 3.16 000/178] 3.16.46-rc1 review Guenter Roeck
2017-07-16 16:31   ` Ben Hutchings
2017-07-16 16:33 ` Ben Hutchings

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=lsq.1500213406.69352680@decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pshilov@microsoft.com \
    --cc=sprabhu@redhat.com \
    --cc=stable@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®