From: Greg Kroah-Hartman Date: Fri, 31 Jul 2015 17:50:35 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v4.1.4~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e0377fa5cfb5a4ea2f8aa0e660392f28b0847b80;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: nfs-fix-size-of-nfsacl-setacl-operations.patch of-return-numa_no_node-from-fallback-of_node_to_nid.patch watchdog-omap-assert-the-counter-being-stopped-before-reprogramming.patch --- diff --git a/queue-3.14/nfs-fix-size-of-nfsacl-setacl-operations.patch b/queue-3.14/nfs-fix-size-of-nfsacl-setacl-operations.patch new file mode 100644 index 00000000000..2261ee9cfdf --- /dev/null +++ b/queue-3.14/nfs-fix-size-of-nfsacl-setacl-operations.patch @@ -0,0 +1,33 @@ +From d683cc49daf7c5afca8cd9654aaa1bf63cdf2ad9 Mon Sep 17 00:00:00 2001 +From: Chuck Lever +Date: Tue, 26 May 2015 11:53:52 -0400 +Subject: NFS: Fix size of NFSACL SETACL operations + +From: Chuck Lever + +commit d683cc49daf7c5afca8cd9654aaa1bf63cdf2ad9 upstream. + +When encoding the NFSACL SETACL operation, reserve just the estimated +size of the ACL rather than a fixed maximum. This eliminates needless +zero padding on the wire that the server ignores. + +Fixes: ee5dc7732bd5 ('NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!"') +Signed-off-by: Chuck Lever +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfs/nfs3xdr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/nfs/nfs3xdr.c ++++ b/fs/nfs/nfs3xdr.c +@@ -1342,7 +1342,7 @@ static void nfs3_xdr_enc_setacl3args(str + if (args->npages != 0) + xdr_write_pages(xdr, args->pages, 0, args->len); + else +- xdr_reserve_space(xdr, NFS_ACL_INLINE_BUFSIZE); ++ xdr_reserve_space(xdr, args->len); + + error = nfsacl_encode(xdr->buf, base, args->inode, + (args->mask & NFS_ACL) ? diff --git a/queue-3.14/of-return-numa_no_node-from-fallback-of_node_to_nid.patch b/queue-3.14/of-return-numa_no_node-from-fallback-of_node_to_nid.patch new file mode 100644 index 00000000000..8a8e87c6130 --- /dev/null +++ b/queue-3.14/of-return-numa_no_node-from-fallback-of_node_to_nid.patch @@ -0,0 +1,47 @@ +From c8fff7bc5bba6bd59cad40441c189c4efe7190f6 Mon Sep 17 00:00:00 2001 +From: Konstantin Khlebnikov +Date: Wed, 8 Apr 2015 19:59:20 +0300 +Subject: of: return NUMA_NO_NODE from fallback of_node_to_nid() + +From: Konstantin Khlebnikov + +commit c8fff7bc5bba6bd59cad40441c189c4efe7190f6 upstream. + +Node 0 might be offline as well as any other numa node, +in this case kernel cannot handle memory allocation and crashes. + +Signed-off-by: Konstantin Khlebnikov +Fixes: 0c3f061c195c ("of: implement of_node_to_nid as a weak function") +Signed-off-by: Grant Likely +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/of/base.c | 2 +- + include/linux/of.h | 5 ++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/of/base.c ++++ b/drivers/of/base.c +@@ -77,7 +77,7 @@ EXPORT_SYMBOL(of_n_size_cells); + #ifdef CONFIG_NUMA + int __weak of_node_to_nid(struct device_node *np) + { +- return numa_node_id(); ++ return NUMA_NO_NODE; + } + #endif + +--- a/include/linux/of.h ++++ b/include/linux/of.h +@@ -517,7 +517,10 @@ static inline const char *of_prop_next_s + #if defined(CONFIG_OF) && defined(CONFIG_NUMA) + extern int of_node_to_nid(struct device_node *np); + #else +-static inline int of_node_to_nid(struct device_node *device) { return 0; } ++static inline int of_node_to_nid(struct device_node *device) ++{ ++ return NUMA_NO_NODE; ++} + #endif + + static inline struct device_node *of_find_matching_node( diff --git a/queue-3.14/series b/queue-3.14/series index 53aa921fb73..a225d5773b5 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -108,3 +108,6 @@ ideapad-fix-software-rfkill-setting.patch dell-laptop-fix-allocating-freeing-smi-buffer-page.patch usb-usbfs-allow-urbs-to-be-reaped-after-disconnection.patch block-do-a-full-clone-when-splitting-discard-bios.patch +of-return-numa_no_node-from-fallback-of_node_to_nid.patch +watchdog-omap-assert-the-counter-being-stopped-before-reprogramming.patch +nfs-fix-size-of-nfsacl-setacl-operations.patch diff --git a/queue-3.14/watchdog-omap-assert-the-counter-being-stopped-before-reprogramming.patch b/queue-3.14/watchdog-omap-assert-the-counter-being-stopped-before-reprogramming.patch new file mode 100644 index 00000000000..eb109d7c1e8 --- /dev/null +++ b/queue-3.14/watchdog-omap-assert-the-counter-being-stopped-before-reprogramming.patch @@ -0,0 +1,61 @@ +From 530c11d432727c697629ad5f9d00ee8e2864d453 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Wed, 29 Apr 2015 20:38:46 +0200 +Subject: watchdog: omap: assert the counter being stopped before reprogramming +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= + +commit 530c11d432727c697629ad5f9d00ee8e2864d453 upstream. + +The omap watchdog has the annoying behaviour that writes to most +registers don't have any effect when the watchdog is already running. +Quoting the AM335x reference manual: + + To modify the timer counter value (the WDT_WCRR register), + prescaler ratio (the WDT_WCLR[4:2] PTV bit field), delay + configuration value (the WDT_WDLY[31:0] DLY_VALUE bit field), or + the load value (the WDT_WLDR[31:0] TIMER_LOAD bit field), the + watchdog timer must be disabled by using the start/stop sequence + (the WDT_WSPR register). + +Currently the timer is stopped in the .probe callback but still there +are possibilities that yield to a situation where omap_wdt_start is +entered with the timer running (e.g. when /dev/watchdog is closed +without stopping and then reopened). In such a case programming the +timeout silently fails! + +To circumvent this stop the timer before reprogramming. + +Assuming one of the first things the watchdog user does is setting the +timeout explicitly nothing too bad should happen because this explicit +setting works fine. + +Fixes: 7768a13c252a ("[PATCH] OMAP: Add Watchdog driver support") +Signed-off-by: Uwe Kleine-König +Reviewed-by: Guenter Roeck +Signed-off-by: Wim Van Sebroeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/watchdog/omap_wdt.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/watchdog/omap_wdt.c ++++ b/drivers/watchdog/omap_wdt.c +@@ -134,6 +134,13 @@ static int omap_wdt_start(struct watchdo + + pm_runtime_get_sync(wdev->dev); + ++ /* ++ * Make sure the watchdog is disabled. This is unfortunately required ++ * because writing to various registers with the watchdog running has no ++ * effect. ++ */ ++ omap_wdt_disable(wdev); ++ + /* initialize prescaler */ + while (readl_relaxed(base + OMAP_WATCHDOG_WPS) & 0x01) + cpu_relax();