From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Johannes Berg <johannes.berg@intel.com>
Subject: [PATCH 4.8 06/96] cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts
Date: Fri, 6 Jan 2017 22:42:54 +0100 [thread overview]
Message-ID: <20170106214227.925356475@linuxfoundation.org> (raw)
In-Reply-To: <20170106214227.601120243@linuxfoundation.org>
4.8-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <johannes.berg@intel.com>
commit e6f462df9acd2a3295e5d34eb29e2823220cf129 upstream.
When mac80211 abandons an association attempt, it may free
all the data structures, but inform cfg80211 and userspace
about it only by sending the deauth frame it received, in
which case cfg80211 has no link to the BSS struct that was
used and will not cfg80211_unhold_bss() it.
Fix this by providing a way to inform cfg80211 of this with
the BSS entry passed, so that it can clean up properly, and
use this ability in the appropriate places in mac80211.
This isn't ideal: some code is more or less duplicated and
tracing is missing. However, it's a fairly small change and
it's thus easier to backport - cleanups can come later.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/cfg80211.h | 11 +++++++++++
net/mac80211/mlme.c | 21 ++++++++++++---------
net/wireless/core.h | 1 +
net/wireless/mlme.c | 12 ++++++++++++
net/wireless/sme.c | 14 ++++++++++++++
5 files changed, 50 insertions(+), 9 deletions(-)
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4393,6 +4393,17 @@ void cfg80211_rx_assoc_resp(struct net_d
void cfg80211_assoc_timeout(struct net_device *dev, struct cfg80211_bss *bss);
/**
+ * cfg80211_abandon_assoc - notify cfg80211 of abandoned association attempt
+ * @dev: network device
+ * @bss: The BSS entry with which association was abandoned.
+ *
+ * Call this whenever - for reasons reported through other API, like deauth RX,
+ * an association attempt was abandoned.
+ * This function may sleep. The caller must hold the corresponding wdev's mutex.
+ */
+void cfg80211_abandon_assoc(struct net_device *dev, struct cfg80211_bss *bss);
+
+/**
* cfg80211_tx_mlme_mgmt - notification of transmitted deauth/disassoc frame
* @dev: network device
* @buf: 802.11 frame (header + body)
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2506,7 +2506,7 @@ static void ieee80211_destroy_auth_data(
}
static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
- bool assoc)
+ bool assoc, bool abandon)
{
struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data;
@@ -2529,6 +2529,9 @@ static void ieee80211_destroy_assoc_data
mutex_lock(&sdata->local->mtx);
ieee80211_vif_release_channel(sdata);
mutex_unlock(&sdata->local->mtx);
+
+ if (abandon)
+ cfg80211_abandon_assoc(sdata->dev, assoc_data->bss);
}
kfree(assoc_data);
@@ -2758,7 +2761,7 @@ static void ieee80211_rx_mgmt_deauth(str
bssid, reason_code,
ieee80211_get_reason_code_string(reason_code));
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, true);
cfg80211_rx_mlme_mgmt(sdata->dev, (u8 *)mgmt, len);
return;
@@ -3163,14 +3166,14 @@ static void ieee80211_rx_mgmt_assoc_resp
if (status_code != WLAN_STATUS_SUCCESS) {
sdata_info(sdata, "%pM denied association (code=%d)\n",
mgmt->sa, status_code);
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, false);
event.u.mlme.status = MLME_DENIED;
event.u.mlme.reason = status_code;
drv_event_callback(sdata->local, sdata, &event);
} else {
if (!ieee80211_assoc_success(sdata, bss, mgmt, len)) {
/* oops -- internal error -- send timeout for now */
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, false);
cfg80211_assoc_timeout(sdata->dev, bss);
return;
}
@@ -3183,7 +3186,7 @@ static void ieee80211_rx_mgmt_assoc_resp
* recalc after assoc_data is NULL but before associated
* is set can cause the interface to go idle
*/
- ieee80211_destroy_assoc_data(sdata, true);
+ ieee80211_destroy_assoc_data(sdata, true, false);
/* get uapsd queues configuration */
uapsd_queues = 0;
@@ -3882,7 +3885,7 @@ void ieee80211_sta_work(struct ieee80211
.u.mlme.status = MLME_TIMEOUT,
};
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, false);
cfg80211_assoc_timeout(sdata->dev, bss);
drv_event_callback(sdata->local, sdata, &event);
}
@@ -4021,7 +4024,7 @@ void ieee80211_mgd_quiesce(struct ieee80
WLAN_REASON_DEAUTH_LEAVING,
false, frame_buf);
if (ifmgd->assoc_data)
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, true);
if (ifmgd->auth_data)
ieee80211_destroy_auth_data(sdata, false);
cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf,
@@ -4903,7 +4906,7 @@ int ieee80211_mgd_deauth(struct ieee8021
IEEE80211_STYPE_DEAUTH,
req->reason_code, tx,
frame_buf);
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, true);
ieee80211_report_disconnect(sdata, frame_buf,
sizeof(frame_buf), true,
req->reason_code);
@@ -4978,7 +4981,7 @@ void ieee80211_mgd_stop(struct ieee80211
sdata_lock(sdata);
if (ifmgd->assoc_data) {
struct cfg80211_bss *bss = ifmgd->assoc_data->bss;
- ieee80211_destroy_assoc_data(sdata, false);
+ ieee80211_destroy_assoc_data(sdata, false, false);
cfg80211_assoc_timeout(sdata->dev, bss);
}
if (ifmgd->auth_data)
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -410,6 +410,7 @@ void cfg80211_sme_disassoc(struct wirele
void cfg80211_sme_deauth(struct wireless_dev *wdev);
void cfg80211_sme_auth_timeout(struct wireless_dev *wdev);
void cfg80211_sme_assoc_timeout(struct wireless_dev *wdev);
+void cfg80211_sme_abandon_assoc(struct wireless_dev *wdev);
/* internal helpers */
bool cfg80211_supported_cipher_suite(struct wiphy *wiphy, u32 cipher);
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -149,6 +149,18 @@ void cfg80211_assoc_timeout(struct net_d
}
EXPORT_SYMBOL(cfg80211_assoc_timeout);
+void cfg80211_abandon_assoc(struct net_device *dev, struct cfg80211_bss *bss)
+{
+ struct wireless_dev *wdev = dev->ieee80211_ptr;
+ struct wiphy *wiphy = wdev->wiphy;
+
+ cfg80211_sme_abandon_assoc(wdev);
+
+ cfg80211_unhold_bss(bss_from_pub(bss));
+ cfg80211_put_bss(wiphy, bss);
+}
+EXPORT_SYMBOL(cfg80211_abandon_assoc);
+
void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len)
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -39,6 +39,7 @@ struct cfg80211_conn {
CFG80211_CONN_ASSOCIATING,
CFG80211_CONN_ASSOC_FAILED,
CFG80211_CONN_DEAUTH,
+ CFG80211_CONN_ABANDON,
CFG80211_CONN_CONNECTED,
} state;
u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN];
@@ -206,6 +207,8 @@ static int cfg80211_conn_do_work(struct
cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid,
NULL, 0,
WLAN_REASON_DEAUTH_LEAVING, false);
+ /* fall through */
+ case CFG80211_CONN_ABANDON:
/* free directly, disconnected event already sent */
cfg80211_sme_free(wdev);
return 0;
@@ -423,6 +426,17 @@ void cfg80211_sme_assoc_timeout(struct w
schedule_work(&rdev->conn_work);
}
+void cfg80211_sme_abandon_assoc(struct wireless_dev *wdev)
+{
+ struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
+
+ if (!wdev->conn)
+ return;
+
+ wdev->conn->state = CFG80211_CONN_ABANDON;
+ schedule_work(&rdev->conn_work);
+}
+
static int cfg80211_sme_get_conn_ies(struct wireless_dev *wdev,
const u8 *ies, size_t ies_len,
const u8 **out_ies, size_t *out_ies_len)
next prev parent reply other threads:[~2017-01-06 21:49 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170106215010epcas3p298f6cd3d6c81baf1e1e724741444d929@epcas3p2.samsung.com>
2017-01-06 21:42 ` [PATCH 4.8 00/96] 4.8.17-stable review Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 01/96] ssb: Fix error routine when fallback SPROM fails Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 02/96] rtlwifi: Fix enter/exit power_save Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 03/96] perf/x86: Fix exclusion of BTS and LBR for Goldmont Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 04/96] perf/x86/intel/cstate: Prevent hotplug callback leak Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 05/96] rtl8xxxu: Work around issue with 8192eu and 8723bu devices not reconnecting Greg Kroah-Hartman
2017-01-06 21:42 ` Greg Kroah-Hartman [this message]
2017-01-06 21:42 ` [PATCH 4.8 07/96] ath9k: fix ath9k_hw_gpio_get() to return 0 or 1 on success Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 08/96] ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 09/96] mmc: sdhci: Fix recovery from tuning timeout Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 10/96] regulator: stw481x-vmmc: fix ages old enable error Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 11/96] timekeeping_Force_unsigned_clocksource_to_nanoseconds_conversion Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 12/96] gpio: chardev: Return error for seek operations Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 13/96] arm64: tegra: Add VDD_GPU regulator to Jetson TX1 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 14/96] clk: bcm2835: Avoid overwriting the div info when disabling a pll_div clk Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 15/96] thermal: hwmon: Properly report critical temperature in sysfs Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 16/96] docs: sphinx-extensions: make rstFlatTable work with docutils 0.13 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 17/96] hv: acquire vmbus_connection.channel_mutex in vmbus_free_channels() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 18/96] staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 19/96] staging: comedi: ni_mio_common: fix E series ni_ai_insn_read() data Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 20/96] ACPI / video: Add force_native quirk for Dell XPS 17 L702X Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 21/96] ACPI / video: Add force_native quirk for HP Pavilion dv6 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 22/96] drm/amd/amdgpu: enable GUI idle INT after enabling CGCG Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 23/96] drm/nouveau/gr: fallback to legacy paths during firmware lookup Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 24/96] drm/nouveau/kms: lvds panel strap moved again on maxwell Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 25/96] drm/nouveau/bios: require checksum to match for fast acpi shadow method Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 26/96] drm/nouveau/ltc: protect clearing of comptags with mutex Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 27/96] drm/nouveau/ttm: wait for bo fence to signal before unmapping vmas Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 28/96] drm/nouveau/i2c/gk110b,gm10x: use the correct implementation Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 29/96] drm/nouveau/fifo/gf100-: protect channel preempt with subdev mutex Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 32/96] drm/radeon: add additional pci revision to dpm workaround Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 33/96] drm/radeon/si: load the proper firmware on 0x87 oland boards Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 34/96] drm/gma500: Add compat ioctl Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 35/96] drm/amdgpu: fix init save/restore list in gfx_v8.0 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 36/96] drivers/gpu/drm/ast: Fix infinite loop if read fails Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 37/96] mei: request async autosuspend at the end of enumeration Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 38/96] mei: me: add lewisburg device ids Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 39/96] block: protect iterate_bdevs() against concurrent close Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 40/96] vt: fix Scroll Lock LED trigger name Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 41/96] stm class: Fix device leak in open error path Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 42/96] scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 43/96] scsi: megaraid_sas: Do not set MPI2_TYPE_CUDA for JBOD FP path for FW which does not support JBOD sequence map Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 44/96] iscsi-target: Return error if unable to add network portal Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 45/96] scsi: zfcp: fix use-after-"free" in FC ingress path after TMF Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 46/96] scsi: zfcp: do not trace pure benign residual HBA responses at default level Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 47/96] scsi: zfcp: fix rport unblock race with LUN recovery Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 48/96] scsi: avoid a permanent stop of the scsi devices request queue Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 49/96] ARC: mm: arc700: Dont assume 2 colours for aliasing VIPT dcache Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 50/96] firmware: fix usermode helper fallback loading Greg Kroah-Hartman
2017-01-06 21:54 ` Yves-Alexis Perez
2017-01-13 10:58 ` Greg Kroah-Hartman
2017-03-24 20:01 ` Ben Gamari
2017-03-30 4:06 ` Luis R. Rodriguez
2017-01-06 21:43 ` [PATCH 4.8 51/96] s390/vmlogrdr: fix IUCV buffer allocation Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 52/96] s390/kexec: use node 0 when re-adding crash kernel memory Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 53/96] arm64: KVM: pmu: Reset PMSELR_EL0.SEL to a sane value before entering the guest Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 54/96] sc16is7xx: Drop bogus use of IRQF_ONESHOT Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 55/96] md/raid5: limit request size according to implementation limits Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 56/96] scsi: aacraid: remove wildcard for series 9 controllers Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 57/96] KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 58/96] KVM: PPC: Book3S HV: Dont lose hardware R/C bit updates in H_PROTECT Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 59/96] kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 60/96] fsnotify: Fix possible use-after-free in inode iteration on umount Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 61/96] vsock/virtio: fix src/dst cid format Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 62/96] ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 63/96] platform/x86: asus-nb-wmi.c: Add X45U quirk Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 64/96] fgraph: Handle a case where a tracer ignores set_graph_notrace Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 65/96] IB/mad: Fix an array index check Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 66/96] IPoIB: Avoid reading an uninitialized member variable Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 67/96] IB/multicast: Check ib_find_pkey() return value Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 68/96] IB/rxe: Fix a memory leak in rxe_qp_cleanup() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 69/96] IB/cma: Fix a race condition in iboe_addr_get_sgid() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 70/96] [media] mn88472: fix chip id check on probe Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 71/96] [media] mn88473: " Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 72/96] [media] s5p-mfc: fix failure path of s5p_mfc_alloc_memdev() Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 73/96] [media] media: solo6x10: fix lockup by avoiding delayed register write Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 74/96] [media] v4l: tvp5150: Add missing break in set control handler Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 75/96] Input: drv260x - fix input devices parent assignment Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 76/96] i40iw: Use correct src address in memcpy to rdma stats counters Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 77/96] PCI: Check for PME in targeted sleep state Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 78/96] libceph: verify authorize reply on connect Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 79/96] nfs_write_end(): fix handling of short copies Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 80/96] pNFS: On error, do not send LAYOUTGET until the LAYOUTRETURN has completed Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 81/96] pNFS: Dont clear the layout stateid if a layout return is outstanding Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 82/96] pNFS: Clear NFS_LAYOUT_RETURN_REQUESTED when invalidating the layout stateid Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 83/96] pNFS: Fix a deadlock between read resends and layoutreturn Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 84/96] SUNRPC: fix refcounting problems with auth_gss messages Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 85/96] powerpc/64e: Convert cmpi to cmpwi in head_64.S Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 86/96] powerpc/ps3: Fix system hang with GCC 5 builds Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 87/96] libnvdimm, pfn: fix align attribute Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 88/96] target/user: Fix use-after-free of tcmu_cmds if they are expired Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 89/96] kconfig/nconf: Fix hang when editing symbol with a long prompt Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 90/96] sg_write()/bsg_write() is not fit to be called under KERNEL_DS Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 91/96] net: mvpp2: fix dma unmapping of TX buffers for fragments Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 96/96] drm/i915: skip the first 4k of stolen memory on everything >= gen8 Greg Kroah-Hartman
2017-01-07 2:04 ` [PATCH 4.8 00/96] 4.8.17-stable review Shuah Khan
2017-01-07 15:53 ` 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=20170106214227.925356475@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=johannes.berg@intel.com \
--cc=linux-kernel@vger.kernel.org \
--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).