The CONFIG_CMDLINE-related logic in early_init_dt_scan_chosen() falls
back to copying CONFIG_CMDLINE into boot_command_line/data if the DT has
a /chosen node but that node has no bootargs property or a bootargs
property of length zero.
This is problematic for the MIPS architecture because we support
concatenating arguments from either the DT or the bootloader with those
from CONFIG_CMDLINE, but the behaviour of early_init_dt_scan_chosen()
gives us no way of knowing whether boot_command_line contains arguments
from DT or already contains CONFIG_CMDLINE. This can lead to us
concatenating CONFIG_CMDLINE with itself, duplicating command line
arguments which can be problematic (eg. for earlycon which will attempt
to register the same console twice & warn about it).
Move the CONFIG_CMDLINE-related logic to a weak function that
architectures can provide their own version of, such that we continue to
use the existing logic for architectures where it's suitable but also
allow MIPS to override this behaviour such that the architecture code
knows when CONFIG_CMDLINE is used.
Signed-off-by: Paul Burton <paul.burton(a)mips.com>
References: https://patchwork.linux-mips.org/patch/18804/
Cc: Frank Rowand <frowand.list(a)gmail.com>
Cc: Jaedon Shin <jaedon.shin(a)gmail.com>
Cc: Mathieu Malaterre <malat(a)debian.org>
Cc: Rob Herring <robh+dt(a)kernel.org>
Cc: devicetree(a)vger.kernel.org
Cc: linux-kernel(a)vger.kernel.org
Cc: linux-mips(a)linux-mips.org
Cc: stable(a)vger.kernel.org # v4.16+
---
Marked for stable as a prerequisite of the following patch.
DT maintainers: if you're OK with this it'd be great to get an ack so
this can go through the mips-fixes tree.
---
drivers/of/fdt.c | 55 +++++++++++++++++++++++++++++-------------
include/linux/of_fdt.h | 1 +
2 files changed, 39 insertions(+), 17 deletions(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 800ad252cf9c..94c474315cff 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1072,6 +1072,43 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
return 0;
}
+/**
+ * early_init_dt_fixup_cmdline_arch() - Modify a command line taken from DT
+ * @data: A pointer to the command line
+ *
+ * This function provides an opportunity to make modifications to command line
+ * arguments taken from a device tree before use, for example to concatenate
+ * them with arguments from other sources or replace them entirely.
+ *
+ * Modifications should be made directly to the string pointed at by @data,
+ * which is COMMAND_LINE_SIZE bytes in size.
+ *
+ * The default implementation supports extending or overriding the DT command
+ * line arguments using CONFIG_CMDLINE. Since other sources of command line
+ * arguments are platform-specific, architectures can provide their own
+ * implementation of this function to obtain their desired behaviour.
+ */
+void __init __weak early_init_dt_fixup_cmdline_arch(char *data)
+{
+ /*
+ * CONFIG_CMDLINE is meant to be a default in case nothing else
+ * managed to set the command line, unless CONFIG_CMDLINE_FORCE
+ * is set in which case we override whatever was found earlier.
+ */
+#ifdef CONFIG_CMDLINE
+#if defined(CONFIG_CMDLINE_EXTEND)
+ strlcat(data, " ", COMMAND_LINE_SIZE);
+ strlcat(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+#elif defined(CONFIG_CMDLINE_FORCE)
+ strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+#else
+ /* No arguments from boot loader, use kernel's cmdl */
+ if (!data[0])
+ strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+#endif
+#endif /* CONFIG_CMDLINE */
+}
+
int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
int depth, void *data)
{
@@ -1091,23 +1128,7 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
if (p != NULL && l > 0)
strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
- /*
- * CONFIG_CMDLINE is meant to be a default in case nothing else
- * managed to set the command line, unless CONFIG_CMDLINE_FORCE
- * is set in which case we override whatever was found earlier.
- */
-#ifdef CONFIG_CMDLINE
-#if defined(CONFIG_CMDLINE_EXTEND)
- strlcat(data, " ", COMMAND_LINE_SIZE);
- strlcat(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#elif defined(CONFIG_CMDLINE_FORCE)
- strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#else
- /* No arguments from boot loader, use kernel's cmdl*/
- if (!((char *)data)[0])
- strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#endif
-#endif /* CONFIG_CMDLINE */
+ early_init_dt_fixup_cmdline_arch(data);
pr_debug("Command line is: %s\n", (char*)data);
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index b9cd9ebdf9b9..98935695f49d 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -80,6 +80,7 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size);
extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
bool no_map);
+extern void early_init_dt_fixup_cmdline_arch(char *data);
extern u64 dt_mem_next_cell(int s, const __be32 **cellp);
/* Early flat tree scan hooks */
--
2.18.0
(cherry pick from commit 764baba80168ad3adafb521d2ab483ccbc49e344)
Commit 31747eda41ef ("ovl: hash directory inodes for fsnotify")
fixed an issue of inotify watch on directory that stops getting
events after dropping dentry caches.
A similar issue exists for non-dir non-upper files, for example:
$ mkdir -p lower upper work merged
$ touch lower/foo
$ mount -t overlay -o
lowerdir=lower,workdir=work,upperdir=upper none merged
$ inotifywait merged/foo &
$ echo 2 > /proc/sys/vm/drop_caches
$ cat merged/foo
inotifywait doesn't get the OPEN event, because ovl_lookup() called
from 'cat' allocates a new overlay inode and does not reuse the
watched inode.
Fix this by hashing non-dir overlay inodes by lower real inode in
the following cases that were not hashed before this change:
- A non-upper overlay mount
- A lower non-hardlink when index=off
A helper ovl_hash_bylower() was added to put all the logic and
documentation about which real inode an overlay inode is hashed by
into one place.
The issue dates back to initial version of overlayfs, but this
patch depends on ovl_inode code that was introduced in kernel v4.13.
Signed-off-by: Amir Goldstein <amir73il(a)gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi(a)redhat.com>
Cc: <stable(a)vger.kernel.org> #v4.13
Signed-off-by: Mark Salyzyn <salyzyn(a)android.com> #4.14
Cc: <linux-unionfs(a)vger.kernel.org>
Cc: <linux-kernel(a)vger.kernel.org>
Cc: Greg KH <gregkh(a)linuxfoundation.org>
---
fs/overlayfs/inode.c | 62 +++++++++++++++++++++++++++++++-------------
1 file changed, 44 insertions(+), 18 deletions(-)
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index d60900b615f9..efed50304b49 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -14,6 +14,7 @@
#include <linux/posix_acl.h>
#include <linux/ratelimit.h>
#include "overlayfs.h"
+#include "ovl_entry.h"
int ovl_setattr(struct dentry *dentry, struct iattr *attr)
{
@@ -608,39 +609,63 @@ static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry,
return true;
}
+/*
+ * Does overlay inode need to be hashed by lower inode?
+ */
+static bool ovl_hash_bylower(struct super_block *sb, struct dentry *upper,
+ struct dentry *lower, struct dentry *index)
+{
+ struct ovl_fs *ofs = sb->s_fs_info;
+
+ /* No, if pure upper */
+ if (!lower)
+ return false;
+
+ /* Yes, if already indexed */
+ if (index)
+ return true;
+
+ /* Yes, if won't be copied up */
+ if (!ofs->upper_mnt)
+ return true;
+
+ /* No, if lower hardlink is or will be broken on copy up */
+ if ((upper || !ovl_indexdir(sb)) &&
+ !d_is_dir(lower) && d_inode(lower)->i_nlink > 1)
+ return false;
+
+ /* No, if non-indexed upper with NFS export */
+ if (sb->s_export_op && upper)
+ return false;
+
+ /* Otherwise, hash by lower inode for fsnotify */
+ return true;
+}
+
struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry,
struct dentry *index)
{
+ struct super_block *sb = dentry->d_sb;
struct dentry *lowerdentry = ovl_dentry_lower(dentry);
struct inode *realinode = upperdentry ? d_inode(upperdentry) : NULL;
struct inode *inode;
- /* Already indexed or could be indexed on copy up? */
- bool indexed = (index || (ovl_indexdir(dentry->d_sb) && !upperdentry));
- struct dentry *origin = indexed ? lowerdentry : NULL;
+ bool bylower = ovl_hash_bylower(sb, upperdentry, lowerdentry, index);
bool is_dir;
- if (WARN_ON(upperdentry && indexed && !lowerdentry))
- return ERR_PTR(-EIO);
-
if (!realinode)
realinode = d_inode(lowerdentry);
/*
- * Copy up origin (lower) may exist for non-indexed non-dir upper, but
- * we must not use lower as hash key in that case.
- * Hash non-dir that is or could be indexed by origin inode.
- * Hash dir that is or could be merged by origin inode.
- * Hash pure upper and non-indexed non-dir by upper inode.
+ * Copy up origin (lower) may exist for non-indexed upper, but we must
+ * not use lower as hash key if this is a broken hardlink.
*/
is_dir = S_ISDIR(realinode->i_mode);
- if (is_dir)
- origin = lowerdentry;
-
- if (upperdentry || origin) {
- struct inode *key = d_inode(origin ?: upperdentry);
+ if (upperdentry || bylower) {
+ struct inode *key = d_inode(bylower ? lowerdentry :
+ upperdentry);
unsigned int nlink = is_dir ? 1 : realinode->i_nlink;
- inode = iget5_locked(dentry->d_sb, (unsigned long) key,
+ inode = iget5_locked(sb, (unsigned long) key,
ovl_inode_test, ovl_inode_set, key);
if (!inode)
goto out_nomem;
@@ -664,7 +689,8 @@ struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry,
nlink = ovl_get_nlink(lowerdentry, upperdentry, nlink);
set_nlink(inode, nlink);
} else {
- inode = new_inode(dentry->d_sb);
+ /* Lower hardlink that will be broken on copy up */
+ inode = new_inode(sb);
if (!inode)
goto out_nomem;
}
--
2.19.0.605.g01d371f741-goog
The keyctl_dh_params struct in uapi/linux/keyctl.h contains the symbol
"private" which means that the header file will cause compilation failure
if #included in to a C++ program. Further, the patch that added the same
struct to the keyutils package named the symbol "priv", not "private".
The previous attempt to fix this (commit 8a2336e549d3) did so by simply
renaming the kernel's copy of the field to dh_private, but this then breaks
existing userspace and as such has been reverted (commit 8c0f9f5b309d).
[And note, to those who think that wrapping the struct in extern "C" {}
will work: it won't; that only changes how symbol names are presented to
the assembler and linker.].
Instead, insert an anonymous union around the "private" member and add a
second member in there with the name "priv" to match the one in the
keyutils package. The "private" member is then wrapped in !__cplusplus
cpp-conditionals to hide it from C++.
Fixes: ddbb41148724 ("KEYS: Add KEYCTL_DH_COMPUTE command")
Fixes: 8a2336e549d3 ("uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name")
Signed-off-by: David Howells <dhowells(a)redhat.com>
cc: Randy Dunlap <rdunlap(a)infradead.org>
cc: Lubomir Rintel <lkundrak(a)v3.sk>
cc: James Morris <jmorris(a)namei.org>
cc: Mat Martineau <mathew.j.martineau(a)linux.intel.com>
cc: Stephan Mueller <smueller(a)chronox.de>
cc: Andrew Morton <akpm(a)linux-foundation.org>
cc: Linus Torvalds <torvalds(a)linux-foundation.org>
cc: stable(a)vger.kernel.org
---
include/uapi/linux/keyctl.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/keyctl.h b/include/uapi/linux/keyctl.h
index 7b8c9e19bad1..0f3cb13db8e9 100644
--- a/include/uapi/linux/keyctl.h
+++ b/include/uapi/linux/keyctl.h
@@ -65,7 +65,12 @@
/* keyctl structures */
struct keyctl_dh_params {
- __s32 private;
+ union {
+#ifndef __cplusplus
+ __s32 private;
+#endif
+ __s32 priv;
+ };
__s32 prime;
__s32 base;
};
The debounce value passed to mmc_gpiod_request_cd() function is in
microseconds, but msecs_to_jiffies() requires the value to be in
miliseconds to properly calculate the delay, so adjust the value stored
in cd_debounce_delay_ms context entry.
Fixes: 1d71926bbd59 ("mmc: core: Fix debounce time to use microseconds")
Fixes: bfd694d5e21c ("mmc: core: Add tunable delay before detecting card
after card is inserted")
Cc: stable(a)vger.kernel.org # v4.18+
Signed-off-by: Marek Szyprowski <m.szyprowski(a)samsung.com>
---
This patch fixes eMMC card detection on Exynos5410-based Odroid XU board,
broken since Linux next-20180928.
---
drivers/mmc/core/slot-gpio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/core/slot-gpio.c b/drivers/mmc/core/slot-gpio.c
index 2a833686784b..86803a3a04dc 100644
--- a/drivers/mmc/core/slot-gpio.c
+++ b/drivers/mmc/core/slot-gpio.c
@@ -271,7 +271,7 @@ int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id,
if (debounce) {
ret = gpiod_set_debounce(desc, debounce);
if (ret < 0)
- ctx->cd_debounce_delay_ms = debounce;
+ ctx->cd_debounce_delay_ms = debounce / 1000;
}
if (gpio_invert)
--
2.17.1
Since the addition of platform MSI support, there were two helpers
supposed to allocate/free IRQs for a device:
platform_msi_domain_alloc_irqs()
platform_msi_domain_free_irqs()
In these helpers, IRQ descriptors are allocated in the "alloc" routine
while they are freed in the "free" one.
Later, two other helpers have been added to handle IRQ domains on top
of MSI domains:
platform_msi_domain_alloc()
platform_msi_domain_free()
Seen from the outside, the logic is pretty close with the former
helpers and people used it with the same logic as before: a
platform_msi_domain_alloc() call should be balanced with a
platform_msi_domain_free() call. While this is probably what was
intended to do, the platform_msi_domain_free() does not remove/free
the IRQ descriptor(s) created/inserted in
platform_msi_domain_alloc().
One effect of such situation is that removing a module that requested
an IRQ will let one orphaned IRQ descriptor (with an allocated MSI
entry) in the device descriptors list. Next time the module will be
inserted back, one will observe that the allocation will happen twice
in the MSI domain, one time for the remaining descriptor, one time for
the new one. It also has the side effect to quickly overshoot the
maximum number of allocated MSI and then prevent any module requesting
an interrupt in the same domain to be inserted anymore.
This situation has been met with loops of insertion/removal of the
mvpp2.ko module (requesting 15 MSIs each time).
Fixes: 552c494a7666 ("platform-msi: Allow creation of a MSI-based stacked irq domain")
Cc: stable(a)vger.kernel.org
Signed-off-by: Miquel Raynal <miquel.raynal(a)bootlin.com>
---
drivers/base/platform-msi.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/base/platform-msi.c b/drivers/base/platform-msi.c
index 60d6cc618f1c..b9d9d1729215 100644
--- a/drivers/base/platform-msi.c
+++ b/drivers/base/platform-msi.c
@@ -354,6 +354,20 @@ platform_msi_create_device_domain(struct device *dev,
return NULL;
}
+static void platform_msi_domain_free_descs(struct irq_domain *domain, int virq,
+ int nvec)
+{
+ struct platform_msi_priv_data *data = domain->host_data;
+ struct msi_desc *desc, *tmp;
+
+ list_for_each_entry_safe(desc, tmp, dev_to_msi_list(data->dev), list) {
+ if (desc->irq >= virq && desc->irq < (virq + nvec)) {
+ list_del(&desc->list);
+ free_msi_entry(desc);
+ }
+ }
+}
+
/**
* platform_msi_domain_free - Free interrupts associated with a platform-msi
* domain
@@ -375,6 +389,8 @@ void platform_msi_domain_free(struct irq_domain *domain, unsigned int virq,
irq_domain_free_irqs_common(domain, desc->irq, 1);
}
+
+ platform_msi_domain_free_descs(domain, virq, nvec);
}
/**
--
2.17.1
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 5d05dfd13f20b01a3cd5d293058baa7d5c1583b6:
Merge tag 'perf-urgent-for-mingo-4.19-20180918' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2018-09-19 13:25:35 +0200)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-4.19-20180928
for you to fetch changes up to 30aaba0acd1b4b6e69c45c416f2dbc9c8c5bdd50:
perf python: Use -Wno-redundant-decls to build with PYTHON=python3 (2018-09-27 22:31:05 -0300)
----------------------------------------------------------------
perf/urgent fixes:
- Fix the build on Clear Linux, coping with redundant declarations of
function prototypes in python3 header files by adding
-Wno-redundant-decls to build with PYTHON=python3 (Arnaldo Carvalho de Melo)
- Fixes for processing inline frames in backtraces using DWARF based
unwinding (Milian Wolff)
- Cope with bad DWARF info for function names for inline frames,not
trying to demangle this symbol. Problem reported with rust but
reproduced as well with C++. Problem reported to the libbpf
maintainers (Milian Wolff)
- Fix python export to postgresql and sqlite code (Adrian Hunter)
Signed-off-by: Arnaldo Carvalho de Melo <acme(a)redhat.com>
----------------------------------------------------------------
Adrian Hunter (2):
perf script python: Fix export-to-postgresql.py occasional failure
perf script python: Fix export-to-sqlite.py sample columns
Arnaldo Carvalho de Melo (1):
perf python: Use -Wno-redundant-decls to build with PYTHON=python3
Milian Wolff (3):
perf report: Don't try to map ip to invalid map
perf report: Use the offset address to find inline frames
perf report: Don't crash on invalid inline debug information
tools/perf/scripts/python/export-to-postgresql.py | 9 +++++++++
tools/perf/scripts/python/export-to-sqlite.py | 6 +++++-
tools/perf/util/machine.c | 11 ++++++-----
tools/perf/util/setup.py | 2 +-
tools/perf/util/srcline.c | 3 +++
5 files changed, 24 insertions(+), 7 deletions(-)
Test results:
The first ones are container (docker) based builds of tools/perf with
and without libelf support. Where clang is available, it is also used
to build perf with/without libelf, and building with LIBCLANGLLVM=1
(built-in clang) with gcc and clang when clang and its devel libraries
are installed.
The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
The Clear Linux container is building with NO_CLANG=1, the problem preventing
its use when building for python3 has been identified and the next builds will
build in ClearLinux with both gcc and clang. This time around only gcc was
used.
# dm
1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0
5 alpine:3.8 : Ok gcc (Alpine 6.4.0) 6.4.0
6 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0
7 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
8 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
9 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
10 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
11 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
12 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
13 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
14 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502
15 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2
16 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u1) 4.9.2
17 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
18 debian:experimental : Ok gcc (Debian 8.2.0-7) 8.2.0
19 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-4) 8.2.0
20 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
21 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.1.0-12) 8.1.0
22 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 8.1.0-12) 8.1.0
23 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
24 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
25 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
26 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
27 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
28 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
29 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
30 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
31 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
32 fedora:28 : Ok gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5)
33 fedora:rawhide : Ok gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
34 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
35 mageia:5 : Ok gcc (GCC) 4.9.2
36 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0
37 opensuse:13.2 : Ok gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
38 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5
39 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5
40 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5
41 opensuse:tumbleweed : Ok gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
42 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
43 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)
44 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
45 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
46 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
47 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
48 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
49 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
50 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
51 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
52 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
53 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
54 ubuntu:16.10 : Ok gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
55 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
56 ubuntu:18.04 : Ok gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
57 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
58 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
59 ubuntu:18.04-x-m68k : Ok m68k-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
60 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
61 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
62 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
63 ubuntu:18.04-x-riscv64 : Ok riscv64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
64 ubuntu:18.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
65 ubuntu:18.04-x-sh4 : Ok sh4-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
66 ubuntu:18.04-x-sparc64 : Ok sparc64-linux-gnu-gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
67 ubuntu:18.10 : Ok gcc (Ubuntu 8.2.0-4ubuntu1) 8.2.0
#
# uname -a
Linux jouet 4.19.0-rc4-00022-gad3273d5f1b9 #1 SMP Mon Sep 17 17:18:22 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
# git log --oneline -1
30aaba0acd1b perf python: Use -Wno-redundant-decls to build with PYTHON=python3
# perf version --build-options
perf version 4.19.rc4.g30aaba
dwarf: [ on ] # HAVE_DWARF_SUPPORT
dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
glibc: [ on ] # HAVE_GLIBC_SUPPORT
gtk2: [ on ] # HAVE_GTK2_SUPPORT
syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT
libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
libelf: [ on ] # HAVE_LIBELF_SUPPORT
libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
libperl: [ on ] # HAVE_LIBPERL_SUPPORT
libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
libslang: [ on ] # HAVE_SLANG_SUPPORT
libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
zlib: [ on ] # HAVE_ZLIB_SUPPORT
lzma: [ on ] # HAVE_LZMA_SUPPORT
get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
bpf: [ on ] # HAVE_LIBBPF_SUPPORT
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Breakpoint accounting : Ok
22: Number of exit events of a simple workload : Ok
23: Software clock events period values : Ok
24: Object code reading : Ok
25: Sample parsing : Ok
26: Use a dummy software event to keep tracking : Ok
27: Parse with no sample_id_all bit set : Ok
28: Filter hist entries : Ok
29: Lookup mmap thread : Ok
30: Share thread mg : Ok
31: Sort output of hist entries : Ok
32: Cumulate child hist entries : Ok
33: Track with sched_switch : Ok
34: Filter fds with revents mask in a fdarray : Ok
35: Add fd to a fdarray, making it autogrow : Ok
36: kmod_path__parse : Ok
37: Thread map : Ok
38: LLVM search and compile :
38.1: Basic BPF llvm compile : Ok
38.2: kbuild searching : Ok
38.3: Compile source for BPF prologue generation : Ok
38.4: Compile source for BPF relocation : Ok
39: Session topology : Ok
40: BPF filter :
40.1: Basic BPF filtering : Ok
40.2: BPF pinning : Ok
40.3: BPF prologue generation : Ok
40.4: BPF relocation checker : Ok
41: Synthesize thread map : Ok
42: Remove thread map : Ok
43: Synthesize cpu map : Ok
44: Synthesize stat config : Ok
45: Synthesize stat : Ok
46: Synthesize stat round : Ok
47: Synthesize attr update : Ok
48: Event times : Ok
49: Read backward ring buffer : Ok
50: Print cpu map : Ok
51: Probe SDT events : Ok
52: is_printable_array : Ok
53: Print bitmap : Ok
54: perf hooks : Ok
55: builtin clang support : Skip (not compiled in)
56: unit_number__scnprintf : Ok
57: mem2node : Ok
58: x86 rdpmc : Ok
59: Convert perf time to TSC : Ok
60: DWARF unwind : Ok
61: x86 instruction decoder - new instructions : Ok
62: x86 bp modify : Ok
63: Use vfs_getname probe to get syscall args filenames : Ok
64: Check open filename arg using perf trace + vfs_getname: Ok
65: probe libc's inet_pton & backtrace it with ping : Ok
66: Add vfs_getname probe to get syscall args filenames : Ok
$ time make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
- /home/acme/git/perf/tools/perf/BUILD_TEST_FEATURE_DUMP: make FEATURE_DUMP_COPY=/home/acme/git/perf/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump
make_no_gtk2_O: make NO_GTK2=1
make_install_O: make install
make_install_prefix_O: make install prefix=/tmp/krava
make_tags_O: make tags
make_static_O: make LDFLAGS=-static
make_debug_O: make DEBUG=1
make_no_libperl_O: make NO_LIBPERL=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_clean_all_O: make clean all
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_no_demangle_O: make NO_DEMANGLE=1
make_no_libbpf_O: make NO_LIBBPF=1
make_help_O: make help
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_perf_o_O: make perf.o
make_no_auxtrace_O: make NO_AUXTRACE=1
make_util_map_o_O: make util/map.o
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_slang_O: make NO_SLANG=1
make_pure_O: make
make_no_libelf_O: make NO_LIBELF=1
make_no_newt_O: make NO_NEWT=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_doc_O: make doc
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_no_libpython_O: make NO_LIBPYTHON=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_install_bin_O: make install-bin
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$
From: Alexey Dobriyan <adobriyan(a)gmail.com>
/*
* cpu_partial determined the maximum number of objects
* kept in the per cpu partial lists of a processor.
*/
Can't be negative.
I hit a real issue that it will result in a large number of memory leak.
Because Freeing slabs are in interrupt context. So it can trigger this issue.
put_cpu_partial can be interrupted more than once.
due to a union struct of lru and pobjects in struct page, when other core handles
page->lru list, for eaxmple, remove_partial in freeing slab code flow, It will
result in pobjects being a negative value(0xdead0000). Therefore, a large number
of slabs will be added to per_cpu partial list.
I had posted the issue to community before. The detailed issue description is as follows.
Link: https://www.spinics.net/lists/kernel/msg2870979.html
After applying the patch, The issue is fixed. So the patch is a effective bugfix.
It should go into stable.
Signed-off-by: Alexey Dobriyan <adobriyan(a)gmail.com>
Acked-by: Christoph Lameter <cl(a)linux.com>
Cc: Pekka Enberg <penberg(a)kernel.org>
Cc: David Rientjes <rientjes(a)google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim(a)lge.com>
Cc: stable(a)vger.kernel.org
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: zhong jiang <zhongjiang(a)huawei.com>
---
include/linux/slub_def.h | 3 ++-
mm/slub.c | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index 3388511..9b681f2 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -67,7 +67,8 @@ struct kmem_cache {
int size; /* The size of an object including meta data */
int object_size; /* The size of an object without meta data */
int offset; /* Free pointer offset. */
- int cpu_partial; /* Number of per cpu partial objects to keep around */
+ /* Number of per cpu partial objects to keep around */
+ unsigned int cpu_partial;
struct kmem_cache_order_objects oo;
/* Allocation and freeing of slabs */
diff --git a/mm/slub.c b/mm/slub.c
index 2284c43..c33b0e1 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1661,7 +1661,7 @@ static void *get_partial_node(struct kmem_cache *s, struct kmem_cache_node *n,
{
struct page *page, *page2;
void *object = NULL;
- int available = 0;
+ unsigned int available = 0;
int objects;
/*
@@ -4674,10 +4674,10 @@ static ssize_t cpu_partial_show(struct kmem_cache *s, char *buf)
static ssize_t cpu_partial_store(struct kmem_cache *s, const char *buf,
size_t length)
{
- unsigned long objects;
+ unsigned int objects;
int err;
- err = kstrtoul(buf, 10, &objects);
+ err = kstrtouint(buf, 10, &objects);
if (err)
return err;
if (objects && !kmem_cache_has_cpu_partial(s))
--
1.7.12.4
This is the start of the stable review cycle for the 4.18.11 release.
There are 88 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 Sat Sep 29 09:02:26 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.18.11-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.18.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.18.11-rc1
Steve Wise <swise(a)opengridcomputing.com>
iw_cxgb4: only allow 1 flush on user qps
Nadav Amit <namit(a)vmware.com>
vmw_balloon: include asm/io.h
Steve Muckle <smuckle(a)google.com>
sched/fair: Fix vruntime_normalized() for remote non-migration wakeup
Toshi Kani <toshi.kani(a)hpe.com>
ext4, dax: set ext4_dax_aops for dax files
Toshi Kani <toshi.kani(a)hpe.com>
ext4, dax: add ext4_bmap to ext4_dax_aops
Eric Biggers <ebiggers(a)google.com>
ext4: show test_dummy_encryption mount option in /proc/mounts
Li Dongyang <dongyangli(a)ddn.com>
ext4: don't mark mmp buffer head dirty
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resizing for bigalloc file systems with a 1k block size
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resize's handling of a too-small final block group
Theodore Ts'o <tytso(a)mit.edu>
ext4: recalucate superblock checksum after updating free blocks/inodes
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid arithemetic overflow that can trigger a BUG
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid divide by zero fault when deleting corrupted inline directories
Theodore Ts'o <tytso(a)mit.edu>
ext4: check to make sure the rename(2)'s destination is not freed
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
tty: vt_ioctl: fix potential Spectre v1
Lyude Paul <lyude(a)redhat.com>
drm/atomic: Use drm_drv_uses_atomic_modeset() for debugfs creation
Alex Deucher <alexander.deucher(a)amd.com>
drm/amdgpu: add new polaris pci id
Emil Lundmark <lndmrk(a)chromium.org>
drm: udl: Destroy framebuffer only if it was initialized
Boris Brezillon <boris.brezillon(a)bootlin.com>
drm/vc4: Fix the "no scaling" case on multi-planar YUV formats
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Prevent handling ACPI HPD events too early
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Fix bogus drm_kms_helper_poll_enable() placement
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload
Lyude Paul <lyude(a)redhat.com>
drm/nouveau: Fix deadlocks in nouveau_connector_detect()
Lyude Paul <lyude(a)redhat.com>
drm/nouveau: Remove duplicate poll_enable() in pmops_runtime_suspend()
Lyude Paul <lyude(a)redhat.com>
drm/nouveau: Only write DP_MSTM_CTRL when needed
Lyude Paul <lyude(a)redhat.com>
drm/nouveau: Reset MST branching unit before enabling
Imre Deak <imre.deak(a)intel.com>
drm/i915/bdw: Increase IPS disable timeout to 100ms
Junxiao Bi <junxiao.bi(a)oracle.com>
ocfs2: fix ocfs2 read block panic
Jens Axboe <axboe(a)kernel.dk>
libata: mask swap internal and hardware tag
Richard Weinberger <richard(a)nod.at>
Revert "ubifs: xattr: Don't operate on deleted inodes"
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use bin2hex instead of a re-implementation
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use hex2bin instead of a re-implementation
Lubomir Rintel <lkundrak(a)v3.sk>
Revert "uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name"
Alexei Starovoitov <ast(a)kernel.org>
bpf/verifier: disallow pointer subtraction
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Revert "rpmsg: core: add support to power domains for devices"
Joel Fernandes (Google) <joel(a)joelfernandes.org>
mm: shmem.c: Correctly annotate new inodes for lockdep
Pasha Tatashin <Pavel.Tatashin(a)microsoft.com>
mm: disable deferred struct page for 32-bit arches
KJ Tsanaktsidis <ktsanaktsidis(a)zendesk.com>
fork: report pid exhaustion correctly
Ondrej Mosnacek <omosnace(a)redhat.com>
crypto: x86/aegis,morus - Do not require OSXSAVE for SSE2
Vaibhav Nagarnaik <vnagarnaik(a)google.com>
ring-buffer: Allow for rescheduling when removing pages
Mika Westerberg <mika.westerberg(a)linux.intel.com>
Revert "PCI: Add ACS quirk for Intel 300 series"
Kirill Kapranov <kirill.kapranov(a)compulab.co.il>
spi: fix IDR collision on systems with both fixed and dynamic SPI bus numbers
Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
xen/x86/vpmu: Zero struct pt_regs before calling into sample handling code
Juergen Gross <jgross(a)suse.com>
xen/netfront: don't bug in case of too many frags
Mario Limonciello <mario.limonciello(a)dell.com>
platform/x86: alienware-wmi: Correct a memory leak
Mario Limonciello <mario.limonciello(a)dell.com>
platform/x86: dell-smbios-wmi: Correct a memory leak
Masahiro Yamada <yamada.masahiro(a)socionext.com>
mtd: rawnand: denali: fix a race condition when DMA is kicked
Boris Brezillon <boris.brezillon(a)bootlin.com>
mtd: devices: m25p80: Make sure the buffer passed in op is DMA-able
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of discovered stream formats at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak for model-dependent data at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: fireworks: fix memory leak of response buffer at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-tascam: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-digi00x: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: fireface: fix memory leak in ff400_switch_fetching_mode()
Willy Tarreau <w(a)1wt.eu>
ALSA: emu10k1: fix possible info leak to userspace on SNDRV_EMU10K1_IOCTL_INFO
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: fix memory leak for M-Audio FW1814 and ProjectMix I/O at error path
Dmitry V. Levin <ldv(a)altlinux.org>
ASoC: uapi: fix sound/skl-tplg-interface.h userspace compilation errors
Jiada Wang <jiada_wang(a)mentor.com>
ASoC: rsnd: fixup not to call clk_get/set under non-atomic
Andrew F. Davis <afd(a)ti.com>
ASoC: tas6424: Save last fault register even when clear
Sébastien Szymanski <sebastien.szymanski(a)armadeus.com>
ASoC: cs4265: fix MMTLR Data switch control
Marcel Ziswiler <marcel.ziswiler(a)toradex.com>
ASoC: wm9712: fix replace codec to component
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix the number of pipes
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix possible memory corruption when handling SHDLC I-Frame commands
Roopa Prabhu <roopa(a)cumulusnetworks.com>
net: rtnl_configure_link: fix dev flags changes arg to __dev_notify_flags
Antoine Tenart <antoine.tenart(a)bootlin.com>
net: mvpp2: let phylink manage the carrier state
Peter Oskolkov <posk(a)google.com>
net/ipv6: do not copy dst flags on rt init
Xin Long <lucien.xin(a)gmail.com>
ipv6: use rt6_info members when dst is set in rt6_fill_node
Michael Chan <michael.chan(a)broadcom.com>
bnxt_en: Fix VF mac address regression.
Daniel Borkmann <daniel(a)iogearbox.net>
tls: fix currently broken MSG_PEEK behavior
Johannes Berg <johannes.berg(a)intel.com>
socket: fix struct ifreq size in compat ioctl
Andrew Lunn <andrew(a)lunn.ch>
net: dsa: mv88e6xxx: Fix ATU Miss Violation
Stephen Hemminger <stephen(a)networkplumber.org>
hv_netvsc: fix schedule in RCU context
Davide Caratti <dcaratti(a)redhat.com>
net/sched: act_sample: fix NULL dereference in the data path
Paolo Abeni <pabeni(a)redhat.com>
udp6: add missing checks on edumux packet processing
Vasily Khoruzhick <vasilykh(a)arista.com>
neighbour: confirm neigh entries when ARP packet is received
Sabrina Dubroca <sd(a)queasysnail.net>
tls: clear key material from kernel memory when do_tls_setsockopt_conf fails
Sabrina Dubroca <sd(a)queasysnail.net>
tls: zero the crypto information from tls_context before freeing
Sabrina Dubroca <sd(a)queasysnail.net>
tls: don't copy the key out of tls12_crypto_info_aes_gcm_128
Paolo Abeni <pabeni(a)redhat.com>
udp4: fix IP_CMSG_CHECKSUM for connected sockets
Bjørn Mork <bjorn(a)mork.no>
qmi_wwan: set DTR for modems in forced USB2 mode
Guillaume Nault <g.nault(a)alphalink.fr>
pppoe: fix reception of frames with no mac header
Colin Ian King <colin.king(a)canonical.com>
net: hp100: fix always-true check for link up state
Willy Tarreau <w(a)1wt.eu>
net/appletalk: fix minor pointer leak to userspace in SIOCFINDIPDDPRT
Eric Dumazet <edumazet(a)google.com>
ipv6: fix possible use-after-free in ip6_xmit()
Toke Høiland-Jørgensen <toke(a)toke.dk>
gso_segment: Reset skb->mac_len after modifying network header
-------------
Diffstat:
Makefile | 4 +-
arch/x86/crypto/aegis128-aesni-glue.c | 1 -
arch/x86/crypto/aegis128l-aesni-glue.c | 1 -
arch/x86/crypto/aegis256-aesni-glue.c | 1 -
arch/x86/crypto/morus1280-sse2-glue.c | 1 -
arch/x86/crypto/morus640-sse2-glue.c | 1 -
arch/x86/xen/pmu.c | 2 +-
drivers/ata/libata-core.c | 14 +++-
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 14 ++--
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
drivers/gpu/drm/drm_atomic.c | 2 +-
drivers/gpu/drm/drm_debugfs.c | 2 +-
drivers/gpu/drm/i915/intel_display.c | 8 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 67 +++++++++++----
drivers/gpu/drm/nouveau/nouveau_connector.c | 42 ++++++++--
drivers/gpu/drm/nouveau/nouveau_display.c | 44 +++++++---
drivers/gpu/drm/nouveau/nouveau_display.h | 2 +-
drivers/gpu/drm/nouveau/nouveau_drm.c | 3 +-
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 57 +++++++++++++
drivers/gpu/drm/nouveau/nouveau_fbcon.h | 5 ++
drivers/gpu/drm/udl/udl_fb.c | 8 +-
drivers/gpu/drm/vc4/vc4_plane.c | 25 +++---
drivers/infiniband/hw/cxgb4/qp.c | 6 ++
drivers/misc/vmw_balloon.c | 1 +
drivers/mtd/devices/m25p80.c | 26 +++++-
drivers/mtd/nand/raw/denali.c | 6 ++
drivers/net/appletalk/ipddp.c | 8 +-
drivers/net/dsa/mv88e6xxx/global1.h | 2 +-
drivers/net/dsa/mv88e6xxx/global1_atu.c | 2 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 9 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c | 9 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h | 2 +-
drivers/net/ethernet/hp/hp100.c | 2 +-
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 21 ++---
drivers/net/hyperv/netvsc_drv.c | 9 +-
drivers/net/ppp/pppoe.c | 3 +
drivers/net/usb/qmi_wwan.c | 14 ++--
drivers/net/xen-netfront.c | 8 +-
drivers/pci/quirks.c | 6 --
drivers/platform/x86/alienware-wmi.c | 1 +
drivers/platform/x86/dell-smbios-wmi.c | 1 +
drivers/rpmsg/rpmsg_core.c | 7 --
drivers/spi/spi.c | 9 ++
drivers/target/iscsi/iscsi_target_auth.c | 45 ++++------
drivers/tty/vt/vt_ioctl.c | 4 +
fs/ext4/dir.c | 20 ++---
fs/ext4/ext4.h | 3 +
fs/ext4/inline.c | 4 +-
fs/ext4/inode.c | 11 ++-
fs/ext4/mmp.c | 1 -
fs/ext4/namei.c | 6 ++
fs/ext4/resize.c | 23 ++++-
fs/ext4/super.c | 4 +
fs/ocfs2/buffer_head_io.c | 1 +
fs/ubifs/xattr.c | 24 ------
include/net/nfc/hci.h | 2 +-
include/net/tls.h | 19 ++---
include/uapi/linux/keyctl.h | 2 +-
include/uapi/sound/skl-tplg-interface.h | 106 ++++++++++++------------
kernel/bpf/verifier.c | 2 +-
kernel/pid.c | 2 +-
kernel/sched/fair.c | 3 +-
kernel/trace/ring_buffer.c | 2 +
mm/Kconfig | 1 +
mm/shmem.c | 2 +
net/core/neighbour.c | 13 +--
net/core/rtnetlink.c | 2 +-
net/ipv4/af_inet.c | 1 +
net/ipv4/udp.c | 49 ++++++-----
net/ipv6/ip6_offload.c | 1 +
net/ipv6/ip6_output.c | 6 +-
net/ipv6/route.c | 44 ++++++----
net/ipv6/udp.c | 65 ++++++++-------
net/nfc/hci/core.c | 10 +++
net/sched/act_sample.c | 2 +-
net/socket.c | 22 +++--
net/tls/tls_device.c | 4 +-
net/tls/tls_device_fallback.c | 2 +-
net/tls/tls_main.c | 22 +++--
net/tls/tls_sw.c | 21 +++--
security/keys/dh.c | 2 +-
sound/firewire/bebob/bebob.c | 2 +
sound/firewire/bebob/bebob_maudio.c | 28 +++----
sound/firewire/digi00x/digi00x.c | 1 +
sound/firewire/fireface/ff-protocol-ff400.c | 9 +-
sound/firewire/fireworks/fireworks.c | 2 +
sound/firewire/oxfw/oxfw.c | 10 +++
sound/firewire/tascam/tascam.c | 1 +
sound/pci/emu10k1/emufx.c | 2 +-
sound/soc/codecs/cs4265.c | 4 +-
sound/soc/codecs/tas6424.c | 12 ++-
sound/soc/codecs/wm9712.c | 2 +-
sound/soc/sh/rcar/core.c | 11 +++
sound/soc/sh/rcar/rsnd.h | 7 ++
sound/soc/sh/rcar/ssi.c | 16 ++--
95 files changed, 714 insertions(+), 403 deletions(-)
This is the start of the stable review cycle for the 4.14.73 release.
There are 64 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 Sat Sep 29 09:02:21 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.73-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.14.73-rc1
Thomas Gleixner <tglx(a)linutronix.de>
tick/nohz: Prevent bogus softirq pending warning
Steve Wise <swise(a)opengridcomputing.com>
iw_cxgb4: only allow 1 flush on user qps
Nadav Amit <namit(a)vmware.com>
vmw_balloon: include asm/io.h
Zachary Zhang <zhangzg(a)marvell.com>
PCI: aardvark: Size bridges before resources allocation
Steve Muckle <smuckle(a)google.com>
sched/fair: Fix vruntime_normalized() for remote non-migration wakeup
Eric Biggers <ebiggers(a)google.com>
ext4: show test_dummy_encryption mount option in /proc/mounts
Li Dongyang <dongyangli(a)ddn.com>
ext4: don't mark mmp buffer head dirty
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resizing for bigalloc file systems with a 1k block size
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resize's handling of a too-small final block group
Theodore Ts'o <tytso(a)mit.edu>
ext4: recalucate superblock checksum after updating free blocks/inodes
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid arithemetic overflow that can trigger a BUG
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid divide by zero fault when deleting corrupted inline directories
Theodore Ts'o <tytso(a)mit.edu>
ext4: check to make sure the rename(2)'s destination is not freed
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
tty: vt_ioctl: fix potential Spectre v1
Lyude Paul <lyude(a)redhat.com>
drm/atomic: Use drm_drv_uses_atomic_modeset() for debugfs creation
Alex Deucher <alexander.deucher(a)amd.com>
drm/amdgpu: add new polaris pci id
Emil Lundmark <lndmrk(a)chromium.org>
drm: udl: Destroy framebuffer only if it was initialized
Boris Brezillon <boris.brezillon(a)bootlin.com>
drm/vc4: Fix the "no scaling" case on multi-planar YUV formats
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Prevent handling ACPI HPD events too early
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Fix bogus drm_kms_helper_poll_enable() placement
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload
Lyude Paul <lyude(a)redhat.com>
drm/nouveau: Fix deadlocks in nouveau_connector_detect()
Junxiao Bi <junxiao.bi(a)oracle.com>
ocfs2: fix ocfs2 read block panic
Richard Weinberger <richard(a)nod.at>
Revert "ubifs: xattr: Don't operate on deleted inodes"
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use bin2hex instead of a re-implementation
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use hex2bin instead of a re-implementation
Lubomir Rintel <lkundrak(a)v3.sk>
Revert "uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name"
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Revert "rpmsg: core: add support to power domains for devices"
Joel Fernandes (Google) <joel(a)joelfernandes.org>
mm: shmem.c: Correctly annotate new inodes for lockdep
Vaibhav Nagarnaik <vnagarnaik(a)google.com>
ring-buffer: Allow for rescheduling when removing pages
Mika Westerberg <mika.westerberg(a)linux.intel.com>
Revert "PCI: Add ACS quirk for Intel 300 series"
Kirill Kapranov <kirill.kapranov(a)compulab.co.il>
spi: fix IDR collision on systems with both fixed and dynamic SPI bus numbers
Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
xen/x86/vpmu: Zero struct pt_regs before calling into sample handling code
Juergen Gross <jgross(a)suse.com>
xen/netfront: don't bug in case of too many frags
Mario Limonciello <mario.limonciello(a)dell.com>
platform/x86: alienware-wmi: Correct a memory leak
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of discovered stream formats at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak for model-dependent data at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: fireworks: fix memory leak of response buffer at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-tascam: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-digi00x: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: fireface: fix memory leak in ff400_switch_fetching_mode()
Willy Tarreau <w(a)1wt.eu>
ALSA: emu10k1: fix possible info leak to userspace on SNDRV_EMU10K1_IOCTL_INFO
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: fix memory leak for M-Audio FW1814 and ProjectMix I/O at error path
Jiada Wang <jiada_wang(a)mentor.com>
ASoC: rsnd: fixup not to call clk_get/set under non-atomic
Sébastien Szymanski <sebastien.szymanski(a)armadeus.com>
ASoC: cs4265: fix MMTLR Data switch control
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix the number of pipes
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix possible memory corruption when handling SHDLC I-Frame commands
Sabrina Dubroca <sd(a)queasysnail.net>
tls: clear key material from kernel memory when do_tls_setsockopt_conf fails
Sabrina Dubroca <sd(a)queasysnail.net>
tls: zero the crypto information from tls_context before freeing
Sabrina Dubroca <sd(a)queasysnail.net>
tls: don't copy the key out of tls12_crypto_info_aes_gcm_128
Davide Caratti <dcaratti(a)redhat.com>
net/sched: act_sample: fix NULL dereference in the data path
Paolo Abeni <pabeni(a)redhat.com>
udp6: add missing checks on edumux packet processing
Vasily Khoruzhick <vasilykh(a)arista.com>
neighbour: confirm neigh entries when ARP packet is received
Paolo Abeni <pabeni(a)redhat.com>
udp4: fix IP_CMSG_CHECKSUM for connected sockets
Bjørn Mork <bjorn(a)mork.no>
qmi_wwan: set DTR for modems in forced USB2 mode
Guillaume Nault <g.nault(a)alphalink.fr>
pppoe: fix reception of frames with no mac header
Colin Ian King <colin.king(a)canonical.com>
net: hp100: fix always-true check for link up state
Willy Tarreau <w(a)1wt.eu>
net/appletalk: fix minor pointer leak to userspace in SIOCFINDIPDDPRT
Eric Dumazet <edumazet(a)google.com>
ipv6: fix possible use-after-free in ip6_xmit()
Toke Høiland-Jørgensen <toke(a)toke.dk>
gso_segment: Reset skb->mac_len after modifying network header
-------------
Diffstat:
Makefile | 4 +-
arch/x86/xen/pmu.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 14 ++++---
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
drivers/gpu/drm/drm_atomic.c | 2 +-
drivers/gpu/drm/drm_debugfs.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 42 +++++++++++++++----
drivers/gpu/drm/nouveau/nouveau_display.c | 42 ++++++++++++++-----
drivers/gpu/drm/nouveau/nouveau_display.h | 2 +-
drivers/gpu/drm/nouveau/nouveau_drm.c | 2 +-
drivers/gpu/drm/udl/udl_fb.c | 8 ++--
drivers/gpu/drm/vc4/vc4_plane.c | 25 ++++++-----
drivers/infiniband/hw/cxgb4/qp.c | 6 +++
drivers/misc/vmw_balloon.c | 1 +
drivers/net/appletalk/ipddp.c | 8 +++-
drivers/net/ethernet/hp/hp100.c | 2 +-
drivers/net/ppp/pppoe.c | 3 ++
drivers/net/usb/qmi_wwan.c | 14 +++----
drivers/net/xen-netfront.c | 8 +++-
drivers/pci/host/pci-aardvark.c | 1 +
drivers/pci/quirks.c | 6 ---
drivers/platform/x86/alienware-wmi.c | 1 +
drivers/rpmsg/rpmsg_core.c | 7 ----
drivers/spi/spi.c | 9 ++++
drivers/target/iscsi/iscsi_target_auth.c | 45 ++++++++------------
drivers/tty/vt/vt_ioctl.c | 4 ++
fs/ext4/dir.c | 20 ++++-----
fs/ext4/ext4.h | 3 ++
fs/ext4/inline.c | 4 +-
fs/ext4/inode.c | 9 +++-
fs/ext4/mmp.c | 1 -
fs/ext4/namei.c | 6 +++
fs/ext4/resize.c | 23 +++++++++-
fs/ext4/super.c | 4 ++
fs/ocfs2/buffer_head_io.c | 1 +
fs/ubifs/xattr.c | 24 -----------
include/net/nfc/hci.h | 2 +-
include/net/tls.h | 14 ++++---
include/uapi/linux/keyctl.h | 2 +-
kernel/sched/fair.c | 3 +-
kernel/time/tick-sched.c | 2 +-
kernel/trace/ring_buffer.c | 2 +
mm/shmem.c | 2 +
net/core/neighbour.c | 13 +++---
net/ipv4/af_inet.c | 1 +
net/ipv4/udp.c | 49 ++++++++++++----------
net/ipv6/ip6_offload.c | 1 +
net/ipv6/ip6_output.c | 6 +--
net/ipv6/udp.c | 65 ++++++++++++++++-------------
net/nfc/hci/core.c | 10 +++++
net/sched/act_sample.c | 2 +-
net/tls/tls_main.c | 17 ++++++--
net/tls/tls_sw.c | 7 +---
security/keys/dh.c | 2 +-
sound/firewire/bebob/bebob.c | 2 +
sound/firewire/bebob/bebob_maudio.c | 28 ++++++-------
sound/firewire/digi00x/digi00x.c | 1 +
sound/firewire/fireface/ff-protocol-ff400.c | 9 ++--
sound/firewire/fireworks/fireworks.c | 2 +
sound/firewire/oxfw/oxfw.c | 10 +++++
sound/firewire/tascam/tascam.c | 1 +
sound/pci/emu10k1/emufx.c | 2 +-
sound/soc/codecs/cs4265.c | 4 +-
sound/soc/sh/rcar/core.c | 11 +++++
sound/soc/sh/rcar/rsnd.h | 7 ++++
sound/soc/sh/rcar/ssi.c | 16 ++++---
66 files changed, 401 insertions(+), 248 deletions(-)
Tree/Branch: v3.16.58
Git describe: v3.16.58
Commit: 51f70ddc85 Linux 3.16.58
Build Time: 33 min 54 sec
Passed: 10 / 10 (100.00 %)
Failed: 0 / 10 ( 0.00 %)
Errors: 0
Warnings: 17
Section Mismatches: 0
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
5 warnings 0 mismatches : arm64-allmodconfig
2 warnings 0 mismatches : arm-multi_v5_defconfig
2 warnings 0 mismatches : arm-multi_v7_defconfig
1 warnings 0 mismatches : x86_64-defconfig
6 warnings 0 mismatches : arm-allmodconfig
1 warnings 0 mismatches : arm-allnoconfig
1 warnings 0 mismatches : x86_64-allnoconfig
9 warnings 0 mismatches : x86_64-allmodconfig
2 warnings 0 mismatches : arm64-defconfig
-------------------------------------------------------------------------------
Warnings Summary: 17
7 <stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
2 ../ipc/sem.c:377:6: warning: '___p1' may be used uninitialized in this function [-Wmaybe-uninitialized]
2 ../drivers/staging/vt6656/main_usb.c:1101:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2 ../drivers/staging/vt6656/dpc.c:712:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2 ../drivers/net/ethernet/broadcom/genet/bcmgenet.c:1346:17: warning: unused variable 'kdev' [-Wunused-variable]
2 ../drivers/media/dvb-frontends/drxk_hard.c:2223:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2 ../drivers/media/dvb-frontends/drxd_hard.c:2631:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/rtl8192ee/rtl8192ee/hw.c:529:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/rtl8192ee/rtl8192ee/hw.c:524:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/rtl8192ee/btcoexist/halbtc8821a2ant.c:2338:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/fnic/fnic_fcs.c:104:6: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/platform/x86/eeepc-laptop.c:279:10: warning: 'value' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/net/wireless/rtlwifi/rtl8723be/hw.c:1132:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/mtd/nand/omap2.c:1318:12: warning: 'omap_calculate_ecc_bch_multi' defined but not used [-Wunused-function]
1 ../drivers/media/platform/davinci/vpfe_capture.c:291:12: warning: 'vpfe_get_ccdc_image_format' defined but not used [-Wunused-function]
1 ../drivers/media/platform/davinci/vpfe_capture.c:1718:1: warning: label 'unlock_out' defined but not used [-Wunused-label]
1 ../arch/x86/kernel/cpu/common.c:1096:13: warning: 'syscall32_cpu_init' defined but not used [-Wunused-function]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allmodconfig : PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
../drivers/media/dvb-frontends/drxd_hard.c:2631:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/media/dvb-frontends/drxk_hard.c:2223:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/net/ethernet/broadcom/genet/bcmgenet.c:1346:17: warning: unused variable 'kdev' [-Wunused-variable]
../drivers/staging/vt6656/main_usb.c:1101:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/vt6656/dpc.c:712:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
-------------------------------------------------------------------------------
arm-multi_v5_defconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
-------------------------------------------------------------------------------
arm-multi_v7_defconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
-------------------------------------------------------------------------------
x86_64-defconfig : PASS, 0 errors, 1 warnings, 0 section mismatches
Warnings:
../drivers/platform/x86/eeepc-laptop.c:279:10: warning: 'value' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm-allmodconfig : PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
../drivers/mtd/nand/omap2.c:1318:12: warning: 'omap_calculate_ecc_bch_multi' defined but not used [-Wunused-function]
../drivers/media/platform/davinci/vpfe_capture.c:1718:1: warning: label 'unlock_out' defined but not used [-Wunused-label]
../drivers/media/platform/davinci/vpfe_capture.c:291:12: warning: 'vpfe_get_ccdc_image_format' defined but not used [-Wunused-function]
../drivers/net/ethernet/broadcom/genet/bcmgenet.c:1346:17: warning: unused variable 'kdev' [-Wunused-variable]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
-------------------------------------------------------------------------------
arm-allnoconfig : PASS, 0 errors, 1 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
-------------------------------------------------------------------------------
x86_64-allnoconfig : PASS, 0 errors, 1 warnings, 0 section mismatches
Warnings:
../arch/x86/kernel/cpu/common.c:1096:13: warning: 'syscall32_cpu_init' defined but not used [-Wunused-function]
-------------------------------------------------------------------------------
x86_64-allmodconfig : PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
../drivers/media/dvb-frontends/drxd_hard.c:2631:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/media/dvb-frontends/drxk_hard.c:2223:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/fnic/fnic_fcs.c:104:6: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/rtl8192ee/rtl8192ee/hw.c:524:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/rtl8192ee/rtl8192ee/hw.c:529:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/rtl8192ee/btcoexist/halbtc8821a2ant.c:2338:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/net/wireless/rtlwifi/rtl8723be/hw.c:1132:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/vt6656/main_usb.c:1101:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/vt6656/dpc.c:712:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
-------------------------------------------------------------------------------
arm64-defconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
../ipc/sem.c:377:6: warning: '___p1' may be used uninitialized in this function [-Wmaybe-uninitialized]
../ipc/sem.c:377:6: warning: '___p1' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
arm64-allnoconfig
This is the start of the stable review cycle for the 4.4.159 release.
There are 28 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 Sat Sep 29 09:06:27 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.159-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.4.159-rc1
Steve Wise <swise(a)opengridcomputing.com>
iw_cxgb4: only allow 1 flush on user qps
Roderick Colenbrander <roderick.colenbrander(a)sony.com>
HID: sony: Support DS4 dongle
Roderick Colenbrander <roderick.colenbrander(a)sony.com>
HID: sony: Update device ids
Catalin Marinas <catalin.marinas(a)arm.com>
arm64: Add trace_hardirqs_off annotation in ret_to_user
Li Dongyang <dongyangli(a)ddn.com>
ext4: don't mark mmp buffer head dirty
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resizing for bigalloc file systems with a 1k block size
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resize's handling of a too-small final block group
Theodore Ts'o <tytso(a)mit.edu>
ext4: recalucate superblock checksum after updating free blocks/inodes
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid divide by zero fault when deleting corrupted inline directories
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
tty: vt_ioctl: fix potential Spectre v1
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
Junxiao Bi <junxiao.bi(a)oracle.com>
ocfs2: fix ocfs2 read block panic
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use hex2bin instead of a re-implementation
Vasily Khoruzhick <vasilykh(a)arista.com>
neighbour: confirm neigh entries when ARP packet is received
Colin Ian King <colin.king(a)canonical.com>
net: hp100: fix always-true check for link up state
Willy Tarreau <w(a)1wt.eu>
net/appletalk: fix minor pointer leak to userspace in SIOCFINDIPDDPRT
Eric Dumazet <edumazet(a)google.com>
ipv6: fix possible use-after-free in ip6_xmit()
Toke Høiland-Jørgensen <toke(a)toke.dk>
gso_segment: Reset skb->mac_len after modifying network header
Joel Fernandes (Google) <joel(a)joelfernandes.org>
mm: shmem.c: Correctly annotate new inodes for lockdep
Vaibhav Nagarnaik <vnagarnaik(a)google.com>
ring-buffer: Allow for rescheduling when removing pages
Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
xen/x86/vpmu: Zero struct pt_regs before calling into sample handling code
Juergen Gross <jgross(a)suse.com>
xen/netfront: don't bug in case of too many frags
Mario Limonciello <mario.limonciello(a)dell.com>
platform/x86: alienware-wmi: Correct a memory leak
Willy Tarreau <w(a)1wt.eu>
ALSA: emu10k1: fix possible info leak to userspace on SNDRV_EMU10K1_IOCTL_INFO
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping
Sébastien Szymanski <sebastien.szymanski(a)armadeus.com>
ASoC: cs4265: fix MMTLR Data switch control
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix the number of pipes
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix possible memory corruption when handling SHDLC I-Frame commands
-------------
Diffstat:
Makefile | 4 ++--
arch/arm64/kernel/entry.S | 3 +++
arch/x86/xen/pmu.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 20 ++++++++++---------
drivers/hid/hid-core.c | 3 +++
drivers/hid/hid-ids.h | 2 ++
drivers/hid/hid-sony.c | 6 ++++++
drivers/infiniband/hw/cxgb4/qp.c | 6 ++++++
drivers/net/appletalk/ipddp.c | 8 ++++++--
drivers/net/ethernet/hp/hp100.c | 2 +-
drivers/net/xen-netfront.c | 8 +++++++-
drivers/platform/x86/alienware-wmi.c | 1 +
drivers/target/iscsi/iscsi_target_auth.c | 30 ++++++++++++++---------------
drivers/tty/vt/vt_ioctl.c | 4 ++++
fs/ext4/dir.c | 20 +++++++++----------
fs/ext4/inline.c | 4 +++-
fs/ext4/mmp.c | 1 -
fs/ext4/resize.c | 23 +++++++++++++++++++++-
fs/ext4/super.c | 2 ++
fs/ocfs2/buffer_head_io.c | 1 +
include/net/nfc/hci.h | 2 +-
kernel/trace/ring_buffer.c | 2 ++
mm/shmem.c | 2 ++
net/core/neighbour.c | 13 ++++++++-----
net/ipv4/af_inet.c | 1 +
net/ipv6/ip6_offload.c | 1 +
net/ipv6/ip6_output.c | 6 ++----
net/nfc/hci/core.c | 10 ++++++++++
sound/firewire/bebob/bebob_maudio.c | 24 +++++++++++++----------
sound/pci/emu10k1/emufx.c | 2 +-
sound/soc/codecs/cs4265.c | 4 ++--
31 files changed, 148 insertions(+), 69 deletions(-)
This is the start of the stable review cycle for the 4.9.130 release.
There are 44 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 Sat Sep 29 09:00:54 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.9.130-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.9.130-rc1
Steve Wise <swise(a)opengridcomputing.com>
iw_cxgb4: only allow 1 flush on user qps
Nadav Amit <namit(a)vmware.com>
vmw_balloon: include asm/io.h
Zachary Zhang <zhangzg(a)marvell.com>
PCI: aardvark: Size bridges before resources allocation
Roderick Colenbrander <roderick.colenbrander(a)sony.com>
HID: sony: Support DS4 dongle
Roderick Colenbrander <roderick.colenbrander(a)sony.com>
HID: sony: Update device ids
Steve Muckle <smuckle(a)google.com>
sched/fair: Fix vruntime_normalized() for remote non-migration wakeup
Eric Biggers <ebiggers(a)google.com>
ext4: show test_dummy_encryption mount option in /proc/mounts
Li Dongyang <dongyangli(a)ddn.com>
ext4: don't mark mmp buffer head dirty
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resizing for bigalloc file systems with a 1k block size
Theodore Ts'o <tytso(a)mit.edu>
ext4: fix online resize's handling of a too-small final block group
Theodore Ts'o <tytso(a)mit.edu>
ext4: recalucate superblock checksum after updating free blocks/inodes
Theodore Ts'o <tytso(a)mit.edu>
ext4: avoid divide by zero fault when deleting corrupted inline directories
Theodore Ts'o <tytso(a)mit.edu>
ext4: check to make sure the rename(2)'s destination is not freed
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
tty: vt_ioctl: fix potential Spectre v1
Boris Brezillon <boris.brezillon(a)bootlin.com>
drm/vc4: Fix the "no scaling" case on multi-planar YUV formats
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Prevent handling ACPI HPD events too early
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
Lyude Paul <lyude(a)redhat.com>
drm/nouveau/drm/nouveau: Fix bogus drm_kms_helper_poll_enable() placement
Junxiao Bi <junxiao.bi(a)oracle.com>
ocfs2: fix ocfs2 read block panic
Vincent Pelletier <plr.vincent(a)gmail.com>
scsi: target: iscsi: Use hex2bin instead of a re-implementation
Vasily Khoruzhick <vasilykh(a)arista.com>
neighbour: confirm neigh entries when ARP packet is received
Paolo Abeni <pabeni(a)redhat.com>
udp4: fix IP_CMSG_CHECKSUM for connected sockets
Colin Ian King <colin.king(a)canonical.com>
net: hp100: fix always-true check for link up state
Willy Tarreau <w(a)1wt.eu>
net/appletalk: fix minor pointer leak to userspace in SIOCFINDIPDDPRT
Eric Dumazet <edumazet(a)google.com>
ipv6: fix possible use-after-free in ip6_xmit()
Toke Høiland-Jørgensen <toke(a)toke.dk>
gso_segment: Reset skb->mac_len after modifying network header
Joel Fernandes (Google) <joel(a)joelfernandes.org>
mm: shmem.c: Correctly annotate new inodes for lockdep
Vaibhav Nagarnaik <vnagarnaik(a)google.com>
ring-buffer: Allow for rescheduling when removing pages
Mika Westerberg <mika.westerberg(a)linux.intel.com>
Revert "PCI: Add ACS quirk for Intel 300 series"
Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
xen/x86/vpmu: Zero struct pt_regs before calling into sample handling code
Juergen Gross <jgross(a)suse.com>
xen/netfront: don't bug in case of too many frags
Mario Limonciello <mario.limonciello(a)dell.com>
platform/x86: alienware-wmi: Correct a memory leak
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak of discovered stream formats at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: oxfw: fix memory leak for model-dependent data at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: fireworks: fix memory leak of response buffer at error path
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-tascam: fix memory leak of private data
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: firewire-digi00x: fix memory leak of private data
Willy Tarreau <w(a)1wt.eu>
ALSA: emu10k1: fix possible info leak to userspace on SNDRV_EMU10K1_IOCTL_INFO
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: use address returned by kmalloc() instead of kernel stack for streaming DMA mapping
Takashi Sakamoto <o-takashi(a)sakamocchi.jp>
ALSA: bebob: fix memory leak for M-Audio FW1814 and ProjectMix I/O at error path
Sébastien Szymanski <sebastien.szymanski(a)armadeus.com>
ASoC: cs4265: fix MMTLR Data switch control
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix the number of pipes
Suren Baghdasaryan <surenb(a)google.com>
NFC: Fix possible memory corruption when handling SHDLC I-Frame commands
-------------
Diffstat:
Makefile | 4 +--
arch/x86/xen/pmu.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 20 ++++++------
drivers/gpu/drm/nouveau/nouveau_display.c | 33 ++++++++++++++-----
drivers/gpu/drm/vc4/vc4_plane.c | 25 +++++++--------
drivers/hid/hid-core.c | 3 ++
drivers/hid/hid-ids.h | 2 ++
drivers/hid/hid-sony.c | 6 ++++
drivers/infiniband/hw/cxgb4/qp.c | 6 ++++
drivers/misc/vmw_balloon.c | 1 +
drivers/net/appletalk/ipddp.c | 8 +++--
drivers/net/ethernet/hp/hp100.c | 2 +-
drivers/net/xen-netfront.c | 8 ++++-
drivers/pci/host/pci-aardvark.c | 1 +
drivers/pci/quirks.c | 6 ----
drivers/platform/x86/alienware-wmi.c | 1 +
drivers/target/iscsi/iscsi_target_auth.c | 30 +++++++++---------
drivers/tty/vt/vt_ioctl.c | 4 +++
fs/ext4/dir.c | 20 ++++++------
fs/ext4/inline.c | 4 ++-
fs/ext4/mmp.c | 1 -
fs/ext4/namei.c | 6 ++++
fs/ext4/resize.c | 23 +++++++++++++-
fs/ext4/super.c | 4 +++
fs/ocfs2/buffer_head_io.c | 1 +
include/net/nfc/hci.h | 2 +-
kernel/sched/fair.c | 3 +-
kernel/trace/ring_buffer.c | 2 ++
mm/shmem.c | 2 ++
net/core/neighbour.c | 13 +++++---
net/ipv4/af_inet.c | 1 +
net/ipv4/udp.c | 49 +++++++++++++++--------------
net/ipv6/ip6_offload.c | 1 +
net/ipv6/ip6_output.c | 6 ++--
net/nfc/hci/core.c | 10 ++++++
sound/firewire/bebob/bebob.c | 2 ++
sound/firewire/bebob/bebob_maudio.c | 28 ++++++++---------
sound/firewire/digi00x/digi00x.c | 1 +
sound/firewire/fireworks/fireworks.c | 2 ++
sound/firewire/oxfw/oxfw.c | 10 ++++++
sound/firewire/tascam/tascam.c | 1 +
sound/pci/emu10k1/emufx.c | 2 +-
sound/soc/codecs/cs4265.c | 4 +--
43 files changed, 236 insertions(+), 124 deletions(-)
At least on PXA3xx platforms, enabling RDY interrupts in the NDCR register
will only cause the IRQ to latch when the RDY lanes are changing, and not
in case they are already asserted.
This means that if the controller finished the command in flight before
marvell_nfc_wait_op() is called, that function will wait for a change in
the bit that can't ever happen as it is already set.
To mitigate this race, check for the RDY bits after the IRQ was enabled,
and only sleep on the condition if the controller isn't ready yet.
This fixes a bug that was observed with a NAND chip that holds a UBIFS
parition on which file system stress tests were executed. When
marvell_nfc_wait_op() reports an error, UBI/UBIFS will eventually mount
the filesystem read-only, reporting lots of warnings along the way.
Fixes: 02f26ecf8c77 mtd: nand: add reworked Marvell NAND controller driver
Cc: stable(a)vger.kernel.org
Signed-off-by: Daniel Mack <daniel(a)zonque.org>
---
drivers/mtd/nand/raw/marvell_nand.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c
index 666f34b58dec..e96ec7b9a152 100644
--- a/drivers/mtd/nand/raw/marvell_nand.c
+++ b/drivers/mtd/nand/raw/marvell_nand.c
@@ -613,7 +613,8 @@ static int marvell_nfc_wait_cmdd(struct nand_chip *chip)
static int marvell_nfc_wait_op(struct nand_chip *chip, unsigned int timeout_ms)
{
struct marvell_nfc *nfc = to_marvell_nfc(chip->controller);
- int ret;
+ int ret = -EALREADY;
+ u32 st;
/* Timeout is expressed in ms */
if (!timeout_ms)
@@ -622,8 +623,15 @@ static int marvell_nfc_wait_op(struct nand_chip *chip, unsigned int timeout_ms)
init_completion(&nfc->complete);
marvell_nfc_enable_int(nfc, NDCR_RDYM);
- ret = wait_for_completion_timeout(&nfc->complete,
- msecs_to_jiffies(timeout_ms));
+
+ /*
+ * Check if the NDSR_RDY bits have already been set before the
+ * interrupt was enabled.
+ */
+ st = readl_relaxed(nfc->regs + NDSR);
+ if (!(st & (NDSR_RDY(0) | NDSR_RDY(1))))
+ ret = wait_for_completion_timeout(&nfc->complete,
+ msecs_to_jiffies(timeout_ms));
marvell_nfc_disable_int(nfc, NDCR_RDYM);
marvell_nfc_clear_int(nfc, NDSR_RDY(0) | NDSR_RDY(1));
if (!ret) {
--
2.17.1
Hi Greg,
On Thu, Sep 27, 2018 at 10:03 AM, Greg Kroah-Hartman
<gregkh(a)linuxfoundation.org> wrote:
> 4.14-stable review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Kirill Kapranov <kirill.kapranov(a)compulab.co.il>
>
> commit 1a4327fbf4554d5b78d75b19a13d40d6de220159 upstream.
>
> On systems where some controllers get a dynamic ID assigned and some have
> a fixed number (e.g. from ACPI tables), the current implementation might
> run into an IDR collision: in case of a fixed bus number is gotten by a
> driver (but not marked busy in IDR tree) and a driver with dynamic bus
> number gets the same ID and predictably fails.
>
> Fix this by means of checking-in fixed IDsin IDR as far as dynamic ones
> at the moment of the controller registration.
>
> Fixes: 9b61e302210e (spi: Pick spi bus number from Linux idr or spi alias)
> Signed-off-by: Kirill Kapranov <kirill.kapranov(a)compulab.co.il>
> Signed-off-by: Mark Brown <broonie(a)kernel.org>
> Cc: stable(a)vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
There is another later patch which fixes this patch.
04b2d03a7565 ("spi: Fix double IDR allocation with DT aliases") , can
you please add it to the release also..
--
Regards
Sudip
When using the legacy mmap layout, for example triggered using ulimit -s
unlimited, get_unmapped_area() fills memory from bottom to top starting
from a fairly low address near TASK_UNMAPPED_BASE.
This placement is suboptimal if the user application wishes to allocate
large amounts of heap memory using the brk syscall. With the VDSO being
located low in the user's virtual address space, the amount of space
available for access using brk is limited much more than it was prior to
the introduction of the VDSO.
For example:
# ulimit -s unlimited; cat /proc/self/maps
00400000-004ec000 r-xp 00000000 08:00 71436 /usr/bin/coreutils
004fc000-004fd000 rwxp 000ec000 08:00 71436 /usr/bin/coreutils
004fd000-0050f000 rwxp 00000000 00:00 0
00cc3000-00ce4000 rwxp 00000000 00:00 0 [heap]
2ab96000-2ab98000 r--p 00000000 00:00 0 [vvar]
2ab98000-2ab99000 r-xp 00000000 00:00 0 [vdso]
2ab99000-2ab9d000 rwxp 00000000 00:00 0
...
Resolve this by adjusting STACK_TOP to reserve space for the VDSO &
providing an address hint to get_unmapped_area() causing it to use this
space even when using the legacy mmap layout.
We reserve enough space for the VDSO, plus 1MB or 8MB for 32 bit & 64
bit systems respectively within which we randomize the VDSO base
address. Previously this randomization was taken care of by the mmap
base address randomization performed by arch_mmap_rnd(). The 1MB & 8MB
sizes are somewhat arbitrary but chosen such that we have some
randomization without taking up too much of the user's virtual address
space, which is often in short supply for 32 bit systems.
With this the VDSO is always mapped at a high address, leaving lots of
space for statically linked programs to make use of brk:
# ulimit -s unlimited; cat /proc/self/maps
00400000-004ec000 r-xp 00000000 08:00 71436 /usr/bin/coreutils
004fc000-004fd000 rwxp 000ec000 08:00 71436 /usr/bin/coreutils
004fd000-0050f000 rwxp 00000000 00:00 0
00c28000-00c49000 rwxp 00000000 00:00 0 [heap]
...
7f67c000-7f69d000 rwxp 00000000 00:00 0 [stack]
7f7fc000-7f7fd000 rwxp 00000000 00:00 0
7fcf1000-7fcf3000 r--p 00000000 00:00 0 [vvar]
7fcf3000-7fcf4000 r-xp 00000000 00:00 0 [vdso]
Signed-off-by: Paul Burton <paul.burton(a)mips.com>
Reported-by: Huacai Chen <chenhc(a)lemote.com>
Fixes: ebb5e78cc634 ("MIPS: Initial implementation of a VDSO")
Cc: Huacai Chen <chenhc(a)lemote.com>
Cc: linux-mips(a)linux-mips.org
Cc: stable(a)vger.kernel.org # v4.4+
---
Huacai, could you test if this fixes your problem?
It takes up less of the user's virtual address space (only 1MB for
MIPS32), takes none at all when randomization is disabled, and doesn't
make assumptions about the size of the VDSO.
---
arch/mips/include/asm/processor.h | 10 +++++-----
arch/mips/kernel/process.c | 25 +++++++++++++++++++++++++
arch/mips/kernel/vdso.c | 18 +++++++++++++++++-
3 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index b2fa62922d88..15917ee42f9f 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -13,6 +13,7 @@
#include <linux/atomic.h>
#include <linux/cpumask.h>
+#include <linux/sizes.h>
#include <linux/threads.h>
#include <asm/cachectl.h>
@@ -80,11 +81,10 @@ extern unsigned int vced_count, vcei_count;
#endif
-/*
- * One page above the stack is used for branch delay slot "emulation".
- * See dsemul.c for details.
- */
-#define STACK_TOP ((TASK_SIZE & PAGE_MASK) - PAGE_SIZE)
+#define VDSO_RANDOMIZE_SIZE (test_thread_flag(TIF_32BIT_ADDR) ? SZ_1M : SZ_8M)
+
+extern unsigned long mips_stack_top(void);
+#define STACK_TOP mips_stack_top()
/*
* This decides where the kernel will search for a free chunk of vm
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 8fc69891e117..1b699a367c45 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -32,6 +32,7 @@
#include <linux/nmi.h>
#include <linux/cpu.h>
+#include <asm/abi.h>
#include <asm/asm.h>
#include <asm/bootinfo.h>
#include <asm/cpu.h>
@@ -39,6 +40,7 @@
#include <asm/dsp.h>
#include <asm/fpu.h>
#include <asm/irq.h>
+#include <asm/mips-gic.h>
#include <asm/msa.h>
#include <asm/pgtable.h>
#include <asm/mipsregs.h>
@@ -645,6 +647,29 @@ unsigned long get_wchan(struct task_struct *task)
return pc;
}
+unsigned long mips_stack_top(void)
+{
+ unsigned long top = TASK_SIZE & PAGE_MASK;
+
+ /* One page for branch delay slot "emulation" */
+ top -= PAGE_SIZE;
+
+ /* Space for the VDSO, data page & GIC user page */
+ top -= PAGE_ALIGN(current->thread.abi->vdso->size);
+ top -= PAGE_SIZE;
+ top -= mips_gic_present() ? PAGE_SIZE : 0;
+
+ /* Space for cache colour alignment */
+ if (cpu_has_dc_aliases)
+ top -= shm_align_mask + 1;
+
+ /* Space to randomize the VDSO base */
+ if (current->flags & PF_RANDOMIZE)
+ top -= VDSO_RANDOMIZE_SIZE;
+
+ return top;
+}
+
/*
* Don't forget that the stack pointer must be aligned on a 8 bytes
* boundary for 32-bits ABI and 16 bytes for 64-bits ABI.
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
index 8f845f6e5f42..48a9c6b90e07 100644
--- a/arch/mips/kernel/vdso.c
+++ b/arch/mips/kernel/vdso.c
@@ -15,6 +15,7 @@
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/mm.h>
+#include <linux/random.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/timekeeper_internal.h>
@@ -97,6 +98,21 @@ void update_vsyscall_tz(void)
}
}
+static unsigned long vdso_base(void)
+{
+ unsigned long base;
+
+ /* Skip the delay slot emulation page */
+ base = STACK_TOP + PAGE_SIZE;
+
+ if (current->flags & PF_RANDOMIZE) {
+ base += get_random_int() & (VDSO_RANDOMIZE_SIZE - 1);
+ base = PAGE_ALIGN(base);
+ }
+
+ return base;
+}
+
int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
{
struct mips_vdso_image *image = current->thread.abi->vdso;
@@ -137,7 +153,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
if (cpu_has_dc_aliases)
size += shm_align_mask + 1;
- base = get_unmapped_area(NULL, 0, size, 0, 0);
+ base = get_unmapped_area(NULL, vdso_base(), size, 0, 0);
if (IS_ERR_VALUE(base)) {
ret = base;
goto out;
--
2.18.0
On a powerpc 8xx, 'btc' fails as follows:
Entering kdb (current=0x(ptrval), pid 282) due to Keyboard Entry
kdb> btc
btc: cpu status: Currently on cpu 0
Available cpus: 0
kdb_getarea: Bad address 0x0
when booting the kernel with 'debug_boot_weak_hash', it fails as well
Entering kdb (current=0xba99ad80, pid 284) due to Keyboard Entry
kdb> btc
btc: cpu status: Currently on cpu 0
Available cpus: 0
kdb_getarea: Bad address 0xba99ad80
On other platforms, Oopses have been observed too, see
https://github.com/linuxppc/linux/issues/139
This is due to btc calling 'btt' with %p pointer as an argument.
This patch replaces %p by %px to get the real pointer value as
expected by 'btt'
Fixes: ad67b74d2469 ("printk: hash addresses printed with %p")
Cc: <stable(a)vger.kernel.org>
Reviewed-by: Daniel Thompson <daniel.thompson(a)linaro.org>
Signed-off-by: Christophe Leroy <christophe.leroy(a)c-s.fr>
---
v2: Added fixes: and Daniel's reviewed-by: in commit's log. No code change.
kernel/debug/kdb/kdb_bt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/debug/kdb/kdb_bt.c b/kernel/debug/kdb/kdb_bt.c
index 6ad4a9fcbd6f..7921ae4fca8d 100644
--- a/kernel/debug/kdb/kdb_bt.c
+++ b/kernel/debug/kdb/kdb_bt.c
@@ -179,14 +179,14 @@ kdb_bt(int argc, const char **argv)
kdb_printf("no process for cpu %ld\n", cpu);
return 0;
}
- sprintf(buf, "btt 0x%p\n", KDB_TSK(cpu));
+ sprintf(buf, "btt 0x%px\n", KDB_TSK(cpu));
kdb_parse(buf);
return 0;
}
kdb_printf("btc: cpu status: ");
kdb_parse("cpu\n");
for_each_online_cpu(cpu) {
- sprintf(buf, "btt 0x%p\n", KDB_TSK(cpu));
+ sprintf(buf, "btt 0x%px\n", KDB_TSK(cpu));
kdb_parse(buf);
touch_nmi_watchdog();
}
--
2.13.3
Hi,
We would like to request inclusion of updated DualShock 4 device ids for hid-sony
in Linux 3.18. Existing devices on older kernels already support the original
DualShock 4, but not recent hardware revisions. A similar backport was submitted
for 4.4/4.9. Kernels newer than 4.12 already include these patches.
The patches were cherry-picked from upstream and modified to apply cleanly and
compile.
Thanks,
Roderick Colenbrander
Roderick Colenbrander (2):
HID: sony: Update device ids
HID: sony: Support DS4 dongle
drivers/hid/hid-core.c | 3 +++
drivers/hid/hid-ids.h | 2 ++
drivers/hid/hid-sony.c | 6 ++++++
3 files changed, 11 insertions(+)
--
2.17.1
On 9/27/18 9:57 AM, 国炬方 wrote:
> Yes, Guoju Fang. Thx. :)
OK, I made that change and committed it. Just be sure to use your full
name in the future for signoffs, etc.
--
Jens Axboe
Since 'commit 02e389e63e35 ("pinctrl: mcp23s08: fix irq setup order")' the
irq request isn't the last devm_* allocation. Without a deeper look at
the irq and testing this isn't a good solution. Since this driver relies
on the devm mechanism, requesting a interrupt should be the last thing
to avoid memory corruptions during unbinding.
'Commit 02e389e63e35 ("pinctrl: mcp23s08: fix irq setup order")' fixed the
order for the interrupt-controller use case only. The
mcp23s08_irq_setup() must be split into two to fix it for the
interrupt-controller use case and to register the irq at last. So the
irq will be freed first during unbind.
Cc: stable(a)vger.kernel.org
Cc: Dmitry Mastykin <mastichi(a)gmail.com>
Cc: Sebastian Reichel <sebastian.reichel(a)collabora.co.uk>
Fixes: 82039d244f87 ("pinctrl: mcp23s08: add pinconf support")
Fixes: 02e389e63e35 ("pinctrl: mcp23s08: fix irq setup order")
Signed-off-by: Marco Felsch <m.felsch(a)pengutronix.de>
---
drivers/pinctrl/pinctrl-mcp23s08.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
index 472746931ea8..367b648be7c7 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -636,6 +636,14 @@ static int mcp23s08_irq_setup(struct mcp23s08 *mcp)
return err;
}
+ return 0;
+}
+
+static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp)
+{
+ struct gpio_chip *chip = &mcp->chip;
+ int err;
+
err = gpiochip_irqchip_add_nested(chip,
&mcp23s08_irq_chip,
0,
@@ -908,8 +916,8 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
goto fail;
}
- if (mcp->irq && mcp->irq_controller) {
- ret = mcp23s08_irq_setup(mcp);
+ if (mcp->irq_controller) {
+ ret = mcp23s08_irqchip_setup(mcp);
if (ret)
goto fail;
}
@@ -941,6 +949,9 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
goto fail;
}
+ if (mcp->irq)
+ ret = mcp23s08_irq_setup(mcp);
+
fail:
if (ret < 0)
dev_dbg(dev, "can't setup chip %d, --> %d\n", addr, ret);
--
2.19.0
Do you have needs for your photos cutting out and retouching?
We do editing for e-commerce photos, portrait photos and wedding photos.
You may choose to send us one or tow photos, we will provide testing to
check quality.
Thanks,
Jessica
Hi,
We would like to request inclusion of updated DualShock 4 device ids for hid-sony
in Linux 4.4. Existing devices on older kernels already support the original
DualShock 4, but not recent hardware revisions. A similar backport was submitted
for 3.18/4.9. Kernels newer than 4.12 already include these patches.
The patches were cherry-picked from upstream and modified to apply cleanly and
compile.
Thanks,
Roderick Colenbrander
Roderick Colenbrander (2):
HID: sony: Update device ids
HID: sony: Support DS4 dongle
drivers/hid/hid-core.c | 3 +++
drivers/hid/hid-ids.h | 2 ++
drivers/hid/hid-sony.c | 6 ++++++
3 files changed, 11 insertions(+)
--
2.17.1
Commit 0a0e0829f990 ("nohz: Fix missing tick reprogram when interrupting an
inline softirq") got backported to stable trees and now causes the NOHZ
softirq pending warning to trigger. It's not an upstream issue as the NOHZ
update logic has been changed there.
The problem is when a softirq disabled section gets interrupted and on
return from interrupt the tick/nohz state is evaluated, which then can
observe pending soft interrupts. These soft interrupts are legitimately
pending because they cannot be processed as long as soft interrupts are
disabled and the interrupted code will correctly process them when soft
interrupts are reenabled.
Add a check for softirqs disabled to the pending check to prevent the
warning.
Reported-by: Grygorii Strashko <grygorii.strashko(a)ti.com>
Reported-by: John Crispin <john(a)phrozen.org>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Grygorii Strashko <grygorii.strashko(a)ti.com>
Tested-by: John Crispin <john(a)phrozen.org>
Cc: Frederic Weisbecker <frederic(a)kernel.org>
Cc: Ingo Molnar <mingo(a)kernel.org>
Cc: Anna-Maria Gleixner <anna-maria(a)linutronix.de>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: stable(a)vger.kernel.org
---
kernel/time/tick-sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -888,7 +888,7 @@ static bool can_stop_idle_tick(int cpu,
if (unlikely(local_softirq_pending() && cpu_online(cpu))) {
static int ratelimit;
- if (ratelimit < 10 &&
+ if (ratelimit < 10 && !in_softirq() &&
(local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) {
pr_warn("NOHZ: local_softirq_pending %02x\n",
(unsigned int) local_softirq_pending());
When the deadline scheduler is used with a zoned block device, writes
to a zone will be dispatched one at a time. This causes the warning
message:
deadline: forced dispatching is broken (nr_sorted=X), please report this
to be displayed when switching to another elevator with the legacy I/O
path while write requests to a zone are being retained in the scheduler
queue.
Prevent this message from being displayed when executing
elv_drain_elevator() for a zoned block device. __blk_drain_queue() will
loop until all writes are dispatched and completed, resulting in the
desired elevator queue drain without extensive modifications to the
deadline code itself to handle forced-dispatch calls.
Signed-off-by: Damien Le Moal <damien.lemoal(a)wdc.com>
Fixes: 8dc8146f9c92 ("deadline-iosched: Introduce zone locking support")
Cc: stable(a)vger.kernel.org
---
Changes from v2:
* Move zoned block device test before 'printed' increment as suggested by Bart
* Added "Fixes" tag and cc stable
Changes from v1:
* Fixed typo in commit message
block/elevator.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/elevator.c b/block/elevator.c
index 6a06b5d040e5..fae58b2f906f 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -609,7 +609,7 @@ void elv_drain_elevator(struct request_queue *q)
while (e->type->ops.sq.elevator_dispatch_fn(q, 1))
;
- if (q->nr_sorted && printed++ < 10) {
+ if (q->nr_sorted && !blk_queue_is_zoned(q) && printed++ < 10 ) {
printk(KERN_ERR "%s: forced dispatching is broken "
"(nr_sorted=%u), please report this\n",
q->elevator->type->elevator_name, q->nr_sorted);
--
2.17.1
Hi,
We would like to request inclusion of 2 patches adding new DualShock 4
device ids to hid-sony. Existing devices on older kernels already
support the original DualShock 4, but not recent new revisions. We would
like to get these patches included into linux-stable 3.18, 4.4 and 4.9.
Kernels newer than 4.12 already include these patches.
HID: sony: Support DS4 dongle
commit de66a1a04c25f2560a8dca7a95e2a150b0d5e17e upstream
HID: sony: Update device ids
commit cf1015d65d7c8a5504a4c03afb60fb86bff0f032 upstream
Thanks,
Roderick Colenbrander
Signed-off-by: Roderick Colenbrander <roderick.colenbrander(a)sony.com>
From: Halil Pasic <pasic(a)linux.ibm.com>
While ccw_io_helper() seems like intended to be exclusive in a sense that
it is supposed to facilitate I/O for at most one thread at any given
time, there is actually nothing ensuring that threads won't pile up at
vcdev->wait_q. If they do, all threads get woken up and see the status
that belongs to some other request than their own. This can lead to bugs.
For an example see:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1788432
This race normally does not cause any problems. The operations provided
by struct virtio_config_ops are usually invoked in a well defined
sequence, normally don't fail, and are normally used quite infrequent
too.
Yet, if some of the these operations are directly triggered via sysfs
attributes, like in the case described by the referenced bug, userspace
is given an opportunity to force races by increasing the frequency of the
given operations.
Let us fix the problem by ensuring, that for each device, we finish
processing the previous request before starting with a new one.
Signed-off-by: Halil Pasic <pasic(a)linux.ibm.com>
Reported-by: Colin Ian King <colin.king(a)canonical.com>
Cc: stable(a)vger.kernel.org
Message-Id: <20180925121309.58524-3-pasic(a)linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck(a)redhat.com>
---
drivers/s390/virtio/virtio_ccw.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c
index a5e8530a3391..b67dc4974f23 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -56,6 +56,7 @@ struct virtio_ccw_device {
unsigned int revision; /* Transport revision */
wait_queue_head_t wait_q;
spinlock_t lock;
+ struct mutex io_lock; /* Serializes I/O requests */
struct list_head virtqueues;
unsigned long indicators;
unsigned long indicators2;
@@ -296,6 +297,7 @@ static int ccw_io_helper(struct virtio_ccw_device *vcdev,
unsigned long flags;
int flag = intparm & VIRTIO_CCW_INTPARM_MASK;
+ mutex_lock(&vcdev->io_lock);
do {
spin_lock_irqsave(get_ccwdev_lock(vcdev->cdev), flags);
ret = ccw_device_start(vcdev->cdev, ccw, intparm, 0, 0);
@@ -308,7 +310,9 @@ static int ccw_io_helper(struct virtio_ccw_device *vcdev,
cpu_relax();
} while (ret == -EBUSY);
wait_event(vcdev->wait_q, doing_io(vcdev, flag) == 0);
- return ret ? ret : vcdev->err;
+ ret = ret ? ret : vcdev->err;
+ mutex_unlock(&vcdev->io_lock);
+ return ret;
}
static void virtio_ccw_drop_indicator(struct virtio_ccw_device *vcdev,
@@ -1253,6 +1257,7 @@ static int virtio_ccw_online(struct ccw_device *cdev)
init_waitqueue_head(&vcdev->wait_q);
INIT_LIST_HEAD(&vcdev->virtqueues);
spin_lock_init(&vcdev->lock);
+ mutex_init(&vcdev->io_lock);
spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
dev_set_drvdata(&cdev->dev, vcdev);
--
2.14.4
If driver/HW doesn't support vblank functionality (for example
UDL driver, ARCPGU driver, ...) we always have vblank->time == 0.
In result we always provide zero timestamp for
DRM_EVENT_FLIP_COMPLETE. This breaks userspace apps (for example
weston) which relies on timestamp value.
Setup time to provide valid timestamp for DRM_EVENT_FLIP_COMPLETE
event.
Cc: stable(a)vger.kernel.org
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev(a)synopsys.com>
---
drivers/gpu/drm/drm_vblank.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 28cdcf76b6f9..0d19aca48782 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -911,6 +911,15 @@ void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
if (dev->num_crtcs > 0) {
seq = drm_vblank_count_and_time(dev, pipe, &now);
+
+ /*
+ * If driver/HW doesn't support vblank functionality we
+ * always have vblank->time == 0. Setup time to provide valid
+ * timestamp for DRM_EVENT_FLIP_COMPLETE event.
+ */
+ if (!now && e->event.base.type == DRM_EVENT_FLIP_COMPLETE)
+ now = ktime_get();
+
} else {
seq = 0;
--
2.14.4
OMAPFB_MEMORY_READ ioctl reads pixels from the LCD's memory and copies
them to a userspace buffer. The code has two issues:
- The user provided width and height could be large enough to overflow
the calculations
- The copy_to_user() can copy uninitialized memory to the userspace,
which might contain sensitive kernel information.
Fix these by limiting the width & height parameters, and only copying
the amount of data that we actually received from the LCD.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen(a)ti.com>
Reported-by: Jann Horn <jannh(a)google.com>
Cc: stable(a)vger.kernel.org
Cc: security(a)kernel.org
Cc: Will Deacon <will.deacon(a)arm.com>
Cc: Jann Horn <jannh(a)google.com>
Cc: Tony Lindgren <tony(a)atomide.com>
---
drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
index ef69273074ba..a3edb20ea4c3 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
@@ -496,6 +496,9 @@ static int omapfb_memory_read(struct fb_info *fbi,
if (!access_ok(VERIFY_WRITE, mr->buffer, mr->buffer_size))
return -EFAULT;
+ if (mr->w > 4096 || mr->h > 4096)
+ return -EINVAL;
+
if (mr->w * mr->h * 3 > mr->buffer_size)
return -EINVAL;
@@ -509,7 +512,7 @@ static int omapfb_memory_read(struct fb_info *fbi,
mr->x, mr->y, mr->w, mr->h);
if (r > 0) {
- if (copy_to_user(mr->buffer, buf, mr->buffer_size))
+ if (copy_to_user(mr->buffer, buf, r))
r = -EFAULT;
}
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki