stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Andy Honig <ahonig@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Moritz Muehlenhoff <jmm@inutil.org>,
	Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 3.16.y-ckt 126/126] KVM: x86: Reload pit counters for all channels when restoring state
Date: Wed,  6 Jan 2016 10:37:35 +0000	[thread overview]
Message-ID: <1452076655-12851-127-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1452076655-12851-1-git-send-email-luis.henriques@canonical.com>

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

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

From: Andrew Honig <ahonig@google.com>

commit 0185604c2d82c560dab2f2933a18f797e74ab5a8 upstream.

Currently if userspace restores the pit counters with a count of 0
on channels 1 or 2 and the guest attempts to read the count on those
channels, then KVM will perform a mod of 0 and crash.  This will ensure
that 0 values are converted to 65536 as per the spec.

This is CVE-2015-7513.

Signed-off-by: Andy Honig <ahonig@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Moritz Muehlenhoff <jmm@inutil.org>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/x86/kvm/x86.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4977c1a93d52..e336615e0aae 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3559,10 +3559,12 @@ static int kvm_vm_ioctl_get_pit(struct kvm *kvm, struct kvm_pit_state *ps)
 static int kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps)
 {
 	int r = 0;
+	int i;
 
 	mutex_lock(&kvm->arch.vpit->pit_state.lock);
 	memcpy(&kvm->arch.vpit->pit_state, ps, sizeof(struct kvm_pit_state));
-	kvm_pit_load_count(kvm, 0, ps->channels[0].count, 0);
+	for (i = 0; i < 3; i++)
+		kvm_pit_load_count(kvm, i, ps->channels[i].count, 0);
 	mutex_unlock(&kvm->arch.vpit->pit_state.lock);
 	return r;
 }
@@ -3583,6 +3585,7 @@ static int kvm_vm_ioctl_get_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
 static int kvm_vm_ioctl_set_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
 {
 	int r = 0, start = 0;
+	int i;
 	u32 prev_legacy, cur_legacy;
 	mutex_lock(&kvm->arch.vpit->pit_state.lock);
 	prev_legacy = kvm->arch.vpit->pit_state.flags & KVM_PIT_FLAGS_HPET_LEGACY;
@@ -3592,7 +3595,8 @@ static int kvm_vm_ioctl_set_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
 	memcpy(&kvm->arch.vpit->pit_state.channels, &ps->channels,
 	       sizeof(kvm->arch.vpit->pit_state.channels));
 	kvm->arch.vpit->pit_state.flags = ps->flags;
-	kvm_pit_load_count(kvm, 0, kvm->arch.vpit->pit_state.channels[0].count, start);
+	for (i = 0; i < 3; i++)
+		kvm_pit_load_count(kvm, i, kvm->arch.vpit->pit_state.channels[i].count, start);
 	mutex_unlock(&kvm->arch.vpit->pit_state.lock);
 	return r;
 }

      parent reply	other threads:[~2016-01-06 10:42 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-06 10:35 [3.16.y-ckt stable] Linux 3.16.7-ckt22 stable review Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 001/126] iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 002/126] iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 003/126] iio: ad5064: Fix ad5629/ad5669 shift Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 004/126] iio:ad7793: Fix ad7785 product ID Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 005/126] x86/fpu: Fix 32-bit signal frame handling Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 006/126] iio: adc: xilinx: Fix VREFN scale Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 007/126] drm/i915: quirk backlight present on Macbook 4, 1 Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 008/126] USB: qcserial: Add support for Quectel EC20 Mini PCIe module Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 009/126] USB: serial: option: add support for Novatel MiFi USB620L Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 010/126] USB: ti_usb_3410_5052: Add Honeywell HGI80 ID Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 011/126] drm/i915: get runtime PM reference around GEM set_caching IOCTL Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 012/126] drm/radeon: unconditionally set sysfs_initialized Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 013/126] USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 014/126] arm64: kernel: pause/unpause function graph tracer in cpu_suspend() Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 015/126] usb: dwc3: gadget: let us set lower max_speed Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 016/126] usb: chipidea: debug: disable usb irq while role switch Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 017/126] xhci: Workaround to get Intel xHCI reset working more reliably Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 018/126] xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 019/126] x86/cpu: Fix SMAP check in PVOPS environments Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 020/126] arm64: restore bogomips information in /proc/cpuinfo Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 021/126] USB: option: add XS Stick W100-2 from 4G Systems Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 022/126] usblp: do not set TASK_INTERRUPTIBLE before lock Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 023/126] fat: fix fake_offset handling on error path Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 024/126] kernel/signal.c: unexport sigsuspend() Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 025/126] ocfs2: fix umask ignored issue Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 026/126] parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 027/126] mmc: remove bondage between REQ_META and reliable write Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 028/126] tools/net: Use include/uapi with __EXPORTED_HEADERS__ Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 029/126] packet: do skb_probe_transport_header when we actually have data Luis Henriques
2016-01-06 10:35 ` [PATCH 3.16.y-ckt 030/126] packet: only allow extra vlan len on ethernet devices Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 031/126] packet: fix tpacket_snd max frame len Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 032/126] sctp: translate host order to network order when setting a hmacid Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 033/126] net/mlx4_core: Avoid returning success in case of an error flow Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 034/126] usb: musb: core: fix order of arguments to ulpi write callback Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 035/126] FS-Cache: Add missing initialization of ret in cachefiles_write_page() Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 036/126] macvlan: fix leak in macvlan_handle_frame Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 037/126] ARC: Fix silly typo in MAINTAINERS file Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 038/126] unix: avoid use-after-free in ep_remove_wait_queue Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 039/126] packet: always probe for transport header Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 040/126] packet: infer protocol from ethernet header if unset Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 041/126] ip_tunnel: disable preemption when updating per-cpu tstats Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 042/126] snmp: Remove duplicate OUTMCAST stat increment Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 043/126] net: qmi_wwan: add XS Stick W100-2 from 4G Systems Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 044/126] tcp: md5: fix lockdep annotation Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 045/126] tcp: initialize tp->copied_seq in case of cross SYN connection Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 046/126] net, scm: fix PaX detected msg_controllen overflow in scm_detach_fds Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 047/126] net: ipmr: fix static mfc/dev leaks on table destruction Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 048/126] net: ip6mr: " Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 049/126] broadcom: fix PHY_ID_BCM5481 entry in the id table Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 050/126] ipv6: distinguish frag queues by device for multicast and link-local packets Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 051/126] ipv6: add complete rcu protection around np->opt Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 052/126] net/neighbour: fix crash at dumping device-agnostic proxy entries Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 053/126] ipv6: sctp: implement sctp_v6_destroy_sock() Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 054/126] xfs: allow inode allocations in post-growfs disk space Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 055/126] ALSA: usb-audio: add packet size quirk for the Medeli DD305 Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 056/126] ALSA: usb-audio: prevent CH345 multiport output SysEx corruption Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 057/126] ALSA: usb-audio: work around CH345 input " Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 058/126] dm thin: restore requested 'error_if_no_space' setting on OODS to WRITE transition Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 059/126] dm: fix ioctl retry termination with signal Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 060/126] MIPS: KVM: Fix ASID restoration logic Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 061/126] MIPS: KVM: Fix CACHE immediate offset sign extension Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 062/126] MIPS: KVM: Uninit VCPU in vcpu_create error path Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 063/126] ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 064/126] mac: validate mac_partition is within sector Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 065/126] ALSA: hda - Apply HP headphone fixups more generically Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 066/126] powerpc/tm: Block signal return setting invalid MSR state Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 067/126] powerpc/tm: Check for already reclaimed tasks Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 068/126] ARC: dw2 unwind: Remove falllback linear search thru FDE entries Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 069/126] fix sysvfs symlinks Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 070/126] vfs: Make sendfile(2) killable even better Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 071/126] vfs: Avoid softlockups with sendfile(2) Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 072/126] nfs4: start callback_ident at idr 1 Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 073/126] ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 074/126] arm64: KVM: Fix AArch32 to AArch64 register mapping Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 075/126] drm/radeon: make rv770_set_sw_state failures non-fatal Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 076/126] ALSA: hda - Fix noise on Gigabyte Z170X mobo Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 077/126] drm/radeon: make some dpm errors debug only Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 078/126] nfs: if we have no valid attrs, then don't declare the attribute cache valid Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 079/126] xen/gntdev: Grant maps should not be subject to NUMA balancing Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 080/126] iscsi-target: Fix rx_login_comp hang after login failure Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 081/126] target: Fix race for SCF_COMPARE_AND_WRITE_POST checking Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 082/126] target: fix COMPARE_AND_WRITE non zero SGL offset data corruption Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 083/126] ARM: dts: Kirkwood: Fix QNAP TS219 power-off Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 084/126] netfilter: ipt_rpfilter: remove the nh_scope test in rpfilter_lookup_reverse Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 085/126] netfilter: nf_tables: fix bogus warning in nft_data_uninit() Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 086/126] netfilter: ip6t_SYNPROXY: fix NULL pointer dereference Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 087/126] RDS: fix race condition when sending a message on unbound socket Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 088/126] gre6: allow to update all parameters via rtnl Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 089/126] atl1c: Improve driver not to do order 4 GFP_ATOMIC allocation Luis Henriques
2016-01-06 10:36 ` [PATCH 3.16.y-ckt 090/126] sctp: use the same clock as if sock source timestamps were on Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 091/126] sctp: update the netstamp_needed counter when copying sockets Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 092/126] ipv6: sctp: clone options to avoid use after free Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 093/126] net: add validation for the socket syscall protocol argument Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 094/126] sh_eth: fix kernel oops in skb_put() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 095/126] vlan: Fix untag operations of stacked vlans with REORDER_HEADER off Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 096/126] skbuff: Fix offset error in skb_reorder_vlan_header Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 097/126] pptp: verify sockaddr_len in pptp_bind() and pptp_connect() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 098/126] bluetooth: Validate socket address length in sco_sock_bind() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 099/126] af_unix: Revert 'lock_interruptible' in stream receive code Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 100/126] ip6mr: call del_timer_sync() in ip6mr_free_table() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 101/126] drm/i915: Disable PSMI sleep messages on all rings around context switches Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 102/126] crypto: nx - Fix timing leak in GCM and CCM decryption Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 103/126] crypto: talitos - Fix timing leak in ESP ICV verification Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 104/126] ASoC: wm8962: correct addresses for HPF_C_0/1 Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 105/126] mac80211: mesh: fix call_rcu() usage Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 106/126] mac80211: ensure we don't update tx power on a non-running sdata Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 107/126] can: sja1000: clear interrupts on start Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 108/126] ring-buffer: Update read stamp with first real commit on page Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 109/126] block: Always check queue limits for cloned requests Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 110/126] Fix a memory leak in scsi_host_dev_release() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 111/126] wan/x25: Fix use-after-free in x25_asy_open_tty() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 112/126] mac80211: do not actively scan DFS channels Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 113/126] locking: Add WARN_ON_ONCE lock assertion Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 114/126] drm: Fix an unwanted master inheritance v2 Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 115/126] sched/core: Clear the root_domain cpumasks in init_rootdomain() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 116/126] x86/signal: Fix restart_syscall number for x32 tasks Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 117/126] isdn: Partially revert debug format string usage clean up Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 118/126] remoteproc: avoid stack overflow in debugfs file Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 119/126] net: mvneta: add configuration for MBUS windows access protection Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 120/126] net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 121/126] net: mvneta: fix bit assignment for RX packet irq enable Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 122/126] ipv4: igmp: Allow removing groups from a removed interface Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 123/126] sched/core: Remove false-positive warning from wake_up_process() Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 124/126] btrfs: fix signed overflows in btrfs_sync_file Luis Henriques
2016-01-06 10:37 ` [PATCH 3.16.y-ckt 125/126] KEYS: Fix race between read and revoke Luis Henriques
2016-01-06 10:37 ` Luis Henriques [this message]

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=1452076655-12851-127-git-send-email-luis.henriques@canonical.com \
    --to=luis.henriques@canonical.com \
    --cc=ahonig@google.com \
    --cc=jmm@inutil.org \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@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;
as well as URLs for NNTP newsgroup(s).