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, Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@kernel.org>
Subject: [ 105/127] sched: Fix race in task_group()
Date: Fri, 28 Sep 2012 13:34:38 -0700 [thread overview]
Message-ID: <20120928203058.151484033@linuxfoundation.org> (raw)
In-Reply-To: <20120928203045.835238916@linuxfoundation.org>
3.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <peterz@infradead.org>
commit 8323f26ce3425460769605a6aece7a174edaa7d1 upstream.
Stefan reported a crash on a kernel before a3e5d1091c1 ("sched:
Don't call task_group() too many times in set_task_rq()"), he
found the reason to be that the multiple task_group()
invocations in set_task_rq() returned different values.
Looking at all that I found a lack of serialization and plain
wrong comments.
The below tries to fix it using an extra pointer which is
updated under the appropriate scheduler locks. Its not pretty,
but I can't really see another way given how all the cgroup
stuff works.
Reported-and-tested-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1340364965.18025.71.camel@twins
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/init_task.h | 12 +++++++++++-
include/linux/sched.h | 5 ++++-
kernel/sched.c | 32 ++++++++++++++++++--------------
3 files changed, 33 insertions(+), 16 deletions(-)
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -124,8 +124,17 @@ extern struct group_info init_groups;
extern struct cred init_cred;
+extern struct task_group root_task_group;
+
+#ifdef CONFIG_CGROUP_SCHED
+# define INIT_CGROUP_SCHED(tsk) \
+ .sched_task_group = &root_task_group,
+#else
+# define INIT_CGROUP_SCHED(tsk)
+#endif
+
#ifdef CONFIG_PERF_EVENTS
-# define INIT_PERF_EVENTS(tsk) \
+# define INIT_PERF_EVENTS(tsk) \
.perf_event_mutex = \
__MUTEX_INITIALIZER(tsk.perf_event_mutex), \
.perf_event_list = LIST_HEAD_INIT(tsk.perf_event_list),
@@ -160,6 +169,7 @@ extern struct cred init_cred;
}, \
.tasks = LIST_HEAD_INIT(tsk.tasks), \
INIT_PUSHABLE_TASKS(tsk) \
+ INIT_CGROUP_SCHED(tsk) \
.ptraced = LIST_HEAD_INIT(tsk.ptraced), \
.ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \
.real_parent = &tsk, \
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1235,6 +1235,9 @@ struct task_struct {
const struct sched_class *sched_class;
struct sched_entity se;
struct sched_rt_entity rt;
+#ifdef CONFIG_CGROUP_SCHED
+ struct task_group *sched_task_group;
+#endif
#ifdef CONFIG_PREEMPT_NOTIFIERS
/* list of struct preempt_notifier: */
@@ -2613,7 +2616,7 @@ extern int sched_group_set_rt_period(str
extern long sched_group_rt_period(struct task_group *tg);
extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk);
#endif
-#endif
+#endif /* CONFIG_CGROUP_SCHED */
extern int task_can_switch_user(struct user_struct *up,
struct task_struct *tsk);
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -605,22 +605,19 @@ static inline int cpu_of(struct rq *rq)
/*
* Return the group to which this tasks belongs.
*
- * We use task_subsys_state_check() and extend the RCU verification with
- * pi->lock and rq->lock because cpu_cgroup_attach() holds those locks for each
- * task it moves into the cgroup. Therefore by holding either of those locks,
- * we pin the task to the current cgroup.
+ * We cannot use task_subsys_state() and friends because the cgroup
+ * subsystem changes that value before the cgroup_subsys::attach() method
+ * is called, therefore we cannot pin it and might observe the wrong value.
+ *
+ * The same is true for autogroup's p->signal->autogroup->tg, the autogroup
+ * core changes this before calling sched_move_task().
+ *
+ * Instead we use a 'copy' which is updated from sched_move_task() while
+ * holding both task_struct::pi_lock and rq::lock.
*/
static inline struct task_group *task_group(struct task_struct *p)
{
- struct task_group *tg;
- struct cgroup_subsys_state *css;
-
- css = task_subsys_state_check(p, cpu_cgroup_subsys_id,
- lockdep_is_held(&p->pi_lock) ||
- lockdep_is_held(&task_rq(p)->lock));
- tg = container_of(css, struct task_group, css);
-
- return autogroup_task_group(p, tg);
+ return p->sched_task_group;
}
/* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */
@@ -2206,7 +2203,7 @@ void set_task_cpu(struct task_struct *p,
* a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks.
*
* sched_move_task() holds both and thus holding either pins the cgroup,
- * see set_task_rq().
+ * see task_group().
*
* Furthermore, all task_rq users should acquire both locks, see
* task_rq_lock().
@@ -8545,6 +8542,7 @@ void sched_destroy_group(struct task_gro
*/
void sched_move_task(struct task_struct *tsk)
{
+ struct task_group *tg;
int on_rq, running;
unsigned long flags;
struct rq *rq;
@@ -8559,6 +8557,12 @@ void sched_move_task(struct task_struct
if (unlikely(running))
tsk->sched_class->put_prev_task(rq, tsk);
+ tg = container_of(task_subsys_state_check(tsk, cpu_cgroup_subsys_id,
+ lockdep_is_held(&tsk->sighand->siglock)),
+ struct task_group, css);
+ tg = autogroup_task_group(tsk, tg);
+ tsk->sched_task_group = tg;
+
#ifdef CONFIG_FAIR_GROUP_SCHED
if (tsk->sched_class->task_move_group)
tsk->sched_class->task_move_group(tsk, on_rq);
next prev parent reply other threads:[~2012-09-28 20:51 UTC|newest]
Thread overview: 135+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-28 20:32 [ 000/127] 3.0.44-stable review Greg Kroah-Hartman
2012-09-28 20:32 ` [ 001/127] net: Allow driver to limit number of GSO segments per skb Greg Kroah-Hartman
2012-09-28 20:32 ` [ 002/127] sfc: Fix maximum number of TSO segments and minimum TX queue size Greg Kroah-Hartman
2012-09-28 20:32 ` [ 003/127] tcp: Apply device TSO segment limit earlier Greg Kroah-Hartman
2012-09-28 20:32 ` [ 004/127] net_sched: gact: Fix potential panic in tcf_gact() Greg Kroah-Hartman
2012-09-28 20:32 ` [ 005/127] isdnloop: fix and simplify isdnloop_init() Greg Kroah-Hartman
2012-09-28 20:32 ` [ 006/127] net/core: Fix potential memory leak in dev_set_alias() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 007/127] af_packet: remove BUG statement in tpacket_destruct_skb Greg Kroah-Hartman
2012-09-28 20:33 ` [ 008/127] ipv6: addrconf: Avoid calling netdevice notifiers with RCU read-side lock Greg Kroah-Hartman
2012-09-28 20:33 ` [ 009/127] atm: fix info leak in getsockopt(SO_ATMPVC) Greg Kroah-Hartman
2012-09-28 20:33 ` [ 010/127] atm: fix info leak via getsockname() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 011/127] Bluetooth: HCI - Fix info leak in getsockopt(HCI_FILTER) Greg Kroah-Hartman
2012-09-28 20:33 ` [ 012/127] Bluetooth: HCI - Fix info leak via getsockname() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 013/127] Bluetooth: RFCOMM - Fix info leak in ioctl(RFCOMMGETDEVLIST) Greg Kroah-Hartman
2012-09-28 20:33 ` [ 014/127] Bluetooth: RFCOMM - Fix info leak via getsockname() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 015/127] Bluetooth: L2CAP " Greg Kroah-Hartman
2012-09-28 20:33 ` [ 016/127] llc: fix " Greg Kroah-Hartman
2012-09-28 20:33 ` [ 017/127] dccp: fix info leak via getsockopt(DCCP_SOCKOPT_CCID_TX_INFO) Greg Kroah-Hartman
2012-09-28 20:33 ` [ 018/127] ipvs: fix info leak in getsockopt(IP_VS_SO_GET_TIMEOUT) Greg Kroah-Hartman
2012-09-28 20:33 ` [ 019/127] net: fix info leak in compat dev_ifconf() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 020/127] netlink: fix possible spoofing from non-root processes Greg Kroah-Hartman
2012-09-28 20:33 ` [ 021/127] l2tp: avoid to use synchronize_rcu in tunnel free function Greg Kroah-Hartman
2012-09-28 20:33 ` [ 022/127] net: ipv4: ipmr_expire_timer causes crash when removing net namespace Greg Kroah-Hartman
2012-09-28 20:33 ` [ 023/127] workqueue: reimplement work_on_cpu() using system_wq Greg Kroah-Hartman
2012-09-28 20:33 ` [ 024/127] cpufreq/powernow-k8: workqueue user shouldnt migrate the kworker to another CPU Greg Kroah-Hartman
2012-09-28 20:33 ` [ 025/127] cciss: fix handling of protocol error Greg Kroah-Hartman
2012-09-28 20:33 ` [ 026/127] vfs: make O_PATH file descriptors usable for fstat() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 027/127] vfs: dcache: use DCACHE_DENTRY_KILLED instead of DCACHE_DISCONNECTED in d_kill() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 028/127] netconsole: remove a redundant netconsole_target_put() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 029/127] eCryptfs: Copy up attributes of the lower target inode after rename Greg Kroah-Hartman
2012-09-28 20:33 ` [ 030/127] target: Fix ->data_length re-assignment bug with SCSI overflow Greg Kroah-Hartman
2012-09-28 20:33 ` [ 031/127] ALSA: ice1724: Use linear scale for AK4396 volume control Greg Kroah-Hartman
2012-09-28 20:33 ` [ 032/127] Staging: speakup: fix an improperly-declared variable Greg Kroah-Hartman
2012-09-28 20:33 ` [ 033/127] staging: vt6656: [BUG] - Failed connection, incorrect endian Greg Kroah-Hartman
2012-09-28 20:33 ` [ 034/127] staging: r8712u: fix bug in r8712_recv_indicatepkt() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 035/127] staging: comedi: das08: Correct AO output for das08jr-16-ao Greg Kroah-Hartman
2012-09-28 20:33 ` [ 036/127] USB: option: replace ZTE K5006-Z entry with vendor class rule Greg Kroah-Hartman
2012-09-28 20:33 ` [ 037/127] perf_event: Switch to internal refcount, fix race with close() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 038/127] mmc: mxs-mmc: fix deadlock in SDIO IRQ case Greg Kroah-Hartman
2012-09-28 20:33 ` [ 039/127] mmc: sdhci-esdhc: break out early if clock is 0 Greg Kroah-Hartman
2012-09-28 20:33 ` [ 040/127] ahci: Add alternate identifier for the 88SE9172 Greg Kroah-Hartman
2012-09-28 20:33 ` [ 041/127] kobject: fix oops with "input0: bad kobj_uevent_env content in show_uevent()" Greg Kroah-Hartman
2012-09-28 20:33 ` [ 042/127] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts Greg Kroah-Hartman
2012-09-28 20:33 ` [ 043/127] md: Dont truncate size at 4TB for RAID0 and Linear Greg Kroah-Hartman
2012-09-28 20:33 ` [ 044/127] mm/page_alloc: fix the page address of higher pages buddy calculation Greg Kroah-Hartman
2012-09-28 20:33 ` [ 045/127] drivers/rtc/rtc-twl.c: ensure all interrupts are disabled during probe Greg Kroah-Hartman
2012-09-28 20:33 ` [ 046/127] hwmon: (twl4030-madc-hwmon) Initialize uninitialized structure elements Greg Kroah-Hartman
2012-09-28 20:33 ` [ 047/127] can: mcp251x: avoid repeated frame bug Greg Kroah-Hartman
2012-09-28 20:33 ` [ 048/127] mm/ia64: fix a memory block size bug Greg Kroah-Hartman
2012-09-28 20:33 ` [ 049/127] memory hotplug: fix section info double registration bug Greg Kroah-Hartman
2012-09-28 20:33 ` [ 050/127] xen/boot: Disable NUMA for PV guests Greg Kroah-Hartman
2012-09-28 20:33 ` [ 051/127] hwmon: (fam15h_power) Tweak runavg_range on resume Greg Kroah-Hartman
2012-09-28 20:33 ` [ 052/127] hwmon: (ads7871) Add name sysfs attribute Greg Kroah-Hartman
2012-09-28 20:33 ` [ 053/127] SCSI: mpt2sas: Fix for issue - Unable to boot from the drive connected to HBA Greg Kroah-Hartman
2012-09-28 20:33 ` [ 054/127] SCSI: bnx2i: Fixed NULL ptr deference for 1G bnx2 Linux iSCSI offload Greg Kroah-Hartman
2012-09-28 20:33 ` [ 055/127] SCSI: hpsa: fix handling of protocol error Greg Kroah-Hartman
2012-09-28 20:33 ` [ 056/127] Bluetooth: Fix not removing power_off delayed work Greg Kroah-Hartman
2012-09-28 22:13 ` Ben Hutchings
2012-09-28 22:19 ` Gustavo Padovan
2012-09-28 22:26 ` Greg Kroah-Hartman
2012-09-28 20:33 ` [ 057/127] hpwdt: Fix kdump issue in hpwdt Greg Kroah-Hartman
2012-09-28 20:33 ` [ 058/127] ARM: fix bad applied patch for arch/arm/Kconfig of stable 3.0.y tree Greg Kroah-Hartman
2012-09-28 20:33 ` [ 059/127] ARM: 7532/1: decompressor: reset SCTLR.TRE for VMSA ARMv7 cores Greg Kroah-Hartman
2012-09-28 20:33 ` [ 060/127] tracing: Dont call page_to_pfn() if page is NULL Greg Kroah-Hartman
2012-09-28 20:33 ` [ 061/127] Input: i8042 - disable mux on Toshiba C850D Greg Kroah-Hartman
2012-09-28 20:33 ` [ 062/127] asix: Support DLink DUB-E100 H/W Ver C1 Greg Kroah-Hartman
2012-09-28 20:33 ` [ 063/127] can: ti_hecc: fix oops during rmmod Greg Kroah-Hartman
2012-09-28 20:33 ` [ 064/127] can: janz-ican3: fix support for older hardware revisions Greg Kroah-Hartman
2012-09-28 20:33 ` [ 065/127] cfg80211: fix possible circular lock on reg_regdb_search() Greg Kroah-Hartman
2012-09-28 20:33 ` [ 066/127] dmaengine: at_hdmac: fix comment in atc_prep_slave_sg() Greg Kroah-Hartman
2012-09-28 20:34 ` [ 067/127] dmaengine: at_hdmac: check that each sg data length is non-null Greg Kroah-Hartman
2012-09-28 20:34 ` [ 068/127] rt2x00: Fix word size of rt2500usb MAC_CSR19 register Greg Kroah-Hartman
2012-09-28 20:34 ` [ 069/127] rt2x00: Fix rfkill polling prior to interface start Greg Kroah-Hartman
2012-09-28 20:34 ` [ 070/127] NFS: Fix the initialisation of the readdir cookieverf array Greg Kroah-Hartman
2012-09-28 20:34 ` [ 071/127] NFS: Fix a problem with the legacy binary mount code Greg Kroah-Hartman
2012-09-28 20:34 ` [ 072/127] NFS: return error from decode_getfh in decode open Greg Kroah-Hartman
2012-09-28 20:34 ` [ 073/127] EHCI: Update qTD next pointer in QH overlay region during unlink Greg Kroah-Hartman
2012-09-28 20:34 ` [ 074/127] USB: ftdi_sio: PID for NZR SEM 16+ USB Greg Kroah-Hartman
2012-09-28 20:34 ` [ 075/127] USB: ftdi_sio: do not claim CDC ACM function Greg Kroah-Hartman
2012-09-28 20:34 ` [ 076/127] USB: ftdi-sio: add support for more Physik Instrumente devices Greg Kroah-Hartman
2012-09-28 20:34 ` [ 077/127] USB: add device quirk for Joss Optical touchboard Greg Kroah-Hartman
2012-09-28 20:34 ` [ 078/127] Intel xhci: Only switch the switchable ports Greg Kroah-Hartman
2012-09-28 20:34 ` [ 079/127] xhci: Fix a logical vs bitwise AND bug Greg Kroah-Hartman
2012-09-28 20:34 ` [ 080/127] xhci: Make handover code more robust Greg Kroah-Hartman
2012-09-28 20:34 ` [ 081/127] xhci: Recognize USB 3.0 devices as superspeed at powerup Greg Kroah-Hartman
2012-09-28 20:34 ` [ 082/127] usb: host: xhci: fix compilation error for non-PCI based stacks Greg Kroah-Hartman
2012-09-28 20:34 ` [ 083/127] xhci: Fix bug after deq ptr set to link TRB Greg Kroah-Hartman
2012-09-28 20:34 ` [ 084/127] mutex: Place lock in contended state after fastpath_lock failure Greg Kroah-Hartman
2012-09-28 20:34 ` [ 085/127] drivers/rtc/rtc-rs5c348.c: fix hour decoding in 12-hour mode Greg Kroah-Hartman
2012-09-28 20:34 ` [ 086/127] PM / Runtime: Fix rpm_resume() return value for power.no_callbacks set Greg Kroah-Hartman
2012-09-28 20:34 ` [ 087/127] PM / Runtime: Clear power.deferred_resume on success in rpm_suspend() Greg Kroah-Hartman
2012-09-28 20:34 ` [ 088/127] drivers/misc/sgi-xp/xpc_uv.c: SGI XPC fails to load when cpu 0 is out of IRQ resources Greg Kroah-Hartman
2012-09-28 20:34 ` [ 089/127] fbcon: fix race condition between console lock and cursor timer (v1.1) Greg Kroah-Hartman
2012-09-28 20:34 ` [ 090/127] drm/radeon/kms: extend the Fujitsu D3003-S2 board connector quirk to cover later silicon stepping Greg Kroah-Hartman
2012-09-28 20:34 ` [ 091/127] asus-laptop: HRWS/HWRS typo Greg Kroah-Hartman
2012-09-28 20:34 ` [ 092/127] asus-nb-wmi: add some video toggle keys Greg Kroah-Hartman
2012-09-28 20:34 ` [ 093/127] drm/i915: HDMI - Clear Audio Enable bit for Hot Plug Greg Kroah-Hartman
2012-09-28 20:34 ` [ 094/127] md: make sure metadata is updated when spares are activated or removed Greg Kroah-Hartman
2012-09-28 22:51 ` Ben Hutchings
2012-09-28 23:57 ` Greg Kroah-Hartman
2012-10-02 2:52 ` NeilBrown
2012-10-02 16:09 ` Greg Kroah-Hartman
2012-09-28 20:34 ` [ 095/127] workqueue: UNBOUND -> REBIND morphing in rebind_workers() should be atomic Greg Kroah-Hartman
2012-09-28 20:34 ` [ 096/127] x86: Fix boot on Twinhead H12Y Greg Kroah-Hartman
2012-09-28 20:34 ` [ 097/127] Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 Greg Kroah-Hartman
2012-09-28 20:34 ` [ 098/127] Bluetooth: Use USB_VENDOR_AND_INTERFACE() for Broadcom devices Greg Kroah-Hartman
2012-09-28 20:34 ` [ 099/127] Bluetooth: Add support for Apple vendor-specific devices Greg Kroah-Hartman
2012-09-28 20:34 ` [ 100/127] net: Statically initialize init_net.dev_base_head Greg Kroah-Hartman
2012-09-28 20:34 ` [ 101/127] Fix a dead loop in async_synchronize_full() Greg Kroah-Hartman
2012-09-28 20:34 ` [ 102/127] rds: set correct msg_namelen Greg Kroah-Hartman
2012-09-28 20:34 ` [ 103/127] libata: Prevent interface errors with Seagate FreeAgent GoFlex Greg Kroah-Hartman
2012-09-28 20:34 ` [ 104/127] cpufreq / ACPI: Fix not loading acpi-cpufreq driver regression Greg Kroah-Hartman
2012-09-28 20:34 ` Greg Kroah-Hartman [this message]
2012-09-28 20:34 ` [ 106/127] media: lirc_sir: make device registration work Greg Kroah-Hartman
2012-09-28 20:34 ` [ 107/127] drop_monitor: fix sleeping in invalid context warning Greg Kroah-Hartman
2012-09-28 20:34 ` [ 108/127] drop_monitor: Make updating data->skb smp safe Greg Kroah-Hartman
2012-09-28 20:34 ` [ 109/127] drop_monitor: prevent init path from scheduling on the wrong cpu Greg Kroah-Hartman
2012-09-28 20:34 ` [ 110/127] drop_monitor: dont sleep in atomic context Greg Kroah-Hartman
2012-09-28 20:34 ` [ 111/127] time: Improve sanity checking of timekeeping inputs Greg Kroah-Hartman
2012-09-28 20:34 ` [ 112/127] time: Avoid making adjustments if we havent accumulated anything Greg Kroah-Hartman
2012-09-28 20:34 ` [ 113/127] time: Move ktime_t overflow checking into timespec_valid_strict Greg Kroah-Hartman
2012-09-28 20:34 ` [ 114/127] media: Avoid sysfs oops when an rc_devs raw device is absent Greg Kroah-Hartman
2012-09-28 20:34 ` [ 115/127] pch_uart: Fix missing break for 16 byte fifo Greg Kroah-Hartman
2012-09-28 20:34 ` [ 116/127] pch_uart: Fix rx error interrupt setting issue Greg Kroah-Hartman
2012-09-28 20:34 ` [ 117/127] pch_uart: Fix parity " Greg Kroah-Hartman
2012-09-28 20:34 ` [ 118/127] Squashfs: fix mount time sanity check for corrupted superblock Greg Kroah-Hartman
2012-09-28 20:34 ` [ 119/127] mmc: sd: Handle SD3.0 cards not supporting UHS-I bus speed mode Greg Kroah-Hartman
2012-09-28 20:34 ` [ 120/127] mmc: Prevent 1.8V switch for SD hosts that dont support UHS modes Greg Kroah-Hartman
2012-09-28 20:34 ` [ 121/127] e1000e: Disable ASPM L1 on 82574 Greg Kroah-Hartman
2012-09-28 20:34 ` [ 122/127] UBI: fix a horrible memory deallocation bug Greg Kroah-Hartman
2012-09-28 20:34 ` [ 123/127] spi/mpc83xx: fix NULL pdata dereference bug Greg Kroah-Hartman
2012-09-28 20:34 ` [ 124/127] spi/spi-fsl-spi: reference correct pdata in fsl_spi_cs_control Greg Kroah-Hartman
2012-09-28 20:34 ` [ 125/127] sched: Fix ancient race in do_exit() Greg Kroah-Hartman
2012-09-28 20:34 ` [ 126/127] MCE: Fix vm86 handling for 32bit mce handler Greg Kroah-Hartman
2012-09-28 20:35 ` [ 127/127] USB: Fix race condition when removing host controllers 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=20120928203058.151484033@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=a.p.zijlstra@chello.nl \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.