Skip to contentSkip to conversation

3.0.51-stable review

PATCH In review Greg Kroah-Hartman 3 participants 9 messages Nov 2, 2012 – Nov 3, 2012

Subsystems (8)
lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

cover 3.0.51-stable review

This is the start of the stable review cycle for the 3.0.51 release. There are 4 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Sun Nov 4 17:03:28 UTC 2012. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.0.51-rc1.gz

and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>

    Linux 3.0.51-rc1

Ben Skeggs <[email protected]>
drm/nouveau: silence modesetting spam on pre-gf8 chipsets

Jan Kara <[email protected]>
mm: fix XFS oops due to dirty pages without buffers on s390

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

Herton Ronaldo Krzesinski <[email protected]>
floppy: do put_disk on current dr if blk_init_queue fails

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

Diffstat:

 Documentation/feature-removal-schedule.txt |  8 -------
 Makefile                                   |  4 ++--
 arch/x86/include/asm/system.h              |  7 ------
 arch/x86/kernel/process.c                  | 24 -------------------
 drivers/block/floppy.c                     | 37 +-----------------------------
 drivers/gpu/drm/nouveau/nv04_dac.c         |  8 +++----
 drivers/gpu/drm/nouveau/nv04_dfp.c         |  6 ++---
 drivers/gpu/drm/nouveau/nv04_tv.c          |  4 ++--
 mm/rmap.c                                  | 21 +++++++++++++----
 9 files changed, 28 insertions(+), 91 deletions(-)
author maintainer
#1 lore raw

PATCH 1/4 floppy: do put_disk on current dr if blk_init_queue fails

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

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

From: Herton Ronaldo Krzesinski <[email protected]>

commit 238ab78469c6ab7845b43d5061cd3c92331b2452 upstream.

If blk_init_queue fails, we do not call put_disk on the current dr (dr is decremented first in the error handling loop).

---
 drivers/block/floppy.c |    1 +
 1 file changed, 1 insertion(+)
drivers/block/floppy.c +1 -0
@@ -4198,6 +4198,7 @@ static int __init floppy_init(void)
 
 		disks[dr]->queue = blk_init_queue(do_fd_request, &floppy_lock);
 		if (!disks[dr]->queue) {
+			put_disk(disks[dr]);
 			err = -ENOMEM;
 			goto out_put_disk;
 		}
author maintainer
#2 lore raw

PATCH 3/4 mm: fix XFS oops due to dirty pages without buffers on s390

In reply to Greg Kroah-Hartman

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

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

From: Jan Kara <[email protected]>

commit ef5d437f71afdf4afdbab99213add99f4b1318fd upstream.

On s390 any write to a page (even from kernel itself) sets architecture specific page dirty bit. Thus when a page is written to via buffered write, HW dirty bit gets set and when we later map and unmap the page, page_remove_rmap() finds the dirty bit and calls set_page_dirty().

Dirtying of a page which shouldn't be dirty can cause all sorts of problems to filesystems. The bug we observed in practice is that buffers from the page get freed, so when the page gets later marked as dirty and writeback writes it, XFS crashes due to an assertion BUG_ON(!PagePrivate(page)) in page_buffers() called from xfs_count_page_state().

Similar problem can also happen when zero_user_segment() call from xfs_vm_writepage() (or block_write_full_page() for that matter) set the hardware dirty bit during writeback, later buffers get freed, and then page unmapped.

Fix the issue by ignoring s390 HW dirty bit for page cache pages of mappings with mapping_cap_account_dirty(). This is safe because for such mappings when a page gets marked as writeable in PTE it is also marked dirty in do_wp_page() or do_page_fault(). When the dirty bit is cleared by clear_page_dirty_for_io(), the page gets writeprotected in page_mkclean(). So pagecache page is writeable if and only if it is dirty.

Thanks to Hugh Dickins for pointing out mapping has to have mapping_cap_account_dirty() for things to work and proposing a cleaned up variant of the patch.

The patch has survived about two hours of running fsx-linux on tmpfs while heavily swapping and several days of running on out build machines where the original problem was triggered.

---
 mm/rmap.c |   21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)
mm/rmap.c +16 -5
@@ -57,6 +57,7 @@
 #include <linux/mmu_notifier.h>
 #include <linux/migrate.h>
 #include <linux/hugetlb.h>
+#include <linux/backing-dev.h>
 
 #include <asm/tlbflush.h>
 
@@ -936,11 +937,8 @@ int page_mkclean(struct page *page)
 
 	if (page_mapped(page)) {
 		struct address_space *mapping = page_mapping(page);
-		if (mapping) {
+		if (mapping)
 			ret = page_mkclean_file(mapping, page);
-			if (page_test_and_clear_dirty(page_to_pfn(page), 1))
-				ret = 1;
-		}
 	}
 
 	return ret;
@@ -1121,6 +1119,8 @@ void page_add_file_rmap(struct page *pag
  */
 void page_remove_rmap(struct page *page)
 {
+	struct address_space *mapping = page_mapping(page);
+
 	/* page still mapped by someone else? */
 	if (!atomic_add_negative(-1, &page->_mapcount))
 		return;
@@ -1131,8 +1131,19 @@ void page_remove_rmap(struct page *page)
 	 * this if the page is anon, so about to be freed; but perhaps
 	 * not if it's in swapcache - there might be another pte slot
 	 * containing the swap entry, but page not yet written to swap.
+	 *
+	 * And we can skip it on file pages, so long as the filesystem
+	 * participates in dirty tracking; but need to catch shm and tmpfs
+	 * and ramfs pages which have been modified since creation by read
+	 * fault.
+	 *
+	 * Note that mapping must be decided above, before decrementing
+	 * mapcount (which luckily provides a barrier): once page is unmapped,
+	 * it could be truncated and page->mapping reset to NULL at any moment.
+	 * Note also that we are relying on page_mapping(page) to set mapping
+	 * to &swapper_space when PageSwapCache(page).
 	 */
-	if ((!PageAnon(page) || PageSwapCache(page)) &&
+	if (mapping && !mapping_cap_account_dirty(mapping) &&
 	    page_test_and_clear_dirty(page_to_pfn(page), 1))
 		set_page_dirty(page);
 	/*
author maintainer
#3 lore raw

PATCH 4/4 drm/nouveau: silence modesetting spam on pre-gf8 chipsets

In reply to Greg Kroah-Hartman

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

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

From: Ben Skeggs <[email protected]>

commit cee59f15a60cc6269a25e3f6fbf1a577d6ab8115 upstream.

---
 drivers/gpu/drm/nouveau/nv04_dac.c |    8 ++++----
 drivers/gpu/drm/nouveau/nv04_dfp.c |    6 +++---
 drivers/gpu/drm/nouveau/nv04_tv.c  |    4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)
drivers/gpu/drm/nouveau/nv04_dac.c +4 -4
@@ -209,7 +209,7 @@ out:
 	NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode);
 
 	if (blue == 0x18) {
-		NV_INFO(dev, "Load detected on head A\n");
+		NV_DEBUG(dev, "Load detected on head A\n");
 		return connector_status_connected;
 	}
 
@@ -323,7 +323,7 @@ nv17_dac_detect(struct drm_encoder *enco
 
 	if (nv17_dac_sample_load(encoder) &
 	    NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) {
-		NV_INFO(dev, "Load detected on output %c\n",
+		NV_DEBUG(dev, "Load detected on output %c\n",
 			'@' + ffs(dcb->or));
 		return connector_status_connected;
 	} else {
@@ -398,7 +398,7 @@ static void nv04_dac_commit(struct drm_e
 
 	helper->dpms(encoder, DRM_MODE_DPMS_ON);
 
-	NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
+	NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
 		drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base),
 		nv_crtc->index, '@' + ffs(nv_encoder->dcb->or));
 }
@@ -447,7 +447,7 @@ static void nv04_dac_dpms(struct drm_enc
 		return;
 	nv_encoder->last_dpms = mode;
 
-	NV_INFO(dev, "Setting dpms mode %d on vga encoder (output %d)\n",
+	NV_DEBUG(dev, "Setting dpms mode %d on vga encoder (output %d)\n",
 		     mode, nv_encoder->dcb->index);
 
 	nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
drivers/gpu/drm/nouveau/nv04_dfp.c +3 -3
@@ -468,7 +468,7 @@ static void nv04_dfp_commit(struct drm_e
 
 	helper->dpms(encoder, DRM_MODE_DPMS_ON);
 
-	NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
+	NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
 		drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base),
 		nv_crtc->index, '@' + ffs(nv_encoder->dcb->or));
 }
@@ -511,7 +511,7 @@ static void nv04_lvds_dpms(struct drm_en
 		return;
 	nv_encoder->last_dpms = mode;
 
-	NV_INFO(dev, "Setting dpms mode %d on lvds encoder (output %d)\n",
+	NV_DEBUG(dev, "Setting dpms mode %d on lvds encoder (output %d)\n",
 		     mode, nv_encoder->dcb->index);
 
 	if (was_powersaving && is_powersaving_dpms(mode))
@@ -556,7 +556,7 @@ static void nv04_tmds_dpms(struct drm_en
 		return;
 	nv_encoder->last_dpms = mode;
 
-	NV_INFO(dev, "Setting dpms mode %d on tmds encoder (output %d)\n",
+	NV_DEBUG(dev, "Setting dpms mode %d on tmds encoder (output %d)\n",
 		     mode, nv_encoder->dcb->index);
 
 	nv04_dfp_update_backlight(encoder, mode);
drivers/gpu/drm/nouveau/nv04_tv.c +2 -2
@@ -69,7 +69,7 @@ static void nv04_tv_dpms(struct drm_enco
 	struct nv04_mode_state *state = &dev_priv->mode_reg;
 	uint8_t crtc1A;
 
-	NV_INFO(dev, "Setting dpms mode %d on TV encoder (output %d)\n",
+	NV_DEBUG(dev, "Setting dpms mode %d on TV encoder (output %d)\n",
 		mode, nv_encoder->dcb->index);
 
 	state->pllsel &= ~(PLLSEL_TV_CRTC1_MASK | PLLSEL_TV_CRTC2_MASK);
@@ -162,7 +162,7 @@ static void nv04_tv_commit(struct drm_en
 
 	helper->dpms(encoder, DRM_MODE_DPMS_ON);
 
-	NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
+	NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
 		      drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index,
 		      '@' + ffs(nv_encoder->dcb->or));
 }
#4 lore raw
In reply to Greg Kroah-Hartman
Quoted 19 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 3.0.51 release. There are 4 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Sun Nov 4 17:03:28 UTC 2012. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.0.51-rc1.gz

and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Quoted 9 lines

Greg Kroah-Hartman <[email protected]>

    Linux 3.0.51-rc1

Ben Skeggs <[email protected]>
drm/nouveau: silence modesetting spam on pre-gf8 chipsets

Jan Kara <[email protected]>
mm: fix XFS oops due to dirty pages without buffers on s390

Howdy Greg,

Somehow the following patch is missing for this series submission:

Quoted 2 lines

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

I glanced at the the downloadable consolidated patch and its hunks seem to be present, though.

Cheers!
-- Rafael

Quoted 26 lines

Herton Ronaldo Krzesinski <[email protected]>
floppy: do put_disk on current dr if blk_init_queue fails

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

Diffstat:

 Documentation/feature-removal-schedule.txt |  8 -------
 Makefile                                   |  4 ++--
 arch/x86/include/asm/system.h              |  7 ------
 arch/x86/kernel/process.c                  | 24 -------------------
 drivers/block/floppy.c                     | 37 +-----------------------------
 drivers/gpu/drm/nouveau/nv04_dac.c         |  8 +++----
 drivers/gpu/drm/nouveau/nv04_dfp.c         |  6 ++---
 drivers/gpu/drm/nouveau/nv04_tv.c          |  4 ++--
 mm/rmap.c                                  | 21 +++++++++++++----
 9 files changed, 28 insertions(+), 91 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

author maintainer
#5 lore raw
Quoted 30 lines · Rafael Aquini
Quoted 19 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 3.0.51 release. There are 4 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Sun Nov 4 17:03:28 UTC 2012. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

	kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.0.51-rc1.gz

and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Quoted 9 lines

Greg Kroah-Hartman <[email protected]>

    Linux 3.0.51-rc1

Ben Skeggs <[email protected]>
drm/nouveau: silence modesetting spam on pre-gf8 chipsets

Jan Kara <[email protected]>
mm: fix XFS oops due to dirty pages without buffers on s390

Quoted 8 lines

Howdy Greg,

Somehow the following patch is missing for this series submission:

Quoted 2 lines

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

I glanced at the the downloadable consolidated patch and its hunks seem to be present, though.

I do not understand. Where do you not see it? It's in the patch on kernel.org, right? Where is it missing?

confused,

greg k-h

#6 lore raw
Quoted 4 lines · Greg Kroah-Hartman
Quoted 4 lines

Howdy Greg,

Somehow the following patch is missing for this series submission:

Quoted 9 lines
Quoted 5 lines
Quoted 2 lines

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

I glanced at the the downloadable consolidated patch and its hunks seem to be present, though.

I do not understand. Where do you not see it? It's in the patch on kernel.org, right? Where is it missing?

The LKML patch series is missing PATCH 02/04.

Quoted 8 lines

confused,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

author maintainer
#7 lore raw
Quoted 8 lines · Rafael Aquini
Quoted 7 lines · Greg Kroah-Hartman
Quoted 7 lines

Howdy Greg,

Somehow the following patch is missing for this series submission:

Quoted 2 lines

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

I glanced at the the downloadable consolidated patch and its hunks seem to be present, though.

I do not understand. Where do you not see it? It's in the patch on kernel.org, right? Where is it missing?

The LKML patch series is missing PATCH 02/04.

Odd, I received a copy, but I don't know if it came from lkml or as a copy sent to me directly. I'll bounce it to you if you are curious about it.

greg k-h

#8 lore raw
Quoted 16 lines · Greg Kroah-Hartman
Quoted 15 lines · Rafael Aquini
Quoted 13 lines · Greg Kroah-Hartman
Quoted 9 lines

Howdy Greg,

Somehow the following patch is missing for this series submission:

Quoted 2 lines

Len Brown <[email protected]>
x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility

I glanced at the the downloadable consolidated patch and its hunks seem to be present, though.

I do not understand. Where do you not see it? It's in the patch on kernel.org, right? Where is it missing?

Quoted 6 lines
Quoted 1 line

The LKML patch series is missing PATCH 02/04.

Odd, I received a copy, but I don't know if it came from lkml or as a copy sent to me directly. I'll bounce it to you if you are curious about it.

Yeah, 2/4 is missing. Probably had too many Cc's. I really wish David Miller would remove that limit. I bet it's kept more legitimate emails from making LKML than it has spam.

I know I've been burnt by it a few times :-/

-- Steve