mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: lizf@kernel.org
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Daniel Borkmann <dborkman@redhat.com>,
	Vlad Yasevich <vyasevich@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Zefan Li <lizefan@huawei.com>
Subject: [PATCH 3.4 132/176] net: sctp: fix skb_over_panic when receiving malformed ASCONF chunks
Date: Thu,  9 Apr 2015 16:46:20 +0800	[thread overview]
Message-ID: <1428569224-23820-132-git-send-email-lizf@kernel.org> (raw)
In-Reply-To: <1428569028-23762-1-git-send-email-lizf@kernel.org>

From: Daniel Borkmann <dborkman@redhat.com>

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

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


commit 9de7922bc709eee2f609cd01d98aaedc4cf5ea74 upstream.

Commit 6f4c618ddb0 ("SCTP : Add paramters validity check for
ASCONF chunk") added basic verification of ASCONF chunks, however,
it is still possible to remotely crash a server by sending a
special crafted ASCONF chunk, even up to pre 2.6.12 kernels:

skb_over_panic: text:ffffffffa01ea1c3 len:31056 put:30768
 head:ffff88011bd81800 data:ffff88011bd81800 tail:0x7950
 end:0x440 dev:<NULL>
 ------------[ cut here ]------------
kernel BUG at net/core/skbuff.c:129!
[...]
Call Trace:
 <IRQ>
 [<ffffffff8144fb1c>] skb_put+0x5c/0x70
 [<ffffffffa01ea1c3>] sctp_addto_chunk+0x63/0xd0 [sctp]
 [<ffffffffa01eadaf>] sctp_process_asconf+0x1af/0x540 [sctp]
 [<ffffffff8152d025>] ? _read_unlock_bh+0x15/0x20
 [<ffffffffa01e0038>] sctp_sf_do_asconf+0x168/0x240 [sctp]
 [<ffffffffa01e3751>] sctp_do_sm+0x71/0x1210 [sctp]
 [<ffffffff8147645d>] ? fib_rules_lookup+0xad/0xf0
 [<ffffffffa01e6b22>] ? sctp_cmp_addr_exact+0x32/0x40 [sctp]
 [<ffffffffa01e8393>] sctp_assoc_bh_rcv+0xd3/0x180 [sctp]
 [<ffffffffa01ee986>] sctp_inq_push+0x56/0x80 [sctp]
 [<ffffffffa01fcc42>] sctp_rcv+0x982/0xa10 [sctp]
 [<ffffffffa01d5123>] ? ipt_local_in_hook+0x23/0x28 [iptable_filter]
 [<ffffffff8148bdc9>] ? nf_iterate+0x69/0xb0
 [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
 [<ffffffff8148bf86>] ? nf_hook_slow+0x76/0x120
 [<ffffffff81496d10>] ? ip_local_deliver_finish+0x0/0x2d0
 [<ffffffff81496ded>] ip_local_deliver_finish+0xdd/0x2d0
 [<ffffffff81497078>] ip_local_deliver+0x98/0xa0
 [<ffffffff8149653d>] ip_rcv_finish+0x12d/0x440
 [<ffffffff81496ac5>] ip_rcv+0x275/0x350
 [<ffffffff8145c88b>] __netif_receive_skb+0x4ab/0x750
 [<ffffffff81460588>] netif_receive_skb+0x58/0x60

This can be triggered e.g., through a simple scripted nmap
connection scan injecting the chunk after the handshake, for
example, ...

  -------------- INIT[ASCONF; ASCONF_ACK] ------------->
  <----------- INIT-ACK[ASCONF; ASCONF_ACK] ------------
  -------------------- COOKIE-ECHO -------------------->
  <-------------------- COOKIE-ACK ---------------------
  ------------------ ASCONF; UNKNOWN ------------------>

... where ASCONF chunk of length 280 contains 2 parameters ...

  1) Add IP address parameter (param length: 16)
  2) Add/del IP address parameter (param length: 255)

... followed by an UNKNOWN chunk of e.g. 4 bytes. Here, the
Address Parameter in the ASCONF chunk is even missing, too.
This is just an example and similarly-crafted ASCONF chunks
could be used just as well.

The ASCONF chunk passes through sctp_verify_asconf() as all
parameters passed sanity checks, and after walking, we ended
up successfully at the chunk end boundary, and thus may invoke
sctp_process_asconf(). Parameter walking is done with
WORD_ROUND() to take padding into account.

In sctp_process_asconf()'s TLV processing, we may fail in
sctp_process_asconf_param() e.g., due to removal of the IP
address that is also the source address of the packet containing
the ASCONF chunk, and thus we need to add all TLVs after the
failure to our ASCONF response to remote via helper function
sctp_add_asconf_response(), which basically invokes a
sctp_addto_chunk() adding the error parameters to the given
skb.

When walking to the next parameter this time, we proceed
with ...

  length = ntohs(asconf_param->param_hdr.length);
  asconf_param = (void *)asconf_param + length;

... instead of the WORD_ROUND()'ed length, thus resulting here
in an off-by-one that leads to reading the follow-up garbage
parameter length of 12336, and thus throwing an skb_over_panic
for the reply when trying to sctp_addto_chunk() next time,
which implicitly calls the skb_put() with that length.

Fix it by using sctp_walk_params() [ which is also used in
INIT parameter processing ] macro in the verification *and*
in ASCONF processing: it will make sure we don't spill over,
that we walk parameters WORD_ROUND()'ed. Moreover, we're being
more defensive and guard against unknown parameter types and
missized addresses.

Joint work with Vlad Yasevich.

Fixes: b896b82be4ae ("[SCTP] ADDIP: Support for processing incoming ASCONF_ACK chunks.")
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: Vlad Yasevich <vyasevich@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[lizf: Backported to 3.4: adjust context]
Signed-off-by: Zefan Li <lizefan@huawei.com>
---
 include/net/sctp/sm.h    |  6 +--
 net/sctp/sm_make_chunk.c | 99 +++++++++++++++++++++++++++---------------------
 net/sctp/sm_statefuns.c  | 18 +--------
 3 files changed, 60 insertions(+), 63 deletions(-)

diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 9148632..4d1be75 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -251,9 +251,9 @@ struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *,
 					      int, __be16);
 struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc,
 					     union sctp_addr *addr);
-int sctp_verify_asconf(const struct sctp_association *asoc,
-		       struct sctp_paramhdr *param_hdr, void *chunk_end,
-		       struct sctp_paramhdr **errp);
+bool sctp_verify_asconf(const struct sctp_association *asoc,
+			struct sctp_chunk *chunk, bool addr_param_needed,
+			struct sctp_paramhdr **errp);
 struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
 				       struct sctp_chunk *asconf);
 int sctp_process_asconf_ack(struct sctp_association *asoc,
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index adb0287..18b1e08 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -3068,50 +3068,63 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
 	return SCTP_ERROR_NO_ERROR;
 }
 
-/* Verify the ASCONF packet before we process it.  */
-int sctp_verify_asconf(const struct sctp_association *asoc,
-		       struct sctp_paramhdr *param_hdr, void *chunk_end,
-		       struct sctp_paramhdr **errp) {
-	sctp_addip_param_t *asconf_param;
+/* Verify the ASCONF packet before we process it. */
+bool sctp_verify_asconf(const struct sctp_association *asoc,
+			struct sctp_chunk *chunk, bool addr_param_needed,
+			struct sctp_paramhdr **errp)
+{
+	sctp_addip_chunk_t *addip = (sctp_addip_chunk_t *) chunk->chunk_hdr;
 	union sctp_params param;
-	int length, plen;
-
-	param.v = (sctp_paramhdr_t *) param_hdr;
-	while (param.v <= chunk_end - sizeof(sctp_paramhdr_t)) {
-		length = ntohs(param.p->length);
-		*errp = param.p;
+	bool addr_param_seen = false;
 
-		if (param.v > chunk_end - length ||
-		    length < sizeof(sctp_paramhdr_t))
-			return 0;
+	sctp_walk_params(param, addip, addip_hdr.params) {
+		size_t length = ntohs(param.p->length);
 
+		*errp = param.p;
 		switch (param.p->type) {
+		case SCTP_PARAM_ERR_CAUSE:
+			break;
+		case SCTP_PARAM_IPV4_ADDRESS:
+			if (length != sizeof(sctp_ipv4addr_param_t))
+				return false;
+			addr_param_seen = true;
+			break;
+		case SCTP_PARAM_IPV6_ADDRESS:
+			if (length != sizeof(sctp_ipv6addr_param_t))
+				return false;
+			addr_param_seen = true;
+			break;
 		case SCTP_PARAM_ADD_IP:
 		case SCTP_PARAM_DEL_IP:
 		case SCTP_PARAM_SET_PRIMARY:
-			asconf_param = (sctp_addip_param_t *)param.v;
-			plen = ntohs(asconf_param->param_hdr.length);
-			if (plen < sizeof(sctp_addip_param_t) +
-			    sizeof(sctp_paramhdr_t))
-				return 0;
+			/* In ASCONF chunks, these need to be first. */
+			if (addr_param_needed && !addr_param_seen)
+				return false;
+			length = ntohs(param.addip->param_hdr.length);
+			if (length < sizeof(sctp_addip_param_t) +
+				     sizeof(sctp_paramhdr_t))
+				return false;
 			break;
 		case SCTP_PARAM_SUCCESS_REPORT:
 		case SCTP_PARAM_ADAPTATION_LAYER_IND:
 			if (length != sizeof(sctp_addip_param_t))
-				return 0;
-
+				return false;
 			break;
 		default:
-			break;
+			/* This is unkown to us, reject! */
+			return false;
 		}
-
-		param.v += WORD_ROUND(length);
 	}
 
-	if (param.v != chunk_end)
-		return 0;
+	/* Remaining sanity checks. */
+	if (addr_param_needed && !addr_param_seen)
+		return false;
+	if (!addr_param_needed && addr_param_seen)
+		return false;
+	if (param.v != chunk->chunk_end)
+		return false;
 
-	return 1;
+	return true;
 }
 
 /* Process an incoming ASCONF chunk with the next expected serial no. and
@@ -3120,16 +3133,17 @@ int sctp_verify_asconf(const struct sctp_association *asoc,
 struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
 				       struct sctp_chunk *asconf)
 {
+	sctp_addip_chunk_t *addip = (sctp_addip_chunk_t *) asconf->chunk_hdr;
+	bool all_param_pass = true;
+	union sctp_params param;
 	sctp_addiphdr_t		*hdr;
 	union sctp_addr_param	*addr_param;
 	sctp_addip_param_t	*asconf_param;
 	struct sctp_chunk	*asconf_ack;
-
 	__be16	err_code;
 	int	length = 0;
 	int	chunk_len;
 	__u32	serial;
-	int	all_param_pass = 1;
 
 	chunk_len = ntohs(asconf->chunk_hdr->length) - sizeof(sctp_chunkhdr_t);
 	hdr = (sctp_addiphdr_t *)asconf->skb->data;
@@ -3157,9 +3171,14 @@ struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
 		goto done;
 
 	/* Process the TLVs contained within the ASCONF chunk. */
-	while (chunk_len > 0) {
+	sctp_walk_params(param, addip, addip_hdr.params) {
+		/* Skip preceeding address parameters. */
+		if (param.p->type == SCTP_PARAM_IPV4_ADDRESS ||
+		    param.p->type == SCTP_PARAM_IPV6_ADDRESS)
+			continue;
+
 		err_code = sctp_process_asconf_param(asoc, asconf,
-						     asconf_param);
+						     param.addip);
 		/* ADDIP 4.1 A7)
 		 * If an error response is received for a TLV parameter,
 		 * all TLVs with no response before the failed TLV are
@@ -3167,28 +3186,20 @@ struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
 		 * the failed response are considered unsuccessful unless
 		 * a specific success indication is present for the parameter.
 		 */
-		if (SCTP_ERROR_NO_ERROR != err_code)
-			all_param_pass = 0;
-
+		if (err_code != SCTP_ERROR_NO_ERROR)
+			all_param_pass = false;
 		if (!all_param_pass)
-			sctp_add_asconf_response(asconf_ack,
-						 asconf_param->crr_id, err_code,
-						 asconf_param);
+			sctp_add_asconf_response(asconf_ack, param.addip->crr_id,
+						 err_code, param.addip);
 
 		/* ADDIP 4.3 D11) When an endpoint receiving an ASCONF to add
 		 * an IP address sends an 'Out of Resource' in its response, it
 		 * MUST also fail any subsequent add or delete requests bundled
 		 * in the ASCONF.
 		 */
-		if (SCTP_ERROR_RSRC_LOW == err_code)
+		if (err_code == SCTP_ERROR_RSRC_LOW)
 			goto done;
-
-		/* Move to the next ASCONF param. */
-		length = ntohs(asconf_param->param_hdr.length);
-		asconf_param = (void *)asconf_param + length;
-		chunk_len -= length;
 	}
-
 done:
 	asoc->peer.addip_serial++;
 
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index 5ac33b6..a6a3006 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -3516,9 +3516,7 @@ sctp_disposition_t sctp_sf_do_asconf(const struct sctp_endpoint *ep,
 	struct sctp_chunk	*asconf_ack = NULL;
 	struct sctp_paramhdr	*err_param = NULL;
 	sctp_addiphdr_t		*hdr;
-	union sctp_addr_param	*addr_param;
 	__u32			serial;
-	int			length;
 
 	if (!sctp_vtag_verify(chunk, asoc)) {
 		sctp_add_cmd_sf(commands, SCTP_CMD_REPORT_BAD_TAG,
@@ -3543,17 +3541,8 @@ sctp_disposition_t sctp_sf_do_asconf(const struct sctp_endpoint *ep,
 	hdr = (sctp_addiphdr_t *)chunk->skb->data;
 	serial = ntohl(hdr->serial);
 
-	addr_param = (union sctp_addr_param *)hdr->params;
-	length = ntohs(addr_param->p.length);
-	if (length < sizeof(sctp_paramhdr_t))
-		return sctp_sf_violation_paramlen(ep, asoc, type, arg,
-			   (void *)addr_param, commands);
-
 	/* Verify the ASCONF chunk before processing it. */
-	if (!sctp_verify_asconf(asoc,
-			    (sctp_paramhdr_t *)((void *)addr_param + length),
-			    (void *)chunk->chunk_end,
-			    &err_param))
+	if (!sctp_verify_asconf(asoc, chunk, true, &err_param))
 		return sctp_sf_violation_paramlen(ep, asoc, type, arg,
 						  (void *)err_param, commands);
 
@@ -3670,10 +3659,7 @@ sctp_disposition_t sctp_sf_do_asconf_ack(const struct sctp_endpoint *ep,
 	rcvd_serial = ntohl(addip_hdr->serial);
 
 	/* Verify the ASCONF-ACK chunk before processing it. */
-	if (!sctp_verify_asconf(asoc,
-	    (sctp_paramhdr_t *)addip_hdr->params,
-	    (void *)asconf_ack->chunk_end,
-	    &err_param))
+	if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param))
 		return sctp_sf_violation_paramlen(ep, asoc, type, arg,
 			   (void *)err_param, commands);
 
-- 
1.9.1


  parent reply	other threads:[~2015-04-09  9:22 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-09  8:43 [PATCH 3.4 000/176] 3.4.107-rc1 review lizf
2015-04-09  8:44 ` [PATCH 3.4 001/176] spi: dw: Fix dynamic speed change lizf
2015-04-09  8:44 ` [PATCH 3.4 002/176] USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick lizf
2015-04-09  8:44 ` [PATCH 3.4 003/176] iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask lizf
2015-04-09  8:44 ` [PATCH 3.4 004/176] usb: serial: ftdi_sio: add PIDs for Matrix Orbital products lizf
2015-04-09  8:44 ` [PATCH 3.4 005/176] USB: keyspan: fix tty line-status reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 006/176] USB: keyspan: fix overrun-error reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 007/176] USB: ssu100: " lizf
2015-04-09  8:44 ` [PATCH 3.4 008/176] SUNRPC: Fix locking around callback channel reply receive lizf
2015-04-09  8:44 ` [PATCH 3.4 009/176] nfsd: Fix slot wake up race in the nfsv4.1 callback code lizf
2015-04-09  8:44 ` [PATCH 3.4 010/176] bnx2fc: do not add shared skbs to the fcoe_rx_list lizf
2015-04-09  8:44 ` [PATCH 3.4 011/176] ARM: 8216/1: xscale: correct auxiliary register in suspend/resume lizf
2015-04-09  8:44 ` [PATCH 3.4 012/176] USB: xhci: don't start a halted endpoint before its new dequeue is set lizf
2015-04-09  8:44 ` [PATCH 3.4 013/176] USB: xhci: Reset a halted endpoint immediately when we encounter a stall lizf
2015-04-09  8:44 ` [PATCH 3.4 014/176] usb: xhci: rework root port wake bits if controller isn't allowed to wakeup lizf
2015-04-09  8:44 ` [PATCH 3.4 015/176] ALSA: hda - Limit 40bit DMA for AMD HDMI controllers lizf
2015-04-09  8:44 ` [PATCH 3.4 016/176] MIPS: Loongson: Make platform serial setup always built-in lizf
2015-04-09  8:44 ` [PATCH 3.4 017/176] usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000 lizf
2015-04-09  8:44 ` [PATCH 3.4 018/176] Input: xpad - use proper endpoint type lizf
2015-04-09  8:44 ` [PATCH 3.4 019/176] powerpc/pseries: Fix endiannes issue in RTAS call from xmon lizf
2015-04-09  8:44 ` [PATCH 3.4 020/176] drm/i915: Unlock panel even when LVDS is disabled lizf
2015-04-09  8:44 ` [PATCH 3.4 021/176] AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller lizf
2015-04-09  8:44 ` [PATCH 3.4 022/176] sata_fsl: fix error handling of irq_of_parse_and_map lizf
2015-04-09  8:44 ` [PATCH 3.4 023/176] drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6 lizf
2015-04-09  8:44 ` [PATCH 3.4 024/176] mm: fix swapoff hang after page migration and fork lizf
2015-04-09  8:44 ` [PATCH 3.4 025/176] ahci: disable NCQ on Samsung pci-e SSDs on macbooks lizf
2015-04-09  8:44 ` [PATCH 3.4 026/176] ahci: disable MSI instead of " lizf
2015-04-09  8:44 ` [PATCH 3.4 027/176] ahci: disable MSI on SAMSUNG 0xa800 SSD lizf
2015-04-09  8:44 ` [PATCH 3.4 028/176] i2c: davinci: generate STP always when NACK is received lizf
2015-04-09  8:44 ` [PATCH 3.4 029/176] eCryptfs: Force RO mount when encrypted view is enabled lizf
2015-04-09  8:44 ` [PATCH 3.4 030/176] writeback: Move I_DIRTY_PAGES handling lizf
2015-04-09  8:44 ` [PATCH 3.4 031/176] writeback: fix a subtle race condition in I_DIRTY clearing lizf
2015-04-09  8:44 ` [PATCH 3.4 032/176] usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable() lizf
2015-04-09  8:44 ` [PATCH 3.4 033/176] KVM: s390: flush CPU on load control lizf
2015-04-09 10:17   ` Christian Borntraeger
2015-04-10  1:45     ` Zefan Li
2015-05-04 23:40     ` Ben Hutchings
2015-04-09  8:44 ` [PATCH 3.4 034/176] UBI: Fix invalid vfree() lizf
2015-04-09  8:44 ` [PATCH 3.4 035/176] driver core: Fix unbalanced device reference in drivers_probe lizf
2015-04-09  8:44 ` [PATCH 3.4 036/176] drbd: merge_bvec_fn: properly remap bvm->bi_bdev lizf
2015-04-09  8:44 ` [PATCH 3.4 037/176] PCI: Restore detection of read-only BARs lizf
2015-04-09 13:03   ` Myron Stowe
2015-04-10  1:44     ` Zefan Li
2015-04-09  8:44 ` [PATCH 3.4 038/176] scsi: correct return values for .eh_abort_handler implementations lizf
2015-04-09  8:44 ` [PATCH 3.4 039/176] genhd: check for int overflow in disk_expand_part_tbl() lizf
2015-04-09  8:44 ` [PATCH 3.4 040/176] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version lizf
2015-04-09  8:44 ` [PATCH 3.4 041/176] megaraid_sas: corrected return of wait_event from abort frame path lizf
2015-04-09  8:44 ` [PATCH 3.4 042/176] cdc-acm: memory leak in error case lizf
2015-04-09  8:44 ` [PATCH 3.4 043/176] USB: cdc-acm: check for valid interfaces lizf
2015-04-09  8:44 ` [PATCH 3.4 044/176] mfd: tc6393xb: Fail ohci suspend if full state restore is required lizf
2015-04-09  8:44 ` [PATCH 3.4 045/176] serial: samsung: wait for transfer completion before clock disable lizf
2015-04-09  8:44 ` [PATCH 3.4 046/176] eCryptfs: Remove buggy and unnecessary write in file name decode routine lizf
2015-04-09  8:44 ` [PATCH 3.4 047/176] ath9k_hw: fix hardware queue allocation lizf
2015-04-09  8:44 ` [PATCH 3.4 048/176] ath9k: fix BE/BK queue order lizf
2015-04-09  8:44 ` [PATCH 3.4 049/176] ath5k: fix hardware queue index assignment lizf
2015-04-09  8:44 ` [PATCH 3.4 050/176] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() lizf
2015-04-09  8:44 ` [PATCH 3.4 051/176] drm/vmwgfx: Don't use memory accounting for kernel-side fence objects lizf
2015-04-09  8:45 ` [PATCH 3.4 052/176] drm/vmwgfx: Fix fence event code lizf
2015-04-09  8:45 ` [PATCH 3.4 053/176] hp_accel: Add support for HP ZBook 15 lizf
2015-04-09  8:45 ` [PATCH 3.4 054/176] drm/radeon: check the right ring in radeon_evict_flags() lizf
2015-04-09  8:45 ` [PATCH 3.4 055/176] can: peak_usb: fix memset() usage lizf
2015-04-09  8:45 ` [PATCH 3.4 056/176] can: peak_usb: fix cleanup sequence order in case of error during init lizf
2015-04-09  8:45 ` [PATCH 3.4 057/176] ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery lizf
2015-04-09  8:45 ` [PATCH 3.4 058/176] KEYS: Fix stale key registration at error path lizf
2015-04-09  8:45 ` [PATCH 3.4 059/176] Btrfs: fix fs corruption on transaction abort if device supports discard lizf
2015-04-09  8:45 ` [PATCH 3.4 060/176] ncpfs: return proper error from NCP_IOC_SETROOT ioctl lizf
2015-04-09  8:45 ` [PATCH 3.4 061/176] x86_64, switch_to(): Load TLS descriptors before switching DS and ES lizf
2015-04-09  8:45 ` [PATCH 3.4 062/176] genirq: Prevent proc race against freeing of irq descriptors lizf
2015-04-09  8:45 ` [PATCH 3.4 063/176] x86/tls: Disallow unusual TLS segments lizf
2015-04-09  8:45 ` [PATCH 3.4 064/176] x86/tls: Don't validate lm in set_thread_area() after all lizf
2015-04-09  8:45 ` [PATCH 3.4 065/176] storvsc: ring buffer failures may result in I/O freeze lizf
2015-04-09  8:45 ` [PATCH 3.4 066/176] isofs: Fix infinite looping over CE entries lizf
2015-04-09  8:45 ` [PATCH 3.4 067/176] iscsi-target: Fail connection on short sendmsg writes lizf
2015-04-09  8:45 ` [PATCH 3.4 068/176] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC lizf
2015-04-09  8:45 ` [PATCH 3.4 069/176] ocfs2: fix journal commit deadlock lizf
2015-04-09  8:45 ` [PATCH 3.4 070/176] isofs: Fix unchecked printing of ER records lizf
2015-04-09  8:45 ` [PATCH 3.4 071/176] udf: Verify i_size when loading inode lizf
2015-04-09  8:45 ` [PATCH 3.4 072/176] udf: Verify symlink size before loading it lizf
2015-04-09  8:45 ` [PATCH 3.4 073/176] udf: Check path length when reading symlink lizf
2015-04-09  8:45 ` [PATCH 3.4 074/176] x86_64, vdso: Fix the vdso address randomization algorithm lizf
2015-04-09  8:45 ` [PATCH 3.4 075/176] udf: Check component length before reading it lizf
2015-04-09  8:45 ` [PATCH 3.4 076/176] crypto: af_alg - fix backlog handling lizf
2015-04-09  8:45 ` [PATCH 3.4 077/176] net: Fix stacked vlan offload features computation lizf
2015-04-10  0:49   ` Toshiaki Makita
2015-04-10  1:40     ` Zefan Li
2015-04-09  8:45 ` [PATCH 3.4 078/176] video/logo: prevent use of logos after they have been freed lizf
2015-04-09  8:45 ` [PATCH 3.4 079/176] USB: cp210x: fix ID for production CEL MeshConnect USB Stick lizf
2015-04-09  8:45 ` [PATCH 3.4 080/176] x86, um: actually mark system call tables readonly lizf
2015-04-09  8:45 ` [PATCH 3.4 081/176] ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs lizf
2015-04-09  8:45 ` [PATCH 3.4 082/176] virtio: use dev_to_virtio wrapper in virtio lizf
2015-04-09  8:45 ` [PATCH 3.4 083/176] virtio_pci: defer kfree until release callback lizf
2015-04-09  8:45 ` [PATCH 3.4 084/176] virtio_pci: document why we defer kfree lizf
2015-04-09  8:45 ` [PATCH 3.4 085/176] USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices lizf
2015-04-09  8:45 ` [PATCH 3.4 086/176] mm: propagate error from stack expansion even for guard page lizf
2015-04-09  8:45 ` [PATCH 3.4 087/176] sata_dwc_460ex: fix resource leak on error path lizf
2015-04-09  8:45 ` [PATCH 3.4 088/176] time: settimeofday: Validate the values of tv from user lizf
2015-04-09  8:45 ` [PATCH 3.4 089/176] time: adjtimex: Validate the ADJ_FREQUENCY values lizf
2015-04-09  8:45 ` [PATCH 3.4 090/176] Input: i8042 - reset keyboard to fix Elantech touchpad detection lizf
2015-04-09  8:45 ` [PATCH 3.4 091/176] Input: I8042 - add Acer Aspire 7738 to the nomux list lizf
2015-04-09  8:45 ` [PATCH 3.4 092/176] mac80211: fix multicast LED blinking and counter lizf
2015-04-09  8:45 ` [PATCH 3.4 093/176] mm: prevent endless growth of anon_vma hierarchy lizf
2015-04-09  8:45 ` [PATCH 3.4 094/176] mm: protect set_page_dirty() from ongoing truncation lizf
2015-04-09  8:45 ` [PATCH 3.4 095/176] HID: roccat: potential out of bounds in pyra_sysfs_write_settings() lizf
2015-04-09  8:45 ` [PATCH 3.4 096/176] OHCI: add a quirk for ULi M5237 blocking on reset lizf
2015-04-09  8:45 ` [PATCH 3.4 097/176] USB: console: fix potential use after free lizf
2015-04-09  8:45 ` [PATCH 3.4 098/176] mm: Don't count the stack guard page towards RLIMIT_STACK lizf
2015-04-09  8:45 ` [PATCH 3.4 099/176] mm: fix corner case in anon_vma endless growing prevention lizf
2015-04-09  8:45 ` [PATCH 3.4 100/176] gpio: fix memory and reference leaks in gpiochip_add error path lizf
2015-04-09  8:45 ` [PATCH 3.4 101/176] usb: dwc3: gadget: Stop TRB preparation after limit is reached lizf
2015-04-09  8:45 ` [PATCH 3.4 102/176] ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing lizf
2015-04-09  8:45 ` [PATCH 3.4 103/176] can: dev: fix crtlmode_supported check lizf
2015-04-09  8:45 ` [PATCH 3.4 104/176] sysfs.h: add ATTRIBUTE_GROUPS() macro lizf
2015-04-09  8:45 ` [PATCH 3.4 105/176] driver core: Introduce device_create_groups lizf
2015-04-09  8:45 ` [PATCH 3.4 106/176] gpio: sysfs: fix gpio-chip device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 107/176] gpiolib: Refactor gpio_export lizf
2015-04-09  8:45 ` [PATCH 3.4 108/176] gpio: sysfs: fix gpio device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 109/176] gpio: sysfs: fix gpio attribute-creation race lizf
2015-04-09  8:45 ` [PATCH 3.4 110/176] ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 lizf
2015-04-09  8:45 ` [PATCH 3.4 111/176] libata: allow sata_sil24 to opt-out of tag ordered submission lizf
2015-04-09  8:46 ` [PATCH 3.4 112/176] scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 113/176] libata: prevent HSM state change race between ISR and PIO lizf
2015-04-09  8:46 ` [PATCH 3.4 114/176] x86, hyperv: Mark the Hyper-V clocksource as being continuous lizf
2015-04-09  8:46 ` [PATCH 3.4 115/176] spi: dw: Fix detecting FIFO depth lizf
2015-04-09  9:37   ` Axel Lin
2015-04-10  1:52     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 116/176] spi: dw-mid: fix FIFO size lizf
2015-04-09  8:46 ` [PATCH 3.4 117/176] ASoC: wm8960: Fix capture sample rate from 11250 to 11025 lizf
2015-04-09  8:46 ` [PATCH 3.4 118/176] regulator: core: fix race condition in regulator_put() lizf
2015-04-09  8:46 ` [PATCH 3.4 119/176] powerpc/xmon: Fix another endiannes issue in RTAS call from xmon lizf
2015-04-09  8:46 ` [PATCH 3.4 120/176] nl80211: fix per-station group key get/del and memory leak lizf
2015-04-09  8:46 ` [PATCH 3.4 121/176] usb-storage/SCSI: Add broken_fua blacklist flag lizf
2015-04-09  8:46 ` [PATCH 3.4 122/176] usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA controller lizf
2015-04-09  8:46 ` [PATCH 3.4 123/176] usb-core bInterval quirk lizf
2015-04-09  8:46 ` [PATCH 3.4 124/176] USB: Add OTG PET device to TPL lizf
2015-04-09  8:46 ` [PATCH 3.4 125/176] drm/i915: Only fence tiled region of object lizf
2015-04-09  8:46 ` [PATCH 3.4 126/176] ALSA: seq-dummy: remove deadlock-causing events on close lizf
2015-04-09  8:46 ` [PATCH 3.4 127/176] net: sctp: fix slab corruption from use after free on INIT collisions lizf
2015-04-09  8:46 ` [PATCH 3.4 128/176] ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too lizf
2015-04-09  8:46 ` [PATCH 3.4 129/176] vm: add VM_FAULT_SIGSEGV handling support lizf
2015-04-09  8:46 ` [PATCH 3.4 130/176] vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than SIGBUS lizf
2015-04-09  8:46 ` [PATCH 3.4 131/176] net: sctp: fix panic on duplicate ASCONF chunks lizf
2015-04-09  8:46 ` lizf [this message]
2015-04-09  8:46 ` [PATCH 3.4 133/176] x86, mm/ASLR: Fix stack randomization on 64-bit systems lizf
2015-04-09  8:46 ` [PATCH 3.4 134/176] KEYS: close race between key lookup and freeing lizf
2015-04-09  8:46 ` [PATCH 3.4 135/176] move d_rcu from overlapping d_child to overlapping d_alias lizf
2015-04-09  8:46 ` [PATCH 3.4 136/176] deal with deadlock in d_walk() lizf
2015-04-09  8:46 ` [PATCH 3.4 137/176] MIPS: IRQ: Fix disable_irq on CPU IRQs lizf
2015-04-09  8:46 ` [PATCH 3.4 138/176] ASoC: atmel_ssc_dai: fix start event for I2S mode lizf
2015-04-09  8:46 ` [PATCH 3.4 139/176] ALSA: ak411x: Fix stall in work callback lizf
2015-04-09  8:46 ` [PATCH 3.4 140/176] lib/checksum.c: fix carry in csum_tcpudp_nofold lizf
2015-04-09 17:44   ` Karl Beldan
2015-04-09 18:20     ` David Miller
2015-04-10  1:42     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 141/176] caif: remove wrong dev_net_set() call lizf
2015-04-09  8:46 ` [PATCH 3.4 142/176] MIPS: Fix kernel lockup or crash after CPU offline/online lizf
2015-04-09  8:46 ` [PATCH 3.4 143/176] gpio: sysfs: fix memory leak in gpiod_export_link lizf
2015-04-09  8:46 ` [PATCH 3.4 144/176] gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low lizf
2015-04-09  8:46 ` [PATCH 3.4 145/176] MIPS: Fix C0_Pagegrain[IEC] support lizf
2015-04-09  8:46 ` [PATCH 3.4 146/176] net: sctp: fix NULL pointer dereference in af->from_addr_param on malformed packet lizf
2015-04-09  8:46 ` [PATCH 3.4 147/176] net: sctp: fix passing wrong parameter header to param_type2af in sctp_process_param lizf
2015-04-09  8:46 ` [PATCH 3.4 148/176] ASoC: sgtl5000: add delay before first I2C access lizf
2015-04-09  8:46 ` [PATCH 3.4 149/176] nilfs2: fix deadlock of segment constructor over I_SYNC flag lizf
2015-04-09  8:46 ` [PATCH 3.4 150/176] Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered lizf
2015-04-09  8:46 ` [PATCH 3.4 151/176] Bluetooth: sort the list of IDs in the source code lizf
2015-04-09  8:46 ` [PATCH 3.4 152/176] Bluetooth: append new supported device to the list [0b05:17d0] lizf
2015-04-09  8:46 ` [PATCH 3.4 153/176] Bluetooth: Add support for Intel bootloader devices lizf
2015-04-09  8:46 ` [PATCH 3.4 154/176] Bluetooth: Ignore isochronous endpoints for Intel USB bootloader lizf
2015-04-09  8:46 ` [PATCH 3.4 155/176] Bluetooth: Add support for Acer [13D3:3432] lizf
2015-04-09  8:46 ` [PATCH 3.4 156/176] Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE motherboard lizf
2015-04-09  8:46 ` [PATCH 3.4 157/176] Add a new PID/VID 0227/0930 for AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 158/176] Bluetooth: Add support for Acer [0489:e078] lizf
2015-04-09  8:46 ` [PATCH 3.4 159/176] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device lizf
2015-04-09  8:46 ` [PATCH 3.4 160/176] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 161/176] pagemap: do not leak physical addresses to non-privileged userspace lizf
2015-04-09  8:46 ` [PATCH 3.4 162/176] Bluetooth: Fix invalid length check in l2cap_information_rsp() lizf
2015-04-09  8:46 ` [PATCH 3.4 163/176] jfs: fix readdir regression lizf
2015-04-09  8:46 ` [PATCH 3.4 164/176] ipvs: rerouting to local clients is not needed anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 165/176] staging: comedi: cb_pcidas64: fix incorrect AI range code handling lizf
2015-04-09  8:46 ` [PATCH 3.4 166/176] Bluetooth: ath3k: workaround the compatibility issue with xHCI controller lizf
2015-04-09  8:46 ` [PATCH 3.4 167/176] sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target lizf
2015-04-09  8:46 ` [PATCH 3.4 168/176] net:socket: set msg_namelen to 0 if msg_name is passed as NULL in msghdr struct from userland lizf
2015-04-09  8:46 ` [PATCH 3.4 169/176] fsnotify: next_i is freed during fsnotify_unmount_inodes lizf
2015-04-09  8:46 ` [PATCH 3.4 170/176] x86, cpu, amd: Add workaround for family 16h, erratum 793 lizf
2015-04-09  8:46 ` [PATCH 3.4 171/176] s390/3215: fix tty output containing tabs lizf
2015-04-09  8:47 ` [PATCH 3.4 172/176] ntp: Fixup adjtimex freq validation on 32-bit systems lizf
2015-04-09  8:47 ` [PATCH 3.4 173/176] spi: dw: revisit FIFO size detection again lizf
2015-04-09  8:47 ` [PATCH 3.4 174/176] nilfs2: fix deadlock of segment constructor during recovery lizf
2015-04-09  8:47 ` [PATCH 3.4 175/176] net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour lizf
2015-04-09  8:47 ` [PATCH 3.4 176/176] mm: fix anon_vma->degree underflow in anon_vma endless growing prevention lizf
2015-04-09 15:20 ` [PATCH 3.4 000/176] 3.4.107-rc1 review Guenter Roeck
2015-04-13  2:01   ` Zefan Li
2015-04-13  4:19     ` Guenter Roeck

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=1428569224-23820-132-git-send-email-lizf@kernel.org \
    --to=lizf@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dborkman@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=stable@vger.kernel.org \
    --cc=vyasevich@gmail.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

Powered by JetHome