linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	alan@lxorguk.ukuu.org.uk, Sage Weil <sage@inktank.com>,
	Alex Elder <elder@inktank.com>
Subject: [ 160/171] libceph: recheck con state after allocating incoming message
Date: Wed, 21 Nov 2012 16:41:46 -0800	[thread overview]
Message-ID: <20121122004049.411749694@linuxfoundation.org> (raw)
In-Reply-To: <20121122004033.298367941@linuxfoundation.org>

3.4-stable review patch.  If anyone has any objections, please let me know.

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

From: Sage Weil <sage@inktank.com>

(cherry picked from commit 6139919133377652992a5fe134e22abce3e9c25e)

We drop the lock when calling the ->alloc_msg() con op, which means
we need to (a) not clobber con->in_msg without the mutex held, and (b)
we need to verify that we are still in the OPEN state when we retake
it to avoid causing any mayhem.  If the state does change, -EAGAIN
will get us back to con_work() and loop.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Alex Elder <elder@inktank.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ceph/messenger.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -2735,9 +2735,16 @@ static int ceph_con_in_msg_alloc(struct
 	BUG_ON(con->in_msg != NULL);
 
 	if (con->ops->alloc_msg) {
+		struct ceph_msg *msg;
+
 		mutex_unlock(&con->mutex);
-		con->in_msg = con->ops->alloc_msg(con, hdr, skip);
+		msg = con->ops->alloc_msg(con, hdr, skip);
 		mutex_lock(&con->mutex);
+		if (con->state != CON_STATE_OPEN) {
+			ceph_msg_put(msg);
+			return -EAGAIN;
+		}
+		con->in_msg = msg;
 		if (con->in_msg) {
 			con->in_msg->con = con->ops->get(con);
 			BUG_ON(con->in_msg->con == NULL);



  parent reply	other threads:[~2012-11-22 18:34 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-22  0:39 [ 000/171] 3.4.20-stable review Greg Kroah-Hartman
2012-11-22  0:39 ` [ 001/171] mm: bugfix: set current->reclaim_state to NULL while returning from kswapd() Greg Kroah-Hartman
2012-11-22  0:39 ` [ 002/171] xfs: drop buffer io reference when a bad bio is built Greg Kroah-Hartman
2012-11-22  0:39 ` [ 003/171] mac80211: sync acccess to tx_filtered/ps_tx_buf queues Greg Kroah-Hartman
2012-11-22  0:39 ` [ 004/171] mac80211: dont send null data packet when not associated Greg Kroah-Hartman
2012-11-22  0:39 ` [ 005/171] mac80211: call skb_dequeue/ieee80211_free_txskb instead of __skb_queue_purge Greg Kroah-Hartman
2012-11-22  0:39 ` [ 006/171] PCI/PM: Fix deadlock when unbinding device if parent in D3cold Greg Kroah-Hartman
2012-11-22  0:39 ` [ 007/171] fanotify: fix missing break Greg Kroah-Hartman
2012-11-22  0:39 ` [ 008/171] module: fix out-by-one error in kallsyms Greg Kroah-Hartman
2012-11-22  0:39 ` [ 009/171] cifs: fix potential buffer overrun in cifs.idmap handling code Greg Kroah-Hartman
2012-11-22  0:39 ` [ 010/171] crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent data corruption Greg Kroah-Hartman
2012-11-22  0:39 ` [ 011/171] ptp: update adjfreq callback description Greg Kroah-Hartman
2012-11-24  0:26   ` Herton Ronaldo Krzesinski
2012-11-26 21:16     ` Keller, Jacob E
2012-11-22  0:39 ` [ 012/171] ALSA: hda: Cirrus: Fix coefficient index for beep configuration Greg Kroah-Hartman
2012-11-22  0:39 ` [ 013/171] ALSA: HDA: Fix digital microphone on CS420x Greg Kroah-Hartman
2012-11-22  0:39 ` [ 014/171] ALSA: hda - Force to reset IEC958 status bits for AD codecs Greg Kroah-Hartman
2012-11-22  0:39 ` [ 015/171] ALSA: hda - Fix empty DAC filling in patch_via.c Greg Kroah-Hartman
2012-11-22  0:39 ` [ 016/171] ALSA: hda - Fix invalid connections in VT1802 codec Greg Kroah-Hartman
2012-11-22  0:39 ` [ 017/171] ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) Greg Kroah-Hartman
2012-11-22  0:39 ` [ 018/171] ALSA: hda - Add a missing quirk entry for iMac 9,1 Greg Kroah-Hartman
2012-11-22  0:39 ` [ 019/171] ASoC: wm8978: pll incorrectly configured when codec is master Greg Kroah-Hartman
2012-11-22  0:39 ` [ 020/171] ASoC: dapm: Use card_list during DAPM shutdown Greg Kroah-Hartman
2012-11-22  0:39 ` [ 021/171] UBIFS: fix mounting problems after power cuts Greg Kroah-Hartman
2012-11-22  0:39 ` [ 022/171] UBIFS: introduce categorized lprops counter Greg Kroah-Hartman
2012-11-22  0:39 ` [ 023/171] Revert "Staging: Android alarm: IOCTL command encoding fix" Greg Kroah-Hartman
2012-11-22  0:39 ` [ 024/171] s390/gup: add missing TASK_SIZE check to get_user_pages_fast() Greg Kroah-Hartman
2012-11-22  0:39 ` [ 025/171] USB: option: add Novatel E362 and Dell Wireless 5800 USB IDs Greg Kroah-Hartman
2012-11-22  0:39 ` [ 026/171] USB: option: add Alcatel X220/X500D " Greg Kroah-Hartman
2012-11-22  0:39 ` [ 027/171] drm/radeon: fix logic error in atombios_encoders.c Greg Kroah-Hartman
2012-11-22  0:39 ` [ 028/171] ttm: Clear the ttm page allocated from high memory zone correctly Greg Kroah-Hartman
2012-11-22  0:39 ` [ 029/171] memcg: oom: fix totalpages calculation for memory.swappiness==0 Greg Kroah-Hartman
2012-11-22  0:39 ` [ 030/171] wireless: allow 40 MHz on world roaming channels 12/13 Greg Kroah-Hartman
2012-11-22  0:39 ` [ 031/171] m68k: fix sigset_t accessor functions Greg Kroah-Hartman
2012-11-22  0:39 ` [ 032/171] ipv4: avoid undefined behavior in do_ip_setsockopt() Greg Kroah-Hartman
2012-11-22  0:39 ` [ 033/171] ipv6: setsockopt(IPIPPROTO_IPV6, IPV6_MINHOPCOUNT) forgot to set return value Greg Kroah-Hartman
2012-11-22  0:39 ` [ 034/171] net: correct check in dev_addr_del() Greg Kroah-Hartman
2012-11-22  0:39 ` [ 035/171] net-rps: Fix brokeness causing OOO packets Greg Kroah-Hartman
2012-11-22  0:39 ` [ 036/171] tmpfs: change final i_blocks BUG to WARNING Greg Kroah-Hartman
2012-11-22  0:39 ` [ 037/171] r8169: use unlimited DMA burst for TX Greg Kroah-Hartman
2012-11-22  0:39 ` [ 038/171] xen/events: fix RCU warning, or Call idle notifier after irq_enter() Greg Kroah-Hartman
2012-11-22  0:39 ` [ 039/171] r8169: Fix WoL on RTL8168d/8111d Greg Kroah-Hartman
2012-11-22  0:39 ` [ 040/171] r8169: allow multicast packets on sub-8168f chipset Greg Kroah-Hartman
2012-11-22  0:39 ` [ 041/171] netfilter: Validate the sequence number of dataless ACK packets as well Greg Kroah-Hartman
2012-11-22  0:39 ` [ 042/171] netfilter: Mark SYN/ACK packets as invalid from original direction Greg Kroah-Hartman
2012-11-22  0:39 ` [ 043/171] netfilter: nf_nat: dont check for port change on ICMP tuples Greg Kroah-Hartman
2012-11-22  0:39 ` [ 044/171] usb: use usb_serial_put in usb_serial_probe errors Greg Kroah-Hartman
2012-11-22  0:39 ` [ 045/171] eCryptfs: Copy up POSIX ACL and read-only flags from lower mount Greg Kroah-Hartman
2012-11-22  0:39 ` [ 046/171] eCryptfs: check for eCryptfs cipher support at mount Greg Kroah-Hartman
2012-11-22  0:39 ` [ 047/171] sky2: Fix for interrupt handler Greg Kroah-Hartman
2012-11-22  0:39 ` [ 048/171] s390/signal: set correct address space control Greg Kroah-Hartman
2012-11-22  0:39 ` [ 049/171] drm/i915: fix overlay on i830M Greg Kroah-Hartman
2012-11-22  0:39 ` [ 050/171] NFS: Wait for session recovery to finish before returning Greg Kroah-Hartman
2012-11-22  0:39 ` [ 051/171] reiserfs: Fix lock ordering during remount Greg Kroah-Hartman
2012-11-22  0:39 ` [ 052/171] reiserfs: Protect reiserfs_quota_on() with write lock Greg Kroah-Hartman
2012-11-22  0:39 ` [ 053/171] reiserfs: Move quota calls out of " Greg Kroah-Hartman
2012-11-22  0:40 ` [ 054/171] reiserfs: Protect reiserfs_quota_write() with " Greg Kroah-Hartman
2012-11-22  0:40 ` [ 055/171] selinux: fix sel_netnode_insert() suspicious rcu dereference Greg Kroah-Hartman
2012-11-22  0:40 ` [ 056/171] crush: clean up types, const-ness Greg Kroah-Hartman
2012-11-22  0:40 ` [ 057/171] crush: adjust local retry threshold Greg Kroah-Hartman
2012-11-22  0:40 ` [ 058/171] crush: be more tolerant of nonsensical crush maps Greg Kroah-Hartman
2012-11-22  0:40 ` [ 059/171] crush: fix tree node weight lookup Greg Kroah-Hartman
2012-11-22  0:40 ` [ 060/171] crush: fix memory leak when destroying tree buckets Greg Kroah-Hartman
2012-11-22  0:40 ` [ 061/171] ceph: osd_client: fix endianness bug in osd_req_encode_op() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 062/171] ceph: messenger: use read_partial() in read_partial_message() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 063/171] ceph: messenger: update "to" in read_partial() caller Greg Kroah-Hartman
2012-11-22  0:40 ` [ 064/171] ceph: messenger: change read_partial() to take "end" arg Greg Kroah-Hartman
2012-11-22  0:40 ` [ 065/171] libceph: dont reset kvec in prepare_write_banner() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 066/171] ceph: messenger: reset connection kvec caller Greg Kroah-Hartman
2012-11-22  0:40 ` [ 067/171] ceph: messenger: send banner in process_connect() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 068/171] ceph: drop msgr argument from prepare_write_connect() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 069/171] ceph: dont set WRITE_PENDING too early Greg Kroah-Hartman
2012-11-22  0:40 ` [ 070/171] ceph: messenger: check prepare_write_connect() result Greg Kroah-Hartman
2012-11-22  0:40 ` [ 071/171] ceph: messenger: rework prepare_connect_authorizer() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 072/171] ceph: messenger: check return from get_authorizer Greg Kroah-Hartman
2012-11-22  0:40 ` [ 073/171] ceph: define ceph_auth_handshake type Greg Kroah-Hartman
2012-11-22  0:40 ` [ 074/171] ceph: messenger: reduce args to create_authorizer Greg Kroah-Hartman
2012-11-22  0:40 ` [ 075/171] ceph: ensure auth ops are defined before use Greg Kroah-Hartman
2012-11-22  0:40 ` [ 076/171] ceph: have get_authorizer methods return pointers Greg Kroah-Hartman
2012-11-22  0:40 ` [ 077/171] ceph: use info returned by get_authorizer Greg Kroah-Hartman
2012-11-22  0:40 ` [ 078/171] ceph: return pointer from prepare_connect_authorizer() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 079/171] ceph: rename prepare_connect_authorizer() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 080/171] ceph: add auth buf in prepare_write_connect() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 081/171] libceph: avoid unregistering osd request when not registered Greg Kroah-Hartman
2012-11-22  0:40 ` [ 082/171] libceph: fix pg_temp updates Greg Kroah-Hartman
2012-11-22  0:40 ` [ 083/171] libceph: osd_client: dont drop reply reference too early Greg Kroah-Hartman
2012-11-22  0:40 ` [ 084/171] libceph: use con get/put ops from osd_client Greg Kroah-Hartman
2012-11-22  0:40 ` [ 085/171] rbd: Clear ceph_msg->bio_iter for retransmitted message Greg Kroah-Hartman
2012-11-22  0:40 ` [ 086/171] libceph: flush msgr queue during mon_client shutdown Greg Kroah-Hartman
2012-11-22  0:40 ` [ 087/171] libceph: fix messenger retry Greg Kroah-Hartman
2012-11-22  0:40 ` [ 088/171] rbd: dont hold spinlock during messenger flush Greg Kroah-Hartman
2012-11-22  0:40 ` [ 089/171] rbd: protect read of snapshot sequence number Greg Kroah-Hartman
2012-11-22  0:40 ` [ 090/171] rbd: store snapshot id instead of index Greg Kroah-Hartman
2012-11-22  0:40 ` [ 091/171] rbd: Fix ceph_snap_context size calculation Greg Kroah-Hartman
2012-11-22  0:40 ` [ 092/171] ceph: check PG_Private flag before accessing page->private Greg Kroah-Hartman
2012-11-22  0:40 ` [ 093/171] libceph: eliminate connection state "DEAD" Greg Kroah-Hartman
2012-11-22  0:40 ` [ 094/171] libceph: kill bad_proto ceph connection op Greg Kroah-Hartman
2012-11-22  0:40 ` [ 095/171] libceph: rename socket callbacks Greg Kroah-Hartman
2012-11-22  0:40 ` [ 096/171] libceph: rename kvec_reset and kvec_add functions Greg Kroah-Hartman
2012-11-22  0:40 ` [ 097/171] libceph: embed ceph messenger structure in ceph_client Greg Kroah-Hartman
2012-11-22  0:40 ` [ 098/171] libceph: start separating connection flags from state Greg Kroah-Hartman
2012-11-22  0:40 ` [ 099/171] libceph: start tracking connection socket state Greg Kroah-Hartman
2012-11-22  0:40 ` [ 100/171] libceph: provide osd number when creating osd Greg Kroah-Hartman
2012-11-22  0:40 ` [ 101/171] libceph: set CLOSED state bit in con_init Greg Kroah-Hartman
2012-11-22  0:40 ` [ 102/171] libceph: embed ceph connection structure in mon_client Greg Kroah-Hartman
2012-11-22  0:40 ` [ 103/171] libceph: drop connection refcounting for mon_client Greg Kroah-Hartman
2012-11-22  0:40 ` [ 104/171] libceph: init monitor connection when opening Greg Kroah-Hartman
2012-11-22  0:40 ` [ 105/171] libceph: fully initialize connection in con_init() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 106/171] libceph: tweak ceph_alloc_msg() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 107/171] libceph: have messages point to their connection Greg Kroah-Hartman
2012-11-22  0:40 ` [ 108/171] libceph: have messages take a connection reference Greg Kroah-Hartman
2012-11-22  0:40 ` [ 109/171] libceph: make ceph_con_revoke() a msg operation Greg Kroah-Hartman
2012-11-22  0:40 ` [ 110/171] libceph: make ceph_con_revoke_message() a msg op Greg Kroah-Hartman
2012-11-22  0:40 ` [ 111/171] libceph: fix overflow in __decode_pool_names() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 112/171] libceph: fix overflow in osdmap_decode() Greg Kroah-Hartman
2012-11-22  0:40 ` [ 113/171] libceph: fix overflow in osdmap_apply_incremental() Greg Kroah-Hartman
2012-11-22  0:41 ` [ 114/171] libceph: transition socket state prior to actual connect Greg Kroah-Hartman
2012-11-22  0:41 ` [ 115/171] libceph: fix NULL dereference in reset_connection() Greg Kroah-Hartman
2012-11-22  0:41 ` [ 116/171] libceph: use con get/put methods Greg Kroah-Hartman
2012-11-22  0:41 ` [ 117/171] libceph: drop ceph_con_get/put helpers and nref member Greg Kroah-Hartman
2012-11-23 13:41   ` Herton Ronaldo Krzesinski
2012-11-26 18:55     ` Greg Kroah-Hartman
2012-11-22  0:41 ` [ 118/171] libceph: encapsulate out message data setup Greg Kroah-Hartman
2012-11-22  0:41 ` [ 119/171] libceph: encapsulate advancing msg page Greg Kroah-Hartman
2012-11-22  0:41 ` [ 120/171] libceph: dont mark footer complete before it is Greg Kroah-Hartman
2012-11-22  0:41 ` [ 121/171] libceph: move init_bio_*() functions up Greg Kroah-Hartman
2012-11-22  0:41 ` [ 122/171] libceph: move init of bio_iter Greg Kroah-Hartman
2012-11-22  0:41 ` [ 123/171] libceph: dont use bio_iter as a flag Greg Kroah-Hartman
2012-11-22  0:41 ` [ 124/171] libceph: SOCK_CLOSED is a flag, not a state Greg Kroah-Hartman
2012-11-22  0:41 ` [ 125/171] libceph: dont change socket state on sock event Greg Kroah-Hartman
2012-11-22  0:41 ` [ 126/171] libceph: just set SOCK_CLOSED when state changes Greg Kroah-Hartman
2012-11-22  0:41 ` [ 127/171] libceph: dont touch con state in con_close_socket() Greg Kroah-Hartman
2012-11-22  0:41 ` [ 128/171] libceph: clear CONNECTING in ceph_con_close() Greg Kroah-Hartman
2012-11-22  0:41 ` [ 129/171] libceph: clear NEGOTIATING when done Greg Kroah-Hartman
2012-11-22  0:41 ` [ 130/171] libceph: define and use an explicit CONNECTED state Greg Kroah-Hartman
2012-11-22  0:41 ` [ 131/171] libceph: separate banner and connect writes Greg Kroah-Hartman
2012-11-22  0:41 ` [ 132/171] libceph: distinguish two phases of connect sequence Greg Kroah-Hartman
2012-11-22  0:41 ` [ 133/171] libceph: small changes to messenger.c Greg Kroah-Hartman
2012-11-22  0:41 ` [ 134/171] libceph: add some fine ASCII art Greg Kroah-Hartman
2012-11-22  0:41 ` [ 135/171] libceph: set peer name on con_open, not init Greg Kroah-Hartman
2012-11-22  0:41 ` [ 136/171] libceph: initialize mon_client con only once Greg Kroah-Hartman
2012-11-22  0:41 ` [ 137/171] libceph: allow sock transition from CONNECTING to CLOSED Greg Kroah-Hartman
2012-11-22  0:41 ` [ 138/171] libceph: initialize msgpool message types Greg Kroah-Hartman
2012-11-22  0:41 ` [ 139/171] libceph: prevent the race of incoming work during teardown Greg Kroah-Hartman
2012-11-22  0:41 ` [ 140/171] libceph: report socket read/write error message Greg Kroah-Hartman
2012-11-22  0:41 ` [ 141/171] libceph: fix mutex coverage for ceph_con_close Greg Kroah-Hartman
2012-11-22  0:41 ` [ 142/171] libceph: resubmit linger ops when pg mapping changes Greg Kroah-Hartman
2012-11-22  0:41 ` [ 143/171] libceph: (re)initialize bio_iter on start of message receive Greg Kroah-Hartman
2012-11-22  0:41 ` [ 144/171] libceph: protect ceph_con_open() with mutex Greg Kroah-Hartman
2012-11-22  0:41 ` [ 145/171] libceph: reset connection retry on successfully negotiation Greg Kroah-Hartman
2012-11-22  0:41 ` [ 146/171] libceph: fix fault locking; close socket on lossy fault Greg Kroah-Hartman
2012-11-22  0:41 ` [ 147/171] libceph: move msgr clear_standby under con mutex protection Greg Kroah-Hartman
2012-11-22  0:41 ` [ 148/171] libceph: move ceph_con_send() closed check under the con mutex Greg Kroah-Hartman
2012-11-22  0:41 ` [ 149/171] libceph: drop gratuitous socket close calls in con_work Greg Kroah-Hartman
2012-11-22  0:41 ` [ 150/171] libceph: close socket directly from ceph_con_close() Greg Kroah-Hartman
2012-11-22  0:41 ` [ 151/171] libceph: drop unnecessary CLOSED check in socket state change callback Greg Kroah-Hartman
2012-11-22  0:41 ` [ 152/171] libceph: replace connection state bits with states Greg Kroah-Hartman
2012-11-22  0:41 ` [ 153/171] libceph: clean up con flags Greg Kroah-Hartman
2012-11-22  0:41 ` [ 154/171] libceph: clear all flags on con_close Greg Kroah-Hartman
2012-11-22  0:41 ` [ 155/171] libceph: fix handling of immediate socket connect failure Greg Kroah-Hartman
2012-11-22  0:41 ` [ 156/171] libceph: revoke mon_client messages on session restart Greg Kroah-Hartman
2012-11-22  0:41 ` [ 157/171] libceph: verify state after retaking con lock after dispatch Greg Kroah-Hartman
2012-11-22  0:41 ` [ 158/171] libceph: avoid dropping con mutex before fault Greg Kroah-Hartman
2012-11-22  0:41 ` [ 159/171] libceph: change ceph_con_in_msg_alloc convention to be less weird Greg Kroah-Hartman
2012-11-22  0:41 ` Greg Kroah-Hartman [this message]
2012-11-22  0:41 ` [ 161/171] libceph: fix crypto key null deref, memory leak Greg Kroah-Hartman
2012-11-22  0:41 ` [ 162/171] libceph: delay debugfs initialization until we learn global_id Greg Kroah-Hartman
2012-11-22  0:41 ` [ 163/171] libceph: avoid truncation due to racing banners Greg Kroah-Hartman
2012-11-22  0:41 ` [ 164/171] libceph: only kunmap kmapped pages Greg Kroah-Hartman
2012-11-22  0:41 ` [ 165/171] rbd: reset BACKOFF if unable to re-queue Greg Kroah-Hartman
2012-11-22  0:41 ` [ 166/171] libceph: avoid NULL kref_put when osd reset races with alloc_msg Greg Kroah-Hartman
2012-11-22  0:41 ` [ 167/171] ceph: Fix oops when handling mdsmap that decreases max_mds Greg Kroah-Hartman
2012-11-22  0:41 ` [ 168/171] libceph: check for invalid mapping Greg Kroah-Hartman
2012-11-22  0:41 ` [ 169/171] ceph: avoid 32-bit page index overflow Greg Kroah-Hartman
2012-11-22  0:41 ` [ 170/171] ACPI video: Ignore errors after _DOD evaluation Greg Kroah-Hartman
2012-11-22  0:41 ` [ 171/171] Revert "serial: omap: fix software flow control" Greg Kroah-Hartman

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=20121122004049.411749694@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=elder@inktank.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sage@inktank.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;
as well as URLs for NNTP newsgroup(s).