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, Huang Ying <ying.huang@intel.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Zhang Yanmin <yanmin.zhang@intel.com>
Subject: [ 006/171] PCI/PM: Fix deadlock when unbinding device if parent in D3cold
Date: Wed, 21 Nov 2012 16:39:12 -0800	[thread overview]
Message-ID: <20121122004033.949092835@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: Huang Ying <ying.huang@intel.com>

commit 90b5c1d7c45eeb622302680ff96ed30c1a2b6f0e upstream.

If a PCI device and its parents are put into D3cold, unbinding the
device will trigger deadlock as follow:

- driver_unbind
  - device_release_driver
    - device_lock(dev)				<--- previous lock here
    - __device_release_driver
      - pm_runtime_get_sync
        ...
          - rpm_resume(dev)
            - rpm_resume(dev->parent)
              ...
                - pci_pm_runtime_resume
                  ...
                  - pci_set_power_state
                    - __pci_start_power_transition
                      - pci_wakeup_bus(dev->parent->subordinate)
                        - pci_walk_bus
                          - device_lock(dev)	<--- deadlock here


If we do not do device_lock in pci_walk_bus, we can avoid deadlock.
Device_lock in pci_walk_bus is introduced in commit:
d71374dafbba7ec3f67371d3b7e9f6310a588808, corresponding email thread
is: https://lkml.org/lkml/2006/5/26/38.  The patch author Zhang Yanmin
said device_lock is added to pci_walk_bus because:

  Some error handling functions call pci_walk_bus. For example, PCIe
  aer. Here we lock the device, so the driver wouldn't detach from the
  device, as the cb might call driver's callback function.

So I fixed the deadlock as follows:

- remove device_lock from pci_walk_bus
- add device_lock into callback if callback will call driver's callback

I checked pci_walk_bus users one by one, and found only PCIe aer needs
device lock.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
CC: Zhang Yanmin <yanmin.zhang@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/pci/bus.c                  |    3 ---
 drivers/pci/pcie/aer/aerdrv_core.c |   20 ++++++++++++++++----
 2 files changed, 16 insertions(+), 7 deletions(-)

--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -314,10 +314,7 @@ void pci_walk_bus(struct pci_bus *top, i
 		} else
 			next = dev->bus_list.next;
 
-		/* Run device routines with the device locked */
-		device_lock(&dev->dev);
 		retval = cb(dev, userdata);
-		device_unlock(&dev->dev);
 		if (retval)
 			break;
 	}
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -244,6 +244,7 @@ static int report_error_detected(struct
 	struct aer_broadcast_data *result_data;
 	result_data = (struct aer_broadcast_data *) data;
 
+	device_lock(&dev->dev);
 	dev->error_state = result_data->state;
 
 	if (!dev->driver ||
@@ -262,12 +263,14 @@ static int report_error_detected(struct
 				   dev->driver ?
 				   "no AER-aware driver" : "no driver");
 		}
-		return 0;
+		goto out;
 	}
 
 	err_handler = dev->driver->err_handler;
 	vote = err_handler->error_detected(dev, result_data->state);
 	result_data->result = merge_result(result_data->result, vote);
+out:
+	device_unlock(&dev->dev);
 	return 0;
 }
 
@@ -278,14 +281,17 @@ static int report_mmio_enabled(struct pc
 	struct aer_broadcast_data *result_data;
 	result_data = (struct aer_broadcast_data *) data;
 
+	device_lock(&dev->dev);
 	if (!dev->driver ||
 		!dev->driver->err_handler ||
 		!dev->driver->err_handler->mmio_enabled)
-		return 0;
+		goto out;
 
 	err_handler = dev->driver->err_handler;
 	vote = err_handler->mmio_enabled(dev);
 	result_data->result = merge_result(result_data->result, vote);
+out:
+	device_unlock(&dev->dev);
 	return 0;
 }
 
@@ -296,14 +302,17 @@ static int report_slot_reset(struct pci_
 	struct aer_broadcast_data *result_data;
 	result_data = (struct aer_broadcast_data *) data;
 
+	device_lock(&dev->dev);
 	if (!dev->driver ||
 		!dev->driver->err_handler ||
 		!dev->driver->err_handler->slot_reset)
-		return 0;
+		goto out;
 
 	err_handler = dev->driver->err_handler;
 	vote = err_handler->slot_reset(dev);
 	result_data->result = merge_result(result_data->result, vote);
+out:
+	device_unlock(&dev->dev);
 	return 0;
 }
 
@@ -311,15 +320,18 @@ static int report_resume(struct pci_dev
 {
 	struct pci_error_handlers *err_handler;
 
+	device_lock(&dev->dev);
 	dev->error_state = pci_channel_io_normal;
 
 	if (!dev->driver ||
 		!dev->driver->err_handler ||
 		!dev->driver->err_handler->resume)
-		return 0;
+		goto out;
 
 	err_handler = dev->driver->err_handler;
 	err_handler->resume(dev);
+out:
+	device_unlock(&dev->dev);
 	return 0;
 }
 



  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 ` Greg Kroah-Hartman [this message]
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 ` [ 160/171] libceph: recheck con state after allocating incoming message Greg Kroah-Hartman
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=20121122004033.949092835@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bhelgaas@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=stable@vger.kernel.org \
    --cc=yanmin.zhang@intel.com \
    --cc=ying.huang@intel.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;
as well as URLs for NNTP newsgroup(s).