LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 3.16.y-ckt 026/126] mm: protect set_page_dirty() from ongoing truncation
Date: Tue, 27 Jan 2015 12:15:31 +0000	[thread overview]
Message-ID: <1422361031-19364-27-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1422361031-19364-1-git-send-email-luis.henriques@canonical.com>

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

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

From: Johannes Weiner <hannes@cmpxchg.org>

commit 2d6d7f98284648c5ed113fe22a132148950b140f upstream.

Tejun, while reviewing the code, spotted the following race condition
between the dirtying and truncation of a page:

__set_page_dirty_nobuffers()       __delete_from_page_cache()
  if (TestSetPageDirty(page))
                                     page->mapping = NULL
				     if (PageDirty())
				       dec_zone_page_state(page, NR_FILE_DIRTY);
				       dec_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE);
    if (page->mapping)
      account_page_dirtied(page)
        __inc_zone_page_state(page, NR_FILE_DIRTY);
	__inc_bdi_stat(mapping->backing_dev_info, BDI_RECLAIMABLE);

which results in an imbalance of NR_FILE_DIRTY and BDI_RECLAIMABLE.

Dirtiers usually lock out truncation, either by holding the page lock
directly, or in case of zap_pte_range(), by pinning the mapcount with
the page table lock held.  The notable exception to this rule, though,
is do_wp_page(), for which this race exists.  However, do_wp_page()
already waits for a locked page to unlock before setting the dirty bit,
in order to prevent a race where clear_page_dirty() misses the page bit
in the presence of dirty ptes.  Upgrade that wait to a fully locked
set_page_dirty() to also cover the situation explained above.

Afterwards, the code in set_page_dirty() dealing with a truncation race
is no longer needed.  Remove it.

Reported-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 include/linux/writeback.h |  1 -
 mm/memory.c               | 27 +++++++++++++++++----------
 mm/page-writeback.c       | 43 ++++++++++++-------------------------------
 3 files changed, 29 insertions(+), 42 deletions(-)

diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 5777c13849ba..0aa44e254a21 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -178,7 +178,6 @@ int write_cache_pages(struct address_space *mapping,
 		      struct writeback_control *wbc, writepage_t writepage,
 		      void *data);
 int do_writepages(struct address_space *mapping, struct writeback_control *wbc);
-void set_page_dirty_balance(struct page *page);
 void writeback_set_ratelimit(void);
 void tag_pages_for_writeback(struct address_space *mapping,
 			     pgoff_t start, pgoff_t end);
diff --git a/mm/memory.c b/mm/memory.c
index 49787747ca33..dda1dc6d92dd 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2148,17 +2148,24 @@ reuse:
 		if (!dirty_page)
 			return ret;
 
-		/*
-		 * Yes, Virginia, this is actually required to prevent a race
-		 * with clear_page_dirty_for_io() from clearing the page dirty
-		 * bit after it clear all dirty ptes, but before a racing
-		 * do_wp_page installs a dirty pte.
-		 *
-		 * do_shared_fault is protected similarly.
-		 */
 		if (!page_mkwrite) {
-			wait_on_page_locked(dirty_page);
-			set_page_dirty_balance(dirty_page);
+			struct address_space *mapping;
+			int dirtied;
+
+			lock_page(dirty_page);
+			dirtied = set_page_dirty(dirty_page);
+			VM_BUG_ON_PAGE(PageAnon(dirty_page), dirty_page);
+			mapping = dirty_page->mapping;
+			unlock_page(dirty_page);
+
+			if (dirtied && mapping) {
+				/*
+				 * Some device drivers do not set page.mapping
+				 * but still dirty their pages
+				 */
+				balance_dirty_pages_ratelimited(mapping);
+			}
+
 			/* file_update_time outside page_lock */
 			if (vma->vm_file)
 				file_update_time(vma->vm_file);
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index e0c943014eb7..dfe512e911c8 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1544,16 +1544,6 @@ pause:
 		bdi_start_background_writeback(bdi);
 }
 
-void set_page_dirty_balance(struct page *page)
-{
-	if (set_page_dirty(page)) {
-		struct address_space *mapping = page_mapping(page);
-
-		if (mapping)
-			balance_dirty_pages_ratelimited(mapping);
-	}
-}
-
 static DEFINE_PER_CPU(int, bdp_ratelimits);
 
 /*
@@ -2143,32 +2133,25 @@ EXPORT_SYMBOL(account_page_writeback);
  * page dirty in that case, but not all the buffers.  This is a "bottom-up"
  * dirtying, whereas __set_page_dirty_buffers() is a "top-down" dirtying.
  *
- * Most callers have locked the page, which pins the address_space in memory.
- * But zap_pte_range() does not lock the page, however in that case the
- * mapping is pinned by the vma's ->vm_file reference.
- *
- * We take care to handle the case where the page was truncated from the
- * mapping by re-checking page_mapping() inside tree_lock.
+ * The caller must ensure this doesn't race with truncation.  Most will simply
+ * hold the page lock, but e.g. zap_pte_range() calls with the page mapped and
+ * the pte lock held, which also locks out truncation.
  */
 int __set_page_dirty_nobuffers(struct page *page)
 {
 	if (!TestSetPageDirty(page)) {
 		struct address_space *mapping = page_mapping(page);
-		struct address_space *mapping2;
 		unsigned long flags;
 
 		if (!mapping)
 			return 1;
 
 		spin_lock_irqsave(&mapping->tree_lock, flags);
-		mapping2 = page_mapping(page);
-		if (mapping2) { /* Race with truncate? */
-			BUG_ON(mapping2 != mapping);
-			WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page));
-			account_page_dirtied(page, mapping);
-			radix_tree_tag_set(&mapping->page_tree,
-				page_index(page), PAGECACHE_TAG_DIRTY);
-		}
+		BUG_ON(page_mapping(page) != mapping);
+		WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page));
+		account_page_dirtied(page, mapping);
+		radix_tree_tag_set(&mapping->page_tree, page_index(page),
+				   PAGECACHE_TAG_DIRTY);
 		spin_unlock_irqrestore(&mapping->tree_lock, flags);
 		if (mapping->host) {
 			/* !PageAnon && !swapper_space */
@@ -2325,12 +2308,10 @@ int clear_page_dirty_for_io(struct page *page)
 		/*
 		 * We carefully synchronise fault handlers against
 		 * installing a dirty pte and marking the page dirty
-		 * at this point. We do this by having them hold the
-		 * page lock at some point after installing their
-		 * pte, but before marking the page dirty.
-		 * Pages are always locked coming in here, so we get
-		 * the desired exclusion. See mm/memory.c:do_wp_page()
-		 * for more comments.
+		 * at this point.  We do this by having them hold the
+		 * page lock while dirtying the page, and pages are
+		 * always locked coming in here, so we get the desired
+		 * exclusion.
 		 */
 		if (TestClearPageDirty(page)) {
 			dec_zone_page_state(page, NR_FILE_DIRTY);
-- 
2.1.4


  parent reply	other threads:[~2015-01-27 12:17 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-27 12:15 [3.16.y-ckt stable] Linux 3.16.7-ckt5 stable review Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 001/126] spi: sh-msiof: Add runtime PM lock in initializing Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 002/126] drm/i915: Don't call intel_prepare_page_flip() multiple times on gen2-4 Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 003/126] x86_64, vdso: Fix the vdso address randomization algorithm Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 004/126] drm/nv4c/mc: disable msi Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 005/126] ASoC: dwc: Ensure FIFOs are flushed to prevent channel swap Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 006/126] x86, vdso: Use asm volatile in __getcpu Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 007/126] video/logo: prevent use of logos after they have been freed Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 008/126] video/fbdev: fix defio's fsync Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 009/126] Add USB_EHCI_EXYNOS to multi_v7_defconfig Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 010/126] SCSI: fix regression in scsi_send_eh_cmnd() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 011/126] Btrfs: don't delay inode ref updates during log replay Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 012/126] net: ethernet: cpsw: fix hangs with interrupts Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 013/126] ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 014/126] drm/radeon: KV has three PPLLs (v2) Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 015/126] drm/radeon: fix sad_count check for dce3 Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 016/126] drm/radeon: properly filter DP1.2 4k modes on non-DP1.2 hw Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 017/126] drm/radeon: adjust default bapm settings for KV Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 018/126] ACPI / PM: Fix PM initialization for devices that are not present Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 019/126] mm: propagate error from stack expansion even for guard page Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 020/126] ALSA: hda - Add new GPU codec ID 0x10de0072 to snd-hda Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 021/126] vfio-pci: Fix the check on pci device type in vfio_pci_probe() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 022/126] rpc: fix xdr_truncate_encode to handle buffer ending on page boundary Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 023/126] arm64/efi: add missing call to early_ioremap_reset() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 024/126] exit: fix race between wait_consider_task() and wait_task_zombie() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 025/126] mm: prevent endless growth of anon_vma hierarchy Luis Henriques
2015-01-27 12:15 ` Luis Henriques [this message]
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 027/126] mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process being killed Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 028/126] sched/deadline: Fix migration of SCHED_DEADLINE tasks Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 029/126] sched/deadline: Avoid double-accounting in case of missed deadlines Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 030/126] HID: roccat: potential out of bounds in pyra_sysfs_write_settings() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 031/126] mm: Don't count the stack guard page towards RLIMIT_STACK Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 032/126] mm: fix corner case in anon_vma endless growing prevention Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 033/126] xen/arm/arm64: introduce xen_arch_need_swiotlb Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 034/126] perf session: Do not fail on processing out of order event Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 035/126] fsnotify: next_i is freed during fsnotify_unmount_inodes Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 036/126] drivers/rtc/rtc-isl12057.c: fix masking of register values Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 037/126] ASoC: eukrea-tlv320: Fix of_node_put() call with uninitialized object Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 038/126] HID: i2c-hid: Do not free buffers in i2c_hid_stop() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 039/126] ALSA: fireworks: fix an endianness bug for transaction length Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 040/126] mtd: nand: omap: Fix NAND enumeration on 3430 LDP Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 041/126] ocfs2: fix the wrong directory passed to ocfs2_lookup_ino_from_name() when link file Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 042/126] powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 043/126] HID: add battery quirk for USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO keyboard Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 044/126] ALSA: hda - using uninitialized data Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 045/126] nilfs2: fix the nilfs_iget() vs. nilfs_new_inode() races Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 046/126] scripts/kernel-doc: don't eat struct members with __aligned Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 047/126] ARM: dts: DRA7: wdt: Fix compatible property for watchdog node Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 048/126] ARM: dts: Enable PWM node by default for s3c64xx Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 049/126] ARM: OMAP4: PM: Only do static dependency configuration in omap4_init_static_deps Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 050/126] Revert "ARM: 7830/1: delay: don't bother reporting bogomips in /proc/cpuinfo" Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 051/126] HID: Add a new id 0x501a for Genius MousePen i608X Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 052/126] netfilter: ipset: small potential read beyond the end of buffer Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 053/126] bridge: fix netfilter/NF_BR_LOCAL_OUT for own, locally generated queries Luis Henriques
2015-01-27 12:15 ` [PATCH 3.16.y-ckt 054/126] bcache: Make sure to pass GFP_WAIT to mempool_alloc() Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 055/126] ACPICA: Add new GPE public interface - acpi_mark_gpe_for_wake Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 056/126] ACPI / scan: No implicit wake notification for buttons Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 057/126] gre: fix the inner mac header in nbma tunnel xmit path Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 058/126] netlink: Always copy on mmap TX Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 059/126] netlink: Don't reorder loads/stores before marking mmap netlink frame as available Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 060/126] in6: fix conflict with glibc Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 061/126] tg3: tg3_disable_ints using uninitialized mailbox value to disable interrupts Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 062/126] batman-adv: Unify fragment size calculation Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 063/126] batman-adv: avoid NULL dereferences and fix if check Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 064/126] net: Fix stacked vlan offload features computation Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 065/126] net: Reset secmark when scrubbing packet Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 066/126] net/core: Handle csum for CHECKSUM_COMPLETE VXLAN forwarding Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 067/126] tcp: Do not apply TSO segment limit to non-TSO packets Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 068/126] xen-netback: fixing the propagation of the transmit shaper timeout Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 069/126] alx: fix alx_poll() Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 070/126] team: avoid possible underflow of count_pending value for notify_peers and mcast_rejoin Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 071/126] enic: fix rx skb checksum Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 072/126] netfilter: conntrack: disable generic tracking for known protocols Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 073/126] xen-netfront: Fix handling packets on compound pages with skb_linearize Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 074/126] xen-netfront: use correct linear area after linearizing an skb Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 075/126] usb: musb: stuff leak of struct usb_hcd Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 076/126] usb: gadget: gadgetfs: Free memory allocated by memdup_user() Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 077/126] usb: gadget: udc: atmel: change setting for DMA Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 078/126] [PATCH] usb: gadget: udc: atmel: fix possible IN hang issue Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 079/126] ARM: imx6q: drop unnecessary semicolon Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 080/126] ARM: clk-imx6q: fix video divider for rev T0 1.0 Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 081/126] ARM: dts: imx25: Fix the SPI1 clocks Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 082/126] USB: cp210x: fix ID for production CEL MeshConnect USB Stick Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 083/126] USB: keyspan: fix null-deref at probe Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 084/126] iwlwifi: mvm: fix Rx with both chains Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 085/126] ARM: imx6sx: Set PLL2 as parent of QSPI clocks Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 086/126] ARM: omap5/dra7xx: Fix frequency typos Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 087/126] ARM: omap5/dra7xx: Enable booting secondary CPU in HYP mode Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 088/126] LOCKD: Fix a race when initialising nlmsvc_timeout Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 089/126] NFSv4.1: Fix client id trunking on Linux Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 090/126] ARM: dts: imx51-babbage: Fix ULPI PHY reset modelling Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 091/126] USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 092/126] vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 093/126] USB: qcserial/option: make AT URCs work for Sierra Wireless MC73xx Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 094/126] ARM: dts: berlin: fix io clk and add missing core clk for BG2Q sdhci2 host Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 095/126] ARM: dts: berlin: add broken-cd and set bus width for eMMC in Marvell DMP DT Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 096/126] ARM: dts: berlin: correct BG2Q's SM GPIO location Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 097/126] xhci: Check if slot is already in default state before moving it there Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 098/126] USB: EHCI: fix initialization bug in iso_stream_schedule() Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 099/126] xhci: Add broken-streams quirk for Fresco Logic FL1000G xhci controllers Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 100/126] uas: Add US_FL_NO_ATA_1X for Seagate devices with usb-id 0bc2:a013 Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 101/126] uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS566 " Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 102/126] uas: Add US_FL_NO_ATA_1X for 2 more Seagate disk enclosures Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 103/126] OHCI: add a quirk for ULi M5237 blocking on reset Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 104/126] mei: clean reset bit before reset Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 105/126] target: Drop arbitrary maximum I/O size limit Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 106/126] usb: gadget: udc: atmel: fix possible oops when unloading module Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 107/126] USB: console: fix uninitialised ldisc semaphore Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 108/126] USB: console: fix potential use after free Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 109/126] mmc: sdhci-pxav3: fix error handling of sdhci_add_host Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 110/126] mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 111/126] mmc: sdhci: Fix sleep in atomic after inserting SD card Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 112/126] clk: at91: keep slow clk enabled to prevent system hang Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 113/126] clk: berlin: bg2q: remove non-exist "smemc" gate clock Luis Henriques
2015-01-27 12:16 ` [PATCH 3.16.y-ckt 114/126] drivers: net: cpsw: fix multicast flush in dual emac mode Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 115/126] usb: dwc3: gadget: Fix TRB preparation during SG Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 116/126] usb: dwc3: gadget: Stop TRB preparation after limit is reached Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 117/126] ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 118/126] reset: sunxi: fix spinlock initialization Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 119/126] clk: Don't try to use a struct clk* after it could have been freed Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 120/126] tcm_loop: Fixup tag handling Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 121/126] net: prevent of emerging cross-namespace symlinks Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 122/126] net: fix creation adjacent device symlinks Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 123/126] drm/i915: Evict CS TLBs between batches Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 124/126] Revert "swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single" Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 125/126] ARM: dts: dra7-evm: fix qspi device tree partition size Luis Henriques
2015-01-27 12:17 ` [PATCH 3.16.y-ckt 126/126] ARM: shmobile: sh73a0 legacy: Set .control_parent for all irqpin instances Luis Henriques

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=1422361031-19364-27-git-send-email-luis.henriques@canonical.com \
    --to=luis.henriques@canonical.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --subject='Re: [PATCH 3.16.y-ckt 026/126] mm: protect set_page_dirty() from ongoing truncation' \
    /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

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).