stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Konstantin Khlebnikov <k.khlebnikov@samsung.com>,
	Sasha Levin <sasha.levin@oracle.com>,
	Rafael Aquini <aquini@redhat.com>,
	Andrey Ryabinin <ryabinin.a.a@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 3.17 111/146] mm/balloon_compaction: redesign ballooned pages management
Date: Tue, 28 Oct 2014 11:34:13 +0800	[thread overview]
Message-ID: <20141028033348.259288444@linuxfoundation.org> (raw)
In-Reply-To: <20141028033343.441992423@linuxfoundation.org>

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

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

From: Konstantin Khlebnikov <k.khlebnikov@samsung.com>

commit d6d86c0a7f8ddc5b38cf089222cb1d9540762dc2 upstream.

Sasha Levin reported KASAN splash inside isolate_migratepages_range().
Problem is in the function __is_movable_balloon_page() which tests
AS_BALLOON_MAP in page->mapping->flags.  This function has no protection
against anonymous pages.  As result it tried to check address space flags
inside struct anon_vma.

Further investigation shows more problems in current implementation:

* Special branch in __unmap_and_move() never works:
  balloon_page_movable() checks page flags and page_count.  In
  __unmap_and_move() page is locked, reference counter is elevated, thus
  balloon_page_movable() always fails.  As a result execution goes to the
  normal migration path.  virtballoon_migratepage() returns
  MIGRATEPAGE_BALLOON_SUCCESS instead of MIGRATEPAGE_SUCCESS,
  move_to_new_page() thinks this is an error code and assigns
  newpage->mapping to NULL.  Newly migrated page lose connectivity with
  balloon an all ability for further migration.

* lru_lock erroneously required in isolate_migratepages_range() for
  isolation ballooned page.  This function releases lru_lock periodically,
  this makes migration mostly impossible for some pages.

* balloon_page_dequeue have a tight race with balloon_page_isolate:
  balloon_page_isolate could be executed in parallel with dequeue between
  picking page from list and locking page_lock.  Race is rare because they
  use trylock_page() for locking.

This patch fixes all of them.

Instead of fake mapping with special flag this patch uses special state of
page->_mapcount: PAGE_BALLOON_MAPCOUNT_VALUE = -256.  Buddy allocator uses
PAGE_BUDDY_MAPCOUNT_VALUE = -128 for similar purpose.  Storing mark
directly in struct page makes everything safer and easier.

PagePrivate is used to mark pages present in page list (i.e.  not
isolated, like PageLRU for normal pages).  It replaces special rules for
reference counter and makes balloon migration similar to migration of
normal pages.  This flag is protected by page_lock together with link to
the balloon device.

Signed-off-by: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Link: http://lkml.kernel.org/p/53E6CEAA.9020105@oracle.com
Cc: Rafael Aquini <aquini@redhat.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/virtio/virtio_balloon.c    |   15 ++---
 include/linux/balloon_compaction.h |   97 +++++++++----------------------------
 include/linux/migrate.h            |   11 ----
 include/linux/mm.h                 |   19 +++++++
 mm/balloon_compaction.c            |   26 ++++-----
 mm/compaction.c                    |    2 
 mm/migrate.c                       |   16 +-----
 7 files changed, 68 insertions(+), 118 deletions(-)

--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -163,8 +163,8 @@ static void release_pages_by_pfn(const u
 	/* Find pfns pointing at start of each page, get pages and free them. */
 	for (i = 0; i < num; i += VIRTIO_BALLOON_PAGES_PER_PAGE) {
 		struct page *page = balloon_pfn_to_page(pfns[i]);
-		balloon_page_free(page);
 		adjust_managed_page_count(page, 1);
+		put_page(page); /* balloon reference */
 	}
 }
 
@@ -395,6 +395,8 @@ static int virtballoon_migratepage(struc
 	if (!mutex_trylock(&vb->balloon_lock))
 		return -EAGAIN;
 
+	get_page(newpage); /* balloon reference */
+
 	/* balloon's page migration 1st step  -- inflate "newpage" */
 	spin_lock_irqsave(&vb_dev_info->pages_lock, flags);
 	balloon_page_insert(newpage, mapping, &vb_dev_info->pages);
@@ -404,12 +406,7 @@ static int virtballoon_migratepage(struc
 	set_page_pfns(vb->pfns, newpage);
 	tell_host(vb, vb->inflate_vq);
 
-	/*
-	 * balloon's page migration 2nd step -- deflate "page"
-	 *
-	 * It's safe to delete page->lru here because this page is at
-	 * an isolated migration list, and this step is expected to happen here
-	 */
+	/* balloon's page migration 2nd step -- deflate "page" */
 	balloon_page_delete(page);
 	vb->num_pfns = VIRTIO_BALLOON_PAGES_PER_PAGE;
 	set_page_pfns(vb->pfns, page);
@@ -417,7 +414,9 @@ static int virtballoon_migratepage(struc
 
 	mutex_unlock(&vb->balloon_lock);
 
-	return MIGRATEPAGE_BALLOON_SUCCESS;
+	put_page(page); /* balloon reference */
+
+	return MIGRATEPAGE_SUCCESS;
 }
 
 /* define the balloon_mapping->a_ops callback to allow balloon page migration */
--- a/include/linux/balloon_compaction.h
+++ b/include/linux/balloon_compaction.h
@@ -27,10 +27,13 @@
  *      counter raised only while it is under our special handling;
  *
  * iii. after the lockless scan step have selected a potential balloon page for
- *      isolation, re-test the page->mapping flags and the page ref counter
+ *      isolation, re-test the PageBalloon mark and the PagePrivate flag
  *      under the proper page lock, to ensure isolating a valid balloon page
  *      (not yet isolated, nor under release procedure)
  *
+ *  iv. isolation or dequeueing procedure must clear PagePrivate flag under
+ *      page lock together with removing page from balloon device page list.
+ *
  * The functions provided by this interface are placed to help on coping with
  * the aforementioned balloon page corner case, as well as to ensure the simple
  * set of exposed rules are satisfied while we are dealing with balloon pages
@@ -71,28 +74,6 @@ static inline void balloon_devinfo_free(
 	kfree(b_dev_info);
 }
 
-/*
- * balloon_page_free - release a balloon page back to the page free lists
- * @page: ballooned page to be set free
- *
- * This function must be used to properly set free an isolated/dequeued balloon
- * page at the end of a sucessful page migration, or at the balloon driver's
- * page release procedure.
- */
-static inline void balloon_page_free(struct page *page)
-{
-	/*
-	 * Balloon pages always get an extra refcount before being isolated
-	 * and before being dequeued to help on sorting out fortuite colisions
-	 * between a thread attempting to isolate and another thread attempting
-	 * to release the very same balloon page.
-	 *
-	 * Before we handle the page back to Buddy, lets drop its extra refcnt.
-	 */
-	put_page(page);
-	__free_page(page);
-}
-
 #ifdef CONFIG_BALLOON_COMPACTION
 extern bool balloon_page_isolate(struct page *page);
 extern void balloon_page_putback(struct page *page);
@@ -108,74 +89,33 @@ static inline void balloon_mapping_free(
 }
 
 /*
- * page_flags_cleared - helper to perform balloon @page ->flags tests.
- *
- * As balloon pages are obtained from buddy and we do not play with page->flags
- * at driver level (exception made when we get the page lock for compaction),
- * we can safely identify a ballooned page by checking if the
- * PAGE_FLAGS_CHECK_AT_PREP page->flags are all cleared.  This approach also
- * helps us skip ballooned pages that are locked for compaction or release, thus
- * mitigating their racy check at balloon_page_movable()
- */
-static inline bool page_flags_cleared(struct page *page)
-{
-	return !(page->flags & PAGE_FLAGS_CHECK_AT_PREP);
-}
-
-/*
- * __is_movable_balloon_page - helper to perform @page mapping->flags tests
+ * __is_movable_balloon_page - helper to perform @page PageBalloon tests
  */
 static inline bool __is_movable_balloon_page(struct page *page)
 {
-	struct address_space *mapping = page->mapping;
-	return mapping_balloon(mapping);
+	return PageBalloon(page);
 }
 
 /*
- * balloon_page_movable - test page->mapping->flags to identify balloon pages
- *			  that can be moved by compaction/migration.
- *
- * This function is used at core compaction's page isolation scheme, therefore
- * most pages exposed to it are not enlisted as balloon pages and so, to avoid
- * undesired side effects like racing against __free_pages(), we cannot afford
- * holding the page locked while testing page->mapping->flags here.
+ * balloon_page_movable - test PageBalloon to identify balloon pages
+ *			  and PagePrivate to check that the page is not
+ *			  isolated and can be moved by compaction/migration.
  *
  * As we might return false positives in the case of a balloon page being just
- * released under us, the page->mapping->flags need to be re-tested later,
- * under the proper page lock, at the functions that will be coping with the
- * balloon page case.
+ * released under us, this need to be re-tested later, under the page lock.
  */
 static inline bool balloon_page_movable(struct page *page)
 {
-	/*
-	 * Before dereferencing and testing mapping->flags, let's make sure
-	 * this is not a page that uses ->mapping in a different way
-	 */
-	if (page_flags_cleared(page) && !page_mapped(page) &&
-	    page_count(page) == 1)
-		return __is_movable_balloon_page(page);
-
-	return false;
+	return PageBalloon(page) && PagePrivate(page);
 }
 
 /*
  * isolated_balloon_page - identify an isolated balloon page on private
  *			   compaction/migration page lists.
- *
- * After a compaction thread isolates a balloon page for migration, it raises
- * the page refcount to prevent concurrent compaction threads from re-isolating
- * the same page. For that reason putback_movable_pages(), or other routines
- * that need to identify isolated balloon pages on private pagelists, cannot
- * rely on balloon_page_movable() to accomplish the task.
  */
 static inline bool isolated_balloon_page(struct page *page)
 {
-	/* Already isolated balloon pages, by default, have a raised refcount */
-	if (page_flags_cleared(page) && !page_mapped(page) &&
-	    page_count(page) >= 2)
-		return __is_movable_balloon_page(page);
-
-	return false;
+	return PageBalloon(page);
 }
 
 /*
@@ -192,6 +132,8 @@ static inline void balloon_page_insert(s
 				       struct address_space *mapping,
 				       struct list_head *head)
 {
+	__SetPageBalloon(page);
+	SetPagePrivate(page);
 	page->mapping = mapping;
 	list_add(&page->lru, head);
 }
@@ -206,8 +148,12 @@ static inline void balloon_page_insert(s
  */
 static inline void balloon_page_delete(struct page *page)
 {
+	__ClearPageBalloon(page);
 	page->mapping = NULL;
-	list_del(&page->lru);
+	if (PagePrivate(page)) {
+		ClearPagePrivate(page);
+		list_del(&page->lru);
+	}
 }
 
 /*
@@ -258,6 +204,11 @@ static inline void balloon_page_delete(s
 	list_del(&page->lru);
 }
 
+static inline bool __is_movable_balloon_page(struct page *page)
+{
+	return false;
+}
+
 static inline bool balloon_page_movable(struct page *page)
 {
 	return false;
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -13,18 +13,9 @@ typedef void free_page_t(struct page *pa
  * Return values from addresss_space_operations.migratepage():
  * - negative errno on page migration failure;
  * - zero on page migration success;
- *
- * The balloon page migration introduces this special case where a 'distinct'
- * return code is used to flag a successful page migration to unmap_and_move().
- * This approach is necessary because page migration can race against balloon
- * deflation procedure, and for such case we could introduce a nasty page leak
- * if a successfully migrated balloon page gets released concurrently with
- * migration's unmap_and_move() wrap-up steps.
  */
 #define MIGRATEPAGE_SUCCESS		0
-#define MIGRATEPAGE_BALLOON_SUCCESS	1 /* special ret code for balloon page
-					   * sucessful migration case.
-					   */
+
 enum migrate_reason {
 	MR_COMPACTION,
 	MR_MEMORY_FAILURE,
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -553,6 +553,25 @@ static inline void __ClearPageBuddy(stru
 	atomic_set(&page->_mapcount, -1);
 }
 
+#define PAGE_BALLOON_MAPCOUNT_VALUE (-256)
+
+static inline int PageBalloon(struct page *page)
+{
+	return atomic_read(&page->_mapcount) == PAGE_BALLOON_MAPCOUNT_VALUE;
+}
+
+static inline void __SetPageBalloon(struct page *page)
+{
+	VM_BUG_ON_PAGE(atomic_read(&page->_mapcount) != -1, page);
+	atomic_set(&page->_mapcount, PAGE_BALLOON_MAPCOUNT_VALUE);
+}
+
+static inline void __ClearPageBalloon(struct page *page)
+{
+	VM_BUG_ON_PAGE(!PageBalloon(page), page);
+	atomic_set(&page->_mapcount, -1);
+}
+
 void put_page(struct page *page);
 void put_pages_list(struct list_head *pages);
 
--- a/mm/balloon_compaction.c
+++ b/mm/balloon_compaction.c
@@ -93,17 +93,12 @@ struct page *balloon_page_dequeue(struct
 		 * to be released by the balloon driver.
 		 */
 		if (trylock_page(page)) {
+			if (!PagePrivate(page)) {
+				/* raced with isolation */
+				unlock_page(page);
+				continue;
+			}
 			spin_lock_irqsave(&b_dev_info->pages_lock, flags);
-			/*
-			 * Raise the page refcount here to prevent any wrong
-			 * attempt to isolate this page, in case of coliding
-			 * with balloon_page_isolate() just after we release
-			 * the page lock.
-			 *
-			 * balloon_page_free() will take care of dropping
-			 * this extra refcount later.
-			 */
-			get_page(page);
 			balloon_page_delete(page);
 			spin_unlock_irqrestore(&b_dev_info->pages_lock, flags);
 			unlock_page(page);
@@ -187,7 +182,9 @@ static inline void __isolate_balloon_pag
 {
 	struct balloon_dev_info *b_dev_info = page->mapping->private_data;
 	unsigned long flags;
+
 	spin_lock_irqsave(&b_dev_info->pages_lock, flags);
+	ClearPagePrivate(page);
 	list_del(&page->lru);
 	b_dev_info->isolated_pages++;
 	spin_unlock_irqrestore(&b_dev_info->pages_lock, flags);
@@ -197,7 +194,9 @@ static inline void __putback_balloon_pag
 {
 	struct balloon_dev_info *b_dev_info = page->mapping->private_data;
 	unsigned long flags;
+
 	spin_lock_irqsave(&b_dev_info->pages_lock, flags);
+	SetPagePrivate(page);
 	list_add(&page->lru, &b_dev_info->pages);
 	b_dev_info->isolated_pages--;
 	spin_unlock_irqrestore(&b_dev_info->pages_lock, flags);
@@ -235,12 +234,11 @@ bool balloon_page_isolate(struct page *p
 		 */
 		if (likely(trylock_page(page))) {
 			/*
-			 * A ballooned page, by default, has just one refcount.
+			 * A ballooned page, by default, has PagePrivate set.
 			 * Prevent concurrent compaction threads from isolating
-			 * an already isolated balloon page by refcount check.
+			 * an already isolated balloon page by clearing it.
 			 */
-			if (__is_movable_balloon_page(page) &&
-			    page_count(page) == 2) {
+			if (balloon_page_movable(page)) {
 				__isolate_balloon_page(page);
 				unlock_page(page);
 				return true;
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -597,7 +597,7 @@ isolate_migratepages_range(struct zone *
 		 */
 		if (!PageLRU(page)) {
 			if (unlikely(balloon_page_movable(page))) {
-				if (locked && balloon_page_isolate(page)) {
+				if (balloon_page_isolate(page)) {
 					/* Successfully isolated */
 					goto isolate_success;
 				}
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -876,7 +876,7 @@ static int __unmap_and_move(struct page
 		}
 	}
 
-	if (unlikely(balloon_page_movable(page))) {
+	if (unlikely(isolated_balloon_page(page))) {
 		/*
 		 * A ballooned page does not need any special attention from
 		 * physical to virtual reverse mapping procedures.
@@ -955,17 +955,6 @@ static int unmap_and_move(new_page_t get
 
 	rc = __unmap_and_move(page, newpage, force, mode);
 
-	if (unlikely(rc == MIGRATEPAGE_BALLOON_SUCCESS)) {
-		/*
-		 * A ballooned page has been migrated already.
-		 * Now, it's the time to wrap-up counters,
-		 * handle the page back to Buddy and return.
-		 */
-		dec_zone_page_state(page, NR_ISOLATED_ANON +
-				    page_is_file_cache(page));
-		balloon_page_free(page);
-		return MIGRATEPAGE_SUCCESS;
-	}
 out:
 	if (rc != -EAGAIN) {
 		/*
@@ -988,6 +977,9 @@ out:
 	if (rc != MIGRATEPAGE_SUCCESS && put_new_page) {
 		ClearPageSwapBacked(newpage);
 		put_new_page(newpage, private);
+	} else if (unlikely(__is_movable_balloon_page(newpage))) {
+		/* drop our reference, page already in the balloon */
+		put_page(newpage);
 	} else
 		putback_lru_page(newpage);
 



  parent reply	other threads:[~2014-10-28  3:34 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-28  3:32 [PATCH 3.17 000/146] 3.17.2-stable review Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 001/146] btrfs: wake up transaction thread from SYNC_FS ioctl Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 002/146] btrfs: dont go readonly on existing qgroup items Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 003/146] btrfs: Fix a deadlock in btrfs_dev_replace_finishing() Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 004/146] Btrfs: add missing compression property remove in btrfs_ioctl_setflags Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 006/146] btrfs: Fix and enhance merge_extent_mapping() to insert best fitted extent map Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 007/146] Btrfs: dont do async reclaim during log replay Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 008/146] Btrfs: try not to ENOSPC on " Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 009/146] Btrfs: cleanup error handling in build_backref_tree Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 010/146] Btrfs: fix build_backref_tree issue with multiple shared blocks Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 011/146] btrfs: Fix the wrong condition judgment about subset extent map Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 012/146] Btrfs: fix race in WAIT_SYNC ioctl Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 013/146] Revert "Btrfs: race free update of commit root for ro snapshots" Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 014/146] fs: Add a missing permission check to do_umount Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 015/146] pci_ids: Add support for Intel Quark ILB Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 016/146] kvm: x86: fix stale mmio cache bug Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 017/146] kvm: fix potentially corrupt mmio cache Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 018/146] KVM: do not bias the generation number in kvm_current_mmio_generation Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 019/146] KVM: s390: unintended fallthrough for external call Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 020/146] kvm: dont take vcpu mutex for obviously invalid vcpu ioctls Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 021/146] x86,kvm,vmx: Preserve CR4 across VM entry Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 022/146] x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 023/146] spi: dw-mid: respect 8 bit mode Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 024/146] spi/rockchip: fix bug that cause the failure to read data in DMA mode Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 025/146] spi: dw-mid: check that DMA was inited before exit Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 026/146] HID: wacom - remove report_id from wacom_get_report interface Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 027/146] HID: wacom: fix timeout on probe for some wacoms Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 028/146] HID: rmi: check sanity of the incoming report Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 029/146] mpc85xx_edac: Make L2 interrupt shared too Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 030/146] regmap: debugfs: fix possbile NULL pointer dereference Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 031/146] regmap: fix NULL pointer dereference in _regmap_write/read Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 032/146] regmap: fix possible ZERO_SIZE_PTR pointer dereferencing error Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 033/146] be2iscsi: check ip buffer before copying Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 034/146] mptfusion: enable no_write_same for vmware scsi disks Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 035/146] regulator: ltc3589: fix broken voltage transitions Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 036/146] qla2xxx: fix kernel NULL pointer access Greg Kroah-Hartman
2014-10-28  3:32 ` [PATCH 3.17 037/146] qla2xxx: Use correct offset to req-q-out for reserve calculation Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 038/146] qla2xxx: Fix shost use-after-free on device removal Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 039/146] dmaengine: fix xor sources continuation Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 040/146] dmaengine: pl330: Fix NULL pointer dereference on probe failure Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 041/146] dmaengine: pl330: Fix NULL pointer dereference on driver unbind Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 042/146] firmware_class: make sure fw requests contain a name Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 043/146] arm64: debug: dont re-enable debug exceptions on return from el1_dbg Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 044/146] Drivers: hv: util: Properly pack the data for file copy functionality Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 045/146] Drivers: hv: vmbus: Cleanup vmbus_post_msg() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 046/146] Drivers: hv: vmbus: Cleanup vmbus_teardown_gpadl() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 047/146] Drivers: hv: vmbus: Cleanup vmbus_close_internal() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 048/146] Drivers: hv: vmbus: Cleanup vmbus_establish_gpadl() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 049/146] Drivers: hv: vmbus: Fix a bug in vmbus_open() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 050/146] Drivers: hv: vmbus: Cleanup hv_post_message() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 051/146] mei: bus: fix possible boundaries violation Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 052/146] m68k: Disable/restore interrupts in hwreg_present()/hwreg_write() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 053/146] Fixing lease renewal Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 054/146] Documentation: lzo: document part of the encoding Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 055/146] Revert "lzo: properly check for overruns" Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 056/146] lzo: check for length overrun in variable length encoding Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 057/146] tty: omap-serial: fix division by zero Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 058/146] nfs: fix duplicate proc entries Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 059/146] NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 060/146] NFSv4: fix open/lock state recovery error handling Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 061/146] NFSv4.1: Fix an NFSv4.1 state renewal regression Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 062/146] nfsd4: reserve adequate space for LOCK op Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 063/146] NFS: Fix an uninitialised pointer Oops in the writeback error path Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 064/146] NFS: Fix a bogus warning in nfs_generic_pgio Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 065/146] NFSv4.1/pnfs: replace broken pnfs_put_lseg_async Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 066/146] iwlwifi: mvm: disable BT Co-running by default Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 067/146] iwlwifi: Add missing PCI IDs for the 7260 series Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 068/146] spi: dw-mid: terminate ongoing transfers at exit Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 069/146] arm64: Fix compilation error on UP builds Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 070/146] arm64: compat: fix compat types affecting struct compat_elf_prpsinfo Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 071/146] ALSA: pcm: use the same dma mmap codepath both for arm and arm64 Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 073/146] ALSA: emu10k1: Fix deadlock in synth voice lookup Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 074/146] ALSA: ALC283 codec - Avoid pop noise on headphones during suspend/resume Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 075/146] ALSA: usb-audio: Add support for Steinberg UR22 USB interface Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 076/146] ALSA: hda - hdmi: Fix missing ELD change event on plug/unplug Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 077/146] ALSA: hda - Fix inverted LED gpio setup for Lenovo Ideapad Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 078/146] ALSA: hda - Add missing terminating entry to SND_HDA_PIN_QUIRK macro Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 079/146] clk: qcom: Add IPQ8064 PLL required for USB Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 080/146] ARM: at91/dt: Fix typo regarding can0_clk Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 081/146] ARM: at91: fix at91sam9263ek DT mmc pinmuxing settings Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 082/146] ARM: at91/PMC: dont forget to write PMC_PCDR register to disable clocks Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 083/146] ARM: Kirkwood: Fix DT based DSA Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 084/146] ARM: mvebu: Netgear RN104: Use Hardware BCH ECC Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 085/146] ARM: mvebu: Netgear RN2120: " Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 086/146] ARM: mvebu: Netgear RN102: " Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 087/146] ARM: dts: imx28-evk: Let i2c0 run at 100kHz Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 088/146] ecryptfs: avoid to access NULL pointer when write metadata in xattr Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 089/146] udf: Fix loading of special inodes Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 090/146] vfio-pci: Fix remove path locking Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 091/146] xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 092/146] xfs: fix agno increment in xfs_inumbers() loop Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 093/146] PCI: mvebu: Fix uninitialized variable in mvebu_get_tgt_attr() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 094/146] PCI: Add missing MEM_64 mask in pci_assign_unassigned_bridge_resources() Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 095/146] PCI: Increase IBM ipr SAS Crocodile BARs to at least system page size Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 096/146] PCI: Generate uppercase hex for modalias interface class Greg Kroah-Hartman
2014-10-28  3:33 ` [PATCH 3.17 097/146] rt2800: correct BBP1_TX_POWER_CTRL mask Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 098/146] Revert "ath9k_hw: reduce ANI firstep range for older chips" Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 099/146] Bluetooth: Fix HCI H5 corrupted ack value Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 100/146] Bluetooth: Fix incorrect LE CoC PDU length restriction based on HCI MTU Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 101/146] Bluetooth: Fix issue with USB suspend in btusb driver Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 102/146] Bluetooth: Fix setting correct security level when initiating SMP Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 103/146] Bluetooth: 6lowpan: Increase the connection timeout value Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 104/146] Bluetooth: 6lowpan: Set the peer IPv6 address correctly Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 105/146] Bluetooth: 6lowpan: Route packets that are not meant to peer via correct device Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 106/146] mm: clear __GFP_FS when PF_MEMALLOC_NOIO is set Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 108/146] mm/cma: fix cma bitmap aligned mask computing Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 109/146] kernel: add support for gcc 5 Greg Kroah-Hartman
2014-10-28  3:34 ` Greg Kroah-Hartman [this message]
2014-10-28  3:34 ` [PATCH 3.17 112/146] futex: Ensure get_futex_key_refs() always implies a barrier Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 113/146] powerpc: Fix warning reported by verify_cpu_node_mapping() Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 114/146] powerpc: Only set numa node information for present cpus at boottime Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 115/146] powerpc/iommu/ddw: Fix endianness Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 116/146] powerpc/eeh: Clear frozen device state in time Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 117/146] ima: fix fallback to use new_sync_read() Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 118/146] ima: provide flag to identify new empty files Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 119/146] ima: pass opened flag to identify newly created files Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 120/146] sparc32: dma_alloc_coherent must honour gfp flags Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 121/146] sparc64: sun4v TLB error power off events Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 122/146] sparc64: Fix corrupted thread fault code Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 123/146] sparc64: find_node adjustment Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 124/146] sparc64: Move request_irq() from ldc_bind() to ldc_alloc() Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 125/146] sparc: Let memset return the address argument Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 126/146] sparc64: Fix reversed start/end in flush_tlb_kernel_range() Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 127/146] sparc64: Fix lockdep warnings on reboot on Ultra-5 Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 128/146] sparc64: Fix FPU register corruption with AES crypto offload Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 129/146] sparc64: Do not define thread fpregs save area as zero-length array Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 130/146] sparc64: Fix hibernation code refrence to PAGE_OFFSET Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 131/146] sparc64: correctly recognise M6 and M7 cpu type Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 132/146] sparc64: support M6 and M7 for building CPU distribution map Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 133/146] sparc64: cpu hardware caps support for sparc M6 and M7 Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 134/146] sparc64: T5 PMU Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 135/146] sparc64: Switch to 4-level page tables Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 136/146] sparc64: Define VA hole at run time, rather than at compile time Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 137/146] sparc64: Adjust KTSB assembler to support larger physical addresses Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 138/146] sparc64: Fix physical memory management regressions with large max_phys_bits Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 139/146] sparc64: Use kernel page tables for vmemmap Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 140/146] sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53 Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 141/146] sparc64: Adjust vmalloc region size based upon available virtual address bits Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 142/146] sparc64: sparse irq Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 143/146] sparc64: Kill unnecessary tables and increase MAX_BANKS Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 144/146] sparc64: Increase size of boot string to 1024 bytes Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 145/146] sparc64: Fix register corruption in top-most kernel stack frame during boot Greg Kroah-Hartman
2014-10-28  3:34 ` [PATCH 3.17 146/146] sparc64: Implement __get_user_pages_fast() Greg Kroah-Hartman
2014-10-28 15:15 ` [PATCH 3.17 000/146] 3.17.2-stable review Guenter Roeck
2014-10-28 23:40   ` Greg Kroah-Hartman
2014-10-28 16:15 ` Shuah Khan
2014-10-28 23:40   ` 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=20141028033348.259288444@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=aquini@redhat.com \
    --cc=k.khlebnikov@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ryabinin.a.a@gmail.com \
    --cc=sasha.levin@oracle.com \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.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).