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, Rik van Riel <riel@redhat.com>,
	Mel Gorman <mgorman@suse.de>, Alex Thorlton <athorlton@sgi.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 3.10 073/129] mm: fix TLB flush race between migration, and change_protection_range
Date: Mon,  6 Jan 2014 14:38:22 -0800	[thread overview]
Message-ID: <20140106223901.700174649@linuxfoundation.org> (raw)
In-Reply-To: <20140106223859.589799655@linuxfoundation.org>

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

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

From: Rik van Riel <riel@redhat.com>

commit 20841405940e7be0617612d521e206e4b6b325db upstream.

There are a few subtle races, between change_protection_range (used by
mprotect and change_prot_numa) on one side, and NUMA page migration and
compaction on the other side.

The basic race is that there is a time window between when the PTE gets
made non-present (PROT_NONE or NUMA), and the TLB is flushed.

During that time, a CPU may continue writing to the page.

This is fine most of the time, however compaction or the NUMA migration
code may come in, and migrate the page away.

When that happens, the CPU may continue writing, through the cached
translation, to what is no longer the current memory location of the
process.

This only affects x86, which has a somewhat optimistic pte_accessible.
All other architectures appear to be safe, and will either always flush,
or flush whenever there is a valid mapping, even with no permissions
(SPARC).

The basic race looks like this:

CPU A			CPU B			CPU C

						load TLB entry
make entry PTE/PMD_NUMA
			fault on entry
						read/write old page
			start migrating page
			change PTE/PMD to new page
						read/write old page [*]
flush TLB
						reload TLB from new entry
						read/write new page
						lose data

[*] the old page may belong to a new user at this point!

The obvious fix is to flush remote TLB entries, by making sure that
pte_accessible aware of the fact that PROT_NONE and PROT_NUMA memory may
still be accessible if there is a TLB flush pending for the mm.

This should fix both NUMA migration and compaction.

[mgorman@suse.de: fix build]
Signed-off-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Mel Gorman <mgorman@suse.de>
Cc: Alex Thorlton <athorlton@sgi.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>

---
 arch/sparc/include/asm/pgtable_64.h |    4 +--
 arch/x86/include/asm/pgtable.h      |   11 +++++++--
 include/asm-generic/pgtable.h       |    2 -
 include/linux/mm_types.h            |   44 ++++++++++++++++++++++++++++++++++++
 kernel/fork.c                       |    1 
 mm/huge_memory.c                    |    7 +++++
 mm/mprotect.c                       |    2 +
 mm/pgtable-generic.c                |    5 ++--
 8 files changed, 69 insertions(+), 7 deletions(-)

--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@ -616,7 +616,7 @@ static inline unsigned long pte_present(
 }
 
 #define pte_accessible pte_accessible
-static inline unsigned long pte_accessible(pte_t a)
+static inline unsigned long pte_accessible(struct mm_struct *mm, pte_t a)
 {
 	return pte_val(a) & _PAGE_VALID;
 }
@@ -806,7 +806,7 @@ static inline void __set_pte_at(struct m
 	 * SUN4V NOTE: _PAGE_VALID is the same value in both the SUN4U
 	 *             and SUN4V pte layout, so this inline test is fine.
 	 */
-	if (likely(mm != &init_mm) && pte_accessible(orig))
+	if (likely(mm != &init_mm) && pte_accessible(mm, orig))
 		tlb_batch_add(mm, addr, ptep, orig, fullmm);
 }
 
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -415,9 +415,16 @@ static inline int pte_present(pte_t a)
 }
 
 #define pte_accessible pte_accessible
-static inline int pte_accessible(pte_t a)
+static inline bool pte_accessible(struct mm_struct *mm, pte_t a)
 {
-	return pte_flags(a) & _PAGE_PRESENT;
+	if (pte_flags(a) & _PAGE_PRESENT)
+		return true;
+
+	if ((pte_flags(a) & (_PAGE_PROTNONE | _PAGE_NUMA)) &&
+			mm_tlb_flush_pending(mm))
+		return true;
+
+	return false;
 }
 
 static inline int pte_hidden(pte_t pte)
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -220,7 +220,7 @@ static inline int pmd_same(pmd_t pmd_a,
 #endif
 
 #ifndef pte_accessible
-# define pte_accessible(pte)		((void)(pte),1)
+# define pte_accessible(mm, pte)	((void)(pte), 1)
 #endif
 
 #ifndef flush_tlb_fix_spurious_fault
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -437,6 +437,14 @@ struct mm_struct {
 	 */
 	int first_nid;
 #endif
+#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
+	/*
+	 * An operation with batched TLB flushing is going on. Anything that
+	 * can move process memory needs to flush the TLB when moving a
+	 * PROT_NONE or PROT_NUMA mapped page.
+	 */
+	bool tlb_flush_pending;
+#endif
 	struct uprobes_state uprobes_state;
 };
 
@@ -457,4 +465,40 @@ static inline cpumask_t *mm_cpumask(stru
 	return mm->cpu_vm_mask_var;
 }
 
+#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
+/*
+ * Memory barriers to keep this state in sync are graciously provided by
+ * the page table locks, outside of which no page table modifications happen.
+ * The barriers below prevent the compiler from re-ordering the instructions
+ * around the memory barriers that are already present in the code.
+ */
+static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
+{
+	barrier();
+	return mm->tlb_flush_pending;
+}
+static inline void set_tlb_flush_pending(struct mm_struct *mm)
+{
+	mm->tlb_flush_pending = true;
+	barrier();
+}
+/* Clearing is done after a TLB flush, which also provides a barrier. */
+static inline void clear_tlb_flush_pending(struct mm_struct *mm)
+{
+	barrier();
+	mm->tlb_flush_pending = false;
+}
+#else
+static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
+{
+	return false;
+}
+static inline void set_tlb_flush_pending(struct mm_struct *mm)
+{
+}
+static inline void clear_tlb_flush_pending(struct mm_struct *mm)
+{
+}
+#endif
+
 #endif /* _LINUX_MM_TYPES_H */
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -544,6 +544,7 @@ static struct mm_struct *mm_init(struct
 	mm->cached_hole_size = ~0UL;
 	mm_init_aio(mm);
 	mm_init_owner(mm, p);
+	clear_tlb_flush_pending(mm);
 
 	if (likely(!mm_alloc_pgd(mm))) {
 		mm->def_flags = 0;
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1352,6 +1352,13 @@ int do_huge_pmd_numa_page(struct mm_stru
 	}
 
 	/*
+	 * The page_table_lock above provides a memory barrier
+	 * with change_protection_range.
+	 */
+	if (mm_tlb_flush_pending(mm))
+		flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE);
+
+	/*
 	 * Migrate the THP to the requested node, returns with page unlocked
 	 * and pmd_numa cleared.
 	 */
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -206,6 +206,7 @@ static unsigned long change_protection_r
 	BUG_ON(addr >= end);
 	pgd = pgd_offset(mm, addr);
 	flush_cache_range(vma, addr, end);
+	set_tlb_flush_pending(mm);
 	do {
 		next = pgd_addr_end(addr, end);
 		if (pgd_none_or_clear_bad(pgd))
@@ -217,6 +218,7 @@ static unsigned long change_protection_r
 	/* Only flush the TLB if we actually modified any entries: */
 	if (pages)
 		flush_tlb_range(vma, start, end);
+	clear_tlb_flush_pending(mm);
 
 	return pages;
 }
--- a/mm/pgtable-generic.c
+++ b/mm/pgtable-generic.c
@@ -86,9 +86,10 @@ int pmdp_clear_flush_young(struct vm_are
 pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,
 		       pte_t *ptep)
 {
+	struct mm_struct *mm = (vma)->vm_mm;
 	pte_t pte;
-	pte = ptep_get_and_clear((vma)->vm_mm, address, ptep);
-	if (pte_accessible(pte))
+	pte = ptep_get_and_clear(mm, address, ptep);
+	if (pte_accessible(mm, pte))
 		flush_tlb_page(vma, address);
 	return pte;
 }



  parent reply	other threads:[~2014-01-06 22:38 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-06 22:37 [PATCH 3.10 000/129] 3.10.26-stable review Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 001/129] USB: serial: fix race in generic write Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 002/129] ceph: cleanup aborted requests when re-sending requests Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 003/129] ceph: wake up safe waiters when unregistering request Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 004/129] powerpc: kvm: fix rare but potential deadlock scene Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 005/129] TTY: pmac_zilog, check existence of ports in pmz_console_init() Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 006/129] staging: comedi: 8255_pci: fix for newer PCI-DIO48H Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 007/129] ASoC: tegra: fix uninitialized variables in set_fmt Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 008/129] ASoC: wm8904: fix DSP mode B configuration Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 009/129] ASoC: wm_adsp: Add small delay while polling DSP RAM start Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 010/129] ASoC: wm5110: Correct HPOUT3 DAPM route typo Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 011/129] ALSA: Add SNDRV_PCM_STATE_PAUSED case in wait_for_avail function Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 012/129] ALSA: hda - Add enable_msi=0 workaround for four HP machines Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 013/129] iio:imu:adis16400 fix pressure channel scan type Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 014/129] iio:adc:ad7887 Fix channel reported endianness from cpu to big endian Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 015/129] serial: 8250_dw: add new ACPI IDs Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 016/129] usb: serial: zte_ev: move support for ZTE AC2726 from zte_ev back to option Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 017/129] can: peak_usb: fix mem leak in pcan_usb_pro_init() Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 019/129] selinux: fix broken peer recv check Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 020/129] selinux: selinux_setprocattr()->ptrace_parent() needs rcu_read_lock() Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 021/129] iser-target: fix error return code in isert_create_device_ib_res() Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 022/129] iscsi-target: Fix-up all zero data-length CDBs with R/W_BIT set Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 023/129] target/file: Update hw_max_sectors based on current block_size Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 024/129] ftrace: Initialize the ftrace profiler for each possible cpu Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 025/129] arm64: ptrace: avoid using HW_BREAKPOINT_EMPTY for disabled events Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 026/129] arm64: spinlock: retry trylock operation if strex fails on free lock Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 027/129] ARM: OMAP2+: hwmod_data: fix missing OMAP_INTC_START in irq data Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 028/129] x86 idle: Repair large-server 50-watt idle-power regression Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 029/129] ext4: call ext4_error_inode() if jbd2_journal_dirty_metadata() fails Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 030/129] ext4: fix use-after-free in ext4_mb_new_blocks Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 032/129] ext4: Do not reserve clusters when fs doesnt support extents Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 033/129] ext4: fix deadlock when writing in ENOSPC conditions Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 034/129] ext4: add explicit casts when masking cluster sizes Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 036/129] sched: numa: skip inaccessible VMAs Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 037/129] sched/rt: Fix rqs cpupri leak while enqueue/dequeue child RT entities Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 038/129] firewire: sbp2: bring back WRITE SAME support Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 039/129] net_dma: mark broken Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 041/129] drm/radeon: Fix sideport problems on certain RS690 boards Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 042/129] drm/radeon: add missing display tiling setup for oland Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 044/129] drm/i915: Hold mutex across i915_gem_release Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 045/129] drm/i915: dont update the dri1 breadcrumb with modesetting Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 046/129] drm/radeon: fix asic gfx values for scrapper asics Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 049/129] drm/radeon: 0x9649 is SUMO2 not SUMO Greg Kroah-Hartman
2014-01-06 22:37 ` [PATCH 3.10 050/129] ceph: Avoid data inconsistency due to d-cache aliasing in readpage() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 051/129] tg3: Expand 4g_overflow_test workaround to skb fragments of any size Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 052/129] auxvec.h: account for AT_HWCAP2 in AT_VECTOR_SIZE_BASE Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 053/129] dm9601: fix reception of full size ethernet frames on dm9620/dm9621a Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 054/129] dm9601: work around tx fifo sync issue on dm962x Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 055/129] ath9k: Fix interrupt handling for the AR9002 family Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 056/129] ath9k_htc: properly set MAC address and BSSID mask Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 057/129] KVM: x86: Fix APIC map calculation after re-enabling Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 058/129] powerpc: Fix bad stack check in exception entry Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 059/129] powerpc: Align p_end Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 060/129] cpupower: Fix segfault due to incorrect getopt_long arugments Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 061/129] libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for Seagate Momentus SpinPoint M8 Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 062/129] libata: Add atapi_dmadir force flag Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 063/129] libata: disable a disk via libata.force params Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 065/129] radiotap: fix bitmap-end-finding buffer overrun Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 066/129] rtlwifi: pci: Fix oops on driver unload Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 067/129] intel_pstate: Fail initialization if P-state information is missing Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 068/129] Revert "of/address: Handle #address-cells > 2 specially" Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 069/129] mm: clear pmd_numa before invalidating Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 070/129] mm: numa: ensure anon_vma is locked to prevent parallel THP splits Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 071/129] mm: numa: avoid unnecessary work on the failure path Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 072/129] sched: fix the theoretical signal_wake_up() vs schedule() race Greg Kroah-Hartman
2014-01-06 22:38 ` Greg Kroah-Hartman [this message]
2014-01-06 22:38 ` [PATCH 3.10 074/129] mm: numa: guarantee that tlb_flush_pending updates are visible before page table updates Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 075/129] mm/mempolicy: correct putback method for isolate pages if failed Greg Kroah-Hartman
2014-01-07 17:26   ` Luis Henriques
2014-01-07 18:48     ` Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 076/129] mm/compaction: respect ignore_skip_hint in update_pageblock_skip Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 077/129] mm/hugetlb: check for pte NULL pointer in __page_check_address() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 078/129] mm: fix use-after-free in sys_remap_file_pages Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 079/129] mm/memory-failure.c: transfer page count from head page to tail page after split thp Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 080/129] Input: allocate absinfo data when setting ABS capability Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 081/129] GFS2: dont hold s_umount over blkdev_put Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 082/129] GFS2: Fix incorrect invalidation for DIO/buffered I/O Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 083/129] memcg: fix memcg_size() calculation Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 084/129] s390/3270: fix allocation of tty3270_screen structure Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 085/129] jbd2: dont BUG but return ENOSPC if a handle runs out of space Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 086/129] gpio: twl4030: Fix regression for twl gpio LED output Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 087/129] gpio: msm: Fix irq mask/unmask by writing bits instead of numbers Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 088/129] sh: always link in helper functions extracted from libgcc Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 089/129] selinux: look for IPsec labels on both inbound and outbound packets Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 090/129] selinux: process labeled IPsec TCP SYN-ACK packets properly in selinux_ip_postroute() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 091/129] clocksource: dw_apb_timer_of: Fix read_sched_clock Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 092/129] ceph: improve error handling in ceph_mdsmap_decode Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 093/129] libceph: add lingering request reference when registered Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 094/129] rbd: flush dcache after zeroing page data Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 095/129] rbd: set removing flag while holding list lock Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 096/129] rbd: protect against concurrent unmaps Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 097/129] libceph: fix safe completion Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 098/129] libceph: fix truncate size calculation Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 099/129] rbd: fix a couple warnings Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 100/129] ceph: Free mdsc if alloc mdsc->mdsmap failed Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 101/129] ceph: avoid accessing invalid memory Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 102/129] libceph: call r_unsafe_callback when unsafe reply is received Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 103/129] ceph: fix null pointer dereference Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 104/129] ceph: cleanup types in striped_read() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 105/129] ceph: Add check returned value on func ceph_calc_ceph_pg Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 106/129] libceph: fix error handling in handle_reply() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 107/129] libceph: potential NULL dereference in ceph_osdc_handle_map() Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 108/129] libceph: create_singlethread_workqueue() doesnt return ERR_PTRs Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 109/129] ceph: fix bugs about handling short-read for sync read mode Greg Kroah-Hartman
2014-01-06 22:38 ` [PATCH 3.10 110/129] ceph: allow sync_read/write return partial successed size of read/write Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 111/129] rbd: fix buffer size for writes to images with snapshots Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 112/129] rbd: fix null dereference in dout Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 113/129] libceph: add function to ensure notifies are complete Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 114/129] rbd: complete notifies before cleaning up osd_client and rbd_dev Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 115/129] rbd: make rbd_obj_notify_ack() synchronous Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 116/129] rbd: fix use-after free of rbd_dev->disk Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 117/129] rbd: ignore unmapped snapshots that no longer exist Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 118/129] rbd: fix error handling from rbd_snap_name() Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 119/129] arm64: Only enable local interrupts after the CPU is marked online Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 120/129] arm64: virt: ensure visibility of __boot_cpu_mode Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 121/129] arm64: Change kernel stack size to 16K Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 122/129] arm64: fix possible invalid FPSIMD initialization state Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 123/129] arm64: check for number of arguments in syscall_get/set_arguments() Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 124/129] arm64: dts: Reserve the memory used for secondary CPU release address Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 125/129] arm64: Remove unused cpu_name ascii in arch/arm64/mm/proc.S Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 126/129] clocksource: arch_timer: use virtual counters Greg Kroah-Hartman
2014-01-07 10:09   ` Mark Rutland
2014-01-07 18:50     ` Greg Kroah-Hartman
2014-01-08  9:25       ` Mark Rutland
2014-01-06 22:39 ` [PATCH 3.10 127/129] arm64: Avoid cache flushing in flush_dcache_page() Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 128/129] arm64: Do not flush the D-cache for anonymous pages Greg Kroah-Hartman
2014-01-06 22:39 ` [PATCH 3.10 129/129] arm64: Use Normal NonCacheable memory for writecombine Greg Kroah-Hartman
2014-01-07  5:02 ` [PATCH 3.10 000/129] 3.10.26-stable review Guenter Roeck
2014-01-07 15:22   ` Greg Kroah-Hartman
2014-01-07 19:05 ` Greg Kroah-Hartman
2014-01-07 19:09 ` Shuah Khan

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=20140106223901.700174649@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=athorlton@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=riel@redhat.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).