Update to 4.3-rc2
Drop a load of patches that went upstream. Drop aic94xx patch which was obsoleted by a different fix upstream. Refresh remaining patches.
This commit is contained in:
parent
d55c08c867
commit
5cdb1bae58
|
@ -1,3 +1,9 @@
|
|||
linux (4.3~rc2-1~exp1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream release candidate
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 26 Sep 2015 16:41:55 +0100
|
||||
|
||||
linux (4.2.1-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Sun, 08 Jun 2014 23:37:44 +0100
|
||||
Subject: [SCSI] aic94xx: Remove broken fallback for missing 'Ctrl-A' user settings
|
||||
Forwarded: http://mid.gmane.org/1402267064.23860.42.camel@deadeye.wl.decadent.org.uk
|
||||
|
||||
asd_process_ctrl_a_user() attempts to find user settings in flash, and
|
||||
if they are missing it prepares a substitute structure containing
|
||||
default values for PHY settings. But having done so, it will still
|
||||
try to read user settings - from some random address in flash, as the
|
||||
local variable 'offs' has not been initialised.
|
||||
|
||||
Since asd_common_setup() already sets default PHY settings, there
|
||||
seems to be no need to repeat them here, and we can just return 0.
|
||||
|
||||
Compile-tested only.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
drivers/scsi/aic94xx/aic94xx_sds.c | 18 ++----------------
|
||||
1 file changed, 2 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c b/drivers/scsi/aic94xx/aic94xx_sds.c
|
||||
index edb43fd..f5d51d2 100644
|
||||
--- a/drivers/scsi/aic94xx/aic94xx_sds.c
|
||||
+++ b/drivers/scsi/aic94xx/aic94xx_sds.c
|
||||
@@ -981,29 +981,15 @@ static int asd_process_ctrla_phy_settings(struct asd_ha_struct *asd_ha,
|
||||
static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha,
|
||||
struct asd_flash_dir *flash_dir)
|
||||
{
|
||||
- int err, i;
|
||||
+ int err;
|
||||
u32 offs, size;
|
||||
struct asd_ll_el *el;
|
||||
struct asd_ctrla_phy_settings *ps;
|
||||
- struct asd_ctrla_phy_settings dflt_ps;
|
||||
|
||||
err = asd_find_flash_de(flash_dir, FLASH_DE_CTRL_A_USER, &offs, &size);
|
||||
if (err) {
|
||||
ASD_DPRINTK("couldn't find CTRL-A user settings section\n");
|
||||
- ASD_DPRINTK("Creating default CTRL-A user settings section\n");
|
||||
-
|
||||
- dflt_ps.id0 = 'h';
|
||||
- dflt_ps.num_phys = 8;
|
||||
- for (i =0; i < ASD_MAX_PHYS; i++) {
|
||||
- memcpy(dflt_ps.phy_ent[i].sas_addr,
|
||||
- asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE);
|
||||
- dflt_ps.phy_ent[i].sas_link_rates = 0x98;
|
||||
- dflt_ps.phy_ent[i].flags = 0x0;
|
||||
- dflt_ps.phy_ent[i].sata_link_rates = 0x0;
|
||||
- }
|
||||
-
|
||||
- size = sizeof(struct asd_ctrla_phy_settings);
|
||||
- ps = &dflt_ps;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
if (size == 0)
|
|
@ -1,58 +0,0 @@
|
|||
From: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Date: Sat, 15 Aug 2015 13:36:12 -0500
|
||||
Subject: dcache: Handle escaped paths in prepend_path
|
||||
Origin: https://git.kernel.org/linus/cde93be45a8a90d8c264c776fab63487b5038a65
|
||||
|
||||
A rename can result in a dentry that by walking up d_parent
|
||||
will never reach it's mnt_root. For lack of a better term
|
||||
I call this an escaped path.
|
||||
|
||||
prepend_path is called by four different functions __d_path,
|
||||
d_absolute_path, d_path, and getcwd.
|
||||
|
||||
__d_path only wants to see paths are connected to the root it passes
|
||||
in. So __d_path needs prepend_path to return an error.
|
||||
|
||||
d_absolute_path similarly wants to see paths that are connected to
|
||||
some root. Escaped paths are not connected to any mnt_root so
|
||||
d_absolute_path needs prepend_path to return an error greater
|
||||
than 1. So escaped paths will be treated like paths on lazily
|
||||
unmounted mounts.
|
||||
|
||||
getcwd needs to prepend "(unreachable)" so getcwd also needs
|
||||
prepend_path to return an error.
|
||||
|
||||
d_path is the interesting hold out. d_path just wants to print
|
||||
something, and does not care about the weird cases. Which raises
|
||||
the question what should be printed?
|
||||
|
||||
Given that <escaped_path>/<anything> should result in -ENOENT I
|
||||
believe it is desirable for escaped paths to be printed as empty
|
||||
paths. As there are not really any meaninful path components when
|
||||
considered from the perspective of a mount tree.
|
||||
|
||||
So tweak prepend_path to return an empty path with an new error
|
||||
code of 3 when it encounters an escaped path.
|
||||
|
||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
---
|
||||
fs/dcache.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -2927,6 +2927,13 @@ restart:
|
||||
|
||||
if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
|
||||
struct mount *parent = ACCESS_ONCE(mnt->mnt_parent);
|
||||
+ /* Escaped? */
|
||||
+ if (dentry != vfsmnt->mnt_root) {
|
||||
+ bptr = *buffer;
|
||||
+ blen = *buflen;
|
||||
+ error = 3;
|
||||
+ break;
|
||||
+ }
|
||||
/* Global root? */
|
||||
if (mnt != parent) {
|
||||
dentry = ACCESS_ONCE(mnt->mnt_mountpoint);
|
|
@ -1,65 +0,0 @@
|
|||
From: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Date: Sat, 15 Aug 2015 13:36:41 -0500
|
||||
Subject: dcache: Reduce the scope of i_lock in d_splice_alias
|
||||
Origin: https://git.kernel.org/linus/a03e283bf5c3d4851b4998122196ce9f849e6dfb
|
||||
|
||||
i_lock is only needed until __d_find_any_alias calls dget on the alias
|
||||
dentry. After that the reference to new ensures that dentry_kill and
|
||||
d_delete will not remove the inode from the dentry, and remove the
|
||||
dentry from the inode->d_entry list.
|
||||
|
||||
The inode i_lock came to be held over the the __d_move calls in
|
||||
d_splice_alias through a series of introduction of locks with
|
||||
increasing smaller scope. First it was the dcache_lock, then
|
||||
it was the dcache_inode_lock, and finally inode->i_lock.
|
||||
|
||||
Furthermore inode->i_lock is not held over any other calls
|
||||
to d_move or __d_move so it can not provide any meaningful
|
||||
rename protection.
|
||||
|
||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
---
|
||||
fs/dcache.c | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -2719,7 +2719,7 @@ struct dentry *d_ancestor(struct dentry
|
||||
* This helper attempts to cope with remotely renamed directories
|
||||
*
|
||||
* It assumes that the caller is already holding
|
||||
- * dentry->d_parent->d_inode->i_mutex, inode->i_lock and rename_lock
|
||||
+ * dentry->d_parent->d_inode->i_mutex, and rename_lock
|
||||
*
|
||||
* Note: If ever the locking in lock_rename() changes, then please
|
||||
* remember to update this too...
|
||||
@@ -2745,7 +2745,6 @@ out_unalias:
|
||||
__d_move(alias, dentry, false);
|
||||
ret = 0;
|
||||
out_err:
|
||||
- spin_unlock(&inode->i_lock);
|
||||
if (m2)
|
||||
mutex_unlock(m2);
|
||||
if (m1)
|
||||
@@ -2791,10 +2790,11 @@ struct dentry *d_splice_alias(struct ino
|
||||
if (S_ISDIR(inode->i_mode)) {
|
||||
struct dentry *new = __d_find_any_alias(inode);
|
||||
if (unlikely(new)) {
|
||||
+ /* The reference to new ensures it remains an alias */
|
||||
+ spin_unlock(&inode->i_lock);
|
||||
write_seqlock(&rename_lock);
|
||||
if (unlikely(d_ancestor(new, dentry))) {
|
||||
write_sequnlock(&rename_lock);
|
||||
- spin_unlock(&inode->i_lock);
|
||||
dput(new);
|
||||
new = ERR_PTR(-ELOOP);
|
||||
pr_warn_ratelimited(
|
||||
@@ -2813,7 +2813,6 @@ struct dentry *d_splice_alias(struct ino
|
||||
} else {
|
||||
__d_move(new, dentry, false);
|
||||
write_sequnlock(&rename_lock);
|
||||
- spin_unlock(&inode->i_lock);
|
||||
security_d_instantiate(new, inode);
|
||||
}
|
||||
iput(inode);
|
|
@ -1,31 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 8 Jul 2015 20:06:44 +0100
|
||||
Subject: DocBook: Don't store mtime (or name) in compressed man pages
|
||||
Bug-Debian: https://bugs.debian.org/769844
|
||||
Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31872
|
||||
|
||||
The mtime on a man page is the build time. As gzip stores the mtime
|
||||
and original name in the compressed file by default, this makes
|
||||
compressed man pages unreproducible. Neither of these are important
|
||||
metadata in this case, so turn this off.
|
||||
|
||||
Reported-by: Jérémy Bobbio <lunar@debian.org>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
|
||||
---
|
||||
Documentation/DocBook/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
|
||||
index b6a6a2e..11a4145 100644
|
||||
--- a/Documentation/DocBook/Makefile
|
||||
+++ b/Documentation/DocBook/Makefile
|
||||
@@ -56,7 +56,7 @@ htmldocs: $(HTML)
|
||||
|
||||
MAN := $(patsubst %.xml, %.9, $(BOOKS))
|
||||
mandocs: $(MAN)
|
||||
- find $(obj)/man -name '*.9' | xargs gzip -f
|
||||
+ find $(obj)/man -name '*.9' | xargs gzip -nf
|
||||
|
||||
installmandocs: mandocs
|
||||
mkdir -p /usr/local/man/man9/
|
|
@ -1,50 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Thu, 6 Aug 2015 22:18:32 +0100
|
||||
Subject: DocBook: Fix non-determinstic installation of duplicate man pages
|
||||
Bug-Debian: https://bugs.debian.org/769844
|
||||
Forwarded: http://thread.gmane.org/gmane.linux.kernel/1997951/focus=32450
|
||||
|
||||
Some kernel-doc sections are included in multiple DocBook files. This
|
||||
means the mandocs target will generate the same manual page multiple
|
||||
times with different metadata (author name/address and manual title,
|
||||
taken from the including DocBook file). If it's invoked in a parallel
|
||||
build, the output is non-determinstic.
|
||||
|
||||
Build the manual pages in a separate subdirectory per DocBook file,
|
||||
then sort and de-duplicate when installing them (which is serialised).
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
Documentation/DocBook/Makefile | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
|
||||
index 11a4145..198e9b5 100644
|
||||
--- a/Documentation/DocBook/Makefile
|
||||
+++ b/Documentation/DocBook/Makefile
|
||||
@@ -60,7 +60,9 @@ mandocs: $(MAN)
|
||||
|
||||
installmandocs: mandocs
|
||||
mkdir -p /usr/local/man/man9/
|
||||
- install $(obj)/man/*.9.gz /usr/local/man/man9/
|
||||
+ find $(obj)/man -name '*.9.gz' -printf '%h %f\n' | \
|
||||
+ sort -k 2 -k 1 | uniq -f 1 | sed -e 's: :/:' | \
|
||||
+ xargs install -t /usr/local/man/man9/
|
||||
|
||||
###
|
||||
#External programs used
|
||||
@@ -150,12 +152,12 @@ quiet_cmd_db2html = HTML $@
|
||||
cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
|
||||
|
||||
quiet_cmd_db2man = MAN $@
|
||||
- cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi
|
||||
+ cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man/$(*F) $< ; fi
|
||||
%.9 : %.xml
|
||||
@(which xmlto > /dev/null 2>&1) || \
|
||||
(echo "*** You need to install xmlto ***"; \
|
||||
exit 1)
|
||||
- $(Q)mkdir -p $(obj)/man
|
||||
+ $(Q)mkdir -p $(obj)/man/$(*F)
|
||||
$(call cmd,db2man)
|
||||
@touch $@
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 8 Jul 2015 20:06:51 +0100
|
||||
Subject: DocBook: Generate consistent IDs
|
||||
Bug-Debian: https://bugs.debian.org/769844
|
||||
Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31873
|
||||
|
||||
By default, DocBook XSL uses a non-deterministic function to generate
|
||||
IDs for HTML elements where it can't take a name from the input
|
||||
document. However, it has the option to generate 'consistent'
|
||||
(deterministic) IDs instead. Enable this to make the HTML pages
|
||||
reproducible.
|
||||
|
||||
Reported-by: Jérémy Bobbio <lunar@debian.org>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
|
||||
---
|
||||
Documentation/DocBook/stylesheet.xsl | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/DocBook/stylesheet.xsl b/Documentation/DocBook/stylesheet.xsl
|
||||
index 85b2527..3bf4ecf 100644
|
||||
--- a/Documentation/DocBook/stylesheet.xsl
|
||||
+++ b/Documentation/DocBook/stylesheet.xsl
|
||||
@@ -5,6 +5,7 @@
|
||||
<param name="funcsynopsis.tabular.threshold">80</param>
|
||||
<param name="callout.graphics">0</param>
|
||||
<!-- <param name="paper.type">A4</param> -->
|
||||
+<param name="generate.consistent.ids">1</param>
|
||||
<param name="generate.section.toc.level">2</param>
|
||||
<param name="use.id.as.filename">1</param>
|
||||
</stylesheet>
|
|
@ -14,10 +14,10 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
---
|
||||
--- a/Documentation/DocBook/Makefile
|
||||
+++ b/Documentation/DocBook/Makefile
|
||||
@@ -68,6 +68,12 @@ installmandocs: mandocs
|
||||
#External programs used
|
||||
KERNELDOC = $(srctree)/scripts/kernel-doc
|
||||
DOCPROC = $(objtree)/scripts/docproc
|
||||
@@ -69,6 +69,12 @@ installmandocs: mandocs
|
||||
KERNELDOCXMLREF = $(srctree)/scripts/kernel-doc-xml-ref
|
||||
KERNELDOC = $(srctree)/scripts/kernel-doc
|
||||
DOCPROC = $(objtree)/scripts/docproc
|
||||
+CHECK_LC_CTYPE = $(objtree)/scripts/check-lc_ctype
|
||||
+
|
||||
+# Use a fixed encoding - UTF-8 if the C library has support built-in
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
XMLTOFLAGS += --skip-validation
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1361,7 +1361,7 @@ $(help-board-dirs): help-%:
|
||||
@@ -1353,7 +1353,7 @@ $(help-board-dirs): help-%:
|
||||
# Documentation targets
|
||||
# ---------------------------------------------------------------------------
|
||||
%docs: scripts_basic FORCE
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
|
||||
HOST_EXTRACFLAGS += -I$(srctree)/tools/include
|
||||
|
||||
@@ -23,14 +24,16 @@ HOSTCFLAGS_asn1_compiler.o = -I$(srctree
|
||||
@@ -27,14 +28,16 @@ HOSTLOADLIBES_extract-cert = -lcrypto
|
||||
always := $(hostprogs-y) $(hostprogs-m)
|
||||
|
||||
# The following hostprogs-y programs are only build on demand
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
From: Raanan Avargil <raanan.avargil@intel.com>
|
||||
Date: Sun, 19 Jul 2015 16:33:20 +0300
|
||||
Subject: e1000e: Fix tight loop implementation of systime read algorithm
|
||||
Origin: https://git.kernel.org/linus/37b12910dd11d9ab969f2c310dc9160b7f3e3405
|
||||
|
||||
Change the algorithm. Read systimel twice and check for overflow.
|
||||
If there was no overflow, use the first value.
|
||||
If there was an overflow, read systimeh again and use the second
|
||||
systimel value.
|
||||
|
||||
Signed-off-by: Raanan Avargil <raanan.avargil@intel.com>
|
||||
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
|
||||
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
|
||||
---
|
||||
drivers/net/ethernet/intel/e1000e/netdev.c | 31 ++++++++++++++++++++----------
|
||||
1 file changed, 21 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
index 24b7269..96a8166 100644
|
||||
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||
@@ -4280,18 +4280,29 @@ static cycle_t e1000e_cyclecounter_read(const struct cyclecounter *cc)
|
||||
struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter,
|
||||
cc);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
+ u32 systimel_1, systimel_2, systimeh;
|
||||
cycle_t systim, systim_next;
|
||||
- /* SYSTIMH latching upon SYSTIML read does not work well. To fix that
|
||||
- * we don't want to allow overflow of SYSTIML and a change to SYSTIMH
|
||||
- * to occur between reads, so if we read a vale close to overflow, we
|
||||
- * wait for overflow to occur and read both registers when its safe.
|
||||
+ /* SYSTIMH latching upon SYSTIML read does not work well.
|
||||
+ * This means that if SYSTIML overflows after we read it but before
|
||||
+ * we read SYSTIMH, the value of SYSTIMH has been incremented and we
|
||||
+ * will experience a huge non linear increment in the systime value
|
||||
+ * to fix that we test for overflow and if true, we re-read systime.
|
||||
*/
|
||||
- u32 systim_overflow_latch_fix = 0x3FFFFFFF;
|
||||
-
|
||||
- do {
|
||||
- systim = (cycle_t)er32(SYSTIML);
|
||||
- } while (systim > systim_overflow_latch_fix);
|
||||
- systim |= (cycle_t)er32(SYSTIMH) << 32;
|
||||
+ systimel_1 = er32(SYSTIML);
|
||||
+ systimeh = er32(SYSTIMH);
|
||||
+ systimel_2 = er32(SYSTIML);
|
||||
+ /* Check for overflow. If there was no overflow, use the values */
|
||||
+ if (systimel_1 < systimel_2) {
|
||||
+ systim = (cycle_t)systimel_1;
|
||||
+ systim |= (cycle_t)systimeh << 32;
|
||||
+ } else {
|
||||
+ /* There was an overflow, read again SYSTIMH, and use
|
||||
+ * systimel_2
|
||||
+ */
|
||||
+ systimeh = er32(SYSTIMH);
|
||||
+ systim = (cycle_t)systimel_2;
|
||||
+ systim |= (cycle_t)systimeh << 32;
|
||||
+ }
|
||||
|
||||
if ((hw->mac.type == e1000_82574) || (hw->mac.type == e1000_82583)) {
|
||||
u64 incvalue, time_delta, rem, temp;
|
|
@ -203,7 +203,7 @@ upstream submission.
|
|||
fw->size, fw_name);
|
||||
--- a/drivers/dma/imx-sdma.c
|
||||
+++ b/drivers/dma/imx-sdma.c
|
||||
@@ -1285,11 +1285,8 @@ static void sdma_load_firmware(const str
|
||||
@@ -1408,11 +1408,8 @@ static void sdma_load_firmware(const str
|
||||
const struct sdma_script_start_addrs *addr;
|
||||
unsigned short *ram_code;
|
||||
|
||||
|
@ -233,18 +233,18 @@ upstream submission.
|
|||
where = 0;
|
||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
||||
@@ -1558,10 +1558,8 @@ gf100_gr_ctor_fw(struct gf100_gr_priv *p
|
||||
if (ret) {
|
||||
snprintf(f, sizeof(f), "nouveau/%s", fwname);
|
||||
ret = request_firmware(&fw, f, nv_device_base(device));
|
||||
- if (ret) {
|
||||
- nv_error(priv, "failed to load %s\n", fwname);
|
||||
+ if (ret)
|
||||
return ret;
|
||||
- }
|
||||
}
|
||||
@@ -1643,10 +1643,8 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, co
|
||||
|
||||
snprintf(f, sizeof(f), "nvidia/%s/%s.bin", cname, fwname);
|
||||
ret = request_firmware(&fw, f, device->dev);
|
||||
- if (ret) {
|
||||
- nvkm_error(subdev, "failed to load %s\n", fwname);
|
||||
+ if (ret)
|
||||
return ret;
|
||||
- }
|
||||
|
||||
fuc->size = fw->size;
|
||||
fuc->data = kmemdup(fw->data, fuc->size, GFP_KERNEL);
|
||||
--- a/drivers/gpu/drm/r128/r128_cce.c
|
||||
+++ b/drivers/gpu/drm/r128/r128_cce.c
|
||||
@@ -154,11 +154,8 @@ static int r128_cce_load_microcode(drm_r
|
||||
|
@ -343,7 +343,7 @@ upstream submission.
|
|||
ret = qib_ibsd_ucode_loaded(dd->pport, fw);
|
||||
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||
@@ -2195,10 +2195,8 @@ static int mxt_load_fw(struct device *de
|
||||
@@ -2209,10 +2209,8 @@ static int mxt_load_fw(struct device *de
|
||||
int ret;
|
||||
|
||||
ret = request_firmware(&fw, fn, dev);
|
||||
|
@ -686,14 +686,14 @@ upstream submission.
|
|||
printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
|
||||
--- a/drivers/media/dvb-frontends/tda10071.c
|
||||
+++ b/drivers/media/dvb-frontends/tda10071.c
|
||||
@@ -956,12 +956,8 @@ static int tda10071_init(struct dvb_fron
|
||||
@@ -850,12 +850,8 @@ static int tda10071_init(struct dvb_fron
|
||||
|
||||
/* request the firmware, this will block and timeout */
|
||||
ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent);
|
||||
ret = request_firmware(&fw, fw_file, &client->dev);
|
||||
- if (ret) {
|
||||
- dev_err(&priv->i2c->dev,
|
||||
- "%s: did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)\n",
|
||||
- KBUILD_MODNAME, fw_file, ret);
|
||||
- dev_err(&client->dev,
|
||||
- "did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)\n",
|
||||
- fw_file, ret);
|
||||
+ if (ret)
|
||||
goto error;
|
||||
- }
|
||||
|
@ -792,7 +792,7 @@ upstream submission.
|
|||
b[0] = 0xaa;
|
||||
--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
||||
+++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
||||
@@ -1297,11 +1297,8 @@ static int ttusb_dec_boot_dsp(struct ttu
|
||||
@@ -1292,11 +1292,8 @@ static int ttusb_dec_boot_dsp(struct ttu
|
||||
dprintk("%s\n", __func__);
|
||||
|
||||
result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev);
|
||||
|
@ -822,7 +822,7 @@ upstream submission.
|
|||
packet_num = ptr[0];
|
||||
--- a/drivers/media/radio/wl128x/fmdrv_common.c
|
||||
+++ b/drivers/media/radio/wl128x/fmdrv_common.c
|
||||
@@ -1252,10 +1252,8 @@ static int fm_download_firmware(struct f
|
||||
@@ -1249,10 +1249,8 @@ static int fm_download_firmware(struct f
|
||||
|
||||
ret = request_firmware(&fw_entry, fw_name,
|
||||
&fmdev->radio_dev->dev);
|
||||
|
@ -1106,7 +1106,7 @@ upstream submission.
|
|||
__func__, fw->size);
|
||||
--- a/drivers/misc/ti-st/st_kim.c
|
||||
+++ b/drivers/misc/ti-st/st_kim.c
|
||||
@@ -308,11 +308,8 @@ static long download_firmware(struct kim
|
||||
@@ -303,11 +303,8 @@ static long download_firmware(struct kim
|
||||
request_firmware(&kim_gdata->fw_entry, bts_scr_name,
|
||||
&kim_gdata->kim_pdev->dev);
|
||||
if (unlikely((err != 0) || (kim_gdata->fw_entry->data == NULL) ||
|
||||
|
@ -1216,7 +1216,7 @@ upstream submission.
|
|||
if (bp->mips_firmware->size < sizeof(*mips_fw) ||
|
||||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||
@@ -13003,11 +13003,8 @@ static int bnx2x_init_firmware(struct bn
|
||||
@@ -13393,11 +13393,8 @@ static int bnx2x_init_firmware(struct bn
|
||||
BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
||||
|
||||
rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
|
||||
|
@ -1568,7 +1568,7 @@ upstream submission.
|
|||
else
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||
@@ -1131,13 +1131,8 @@ static void iwl_req_fw_callback(const st
|
||||
@@ -1201,13 +1201,8 @@ static void iwl_req_fw_callback(const st
|
||||
if (!pieces)
|
||||
return;
|
||||
|
||||
|
@ -1596,7 +1596,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/net/wireless/mwifiex/main.c
|
||||
+++ b/drivers/net/wireless/mwifiex/main.c
|
||||
@@ -459,11 +459,8 @@ static void mwifiex_fw_dpc(const struct
|
||||
@@ -488,11 +488,8 @@ static void mwifiex_fw_dpc(const struct
|
||||
bool init_failed = false;
|
||||
struct wireless_dev *wdev;
|
||||
|
||||
|
@ -1611,7 +1611,7 @@ upstream submission.
|
|||
adapter->firmware = firmware;
|
||||
--- a/drivers/net/wireless/mwl8k.c
|
||||
+++ b/drivers/net/wireless/mwl8k.c
|
||||
@@ -5711,16 +5711,12 @@ static int mwl8k_firmware_load_success(s
|
||||
@@ -5712,16 +5712,12 @@ static int mwl8k_firmware_load_success(s
|
||||
static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
|
||||
{
|
||||
struct mwl8k_priv *priv = context;
|
||||
|
@ -1629,7 +1629,7 @@ upstream submission.
|
|||
priv->fw_helper = fw;
|
||||
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
|
||||
true);
|
||||
@@ -5755,11 +5751,8 @@ static void mwl8k_fw_state_machine(const
|
||||
@@ -5756,11 +5752,8 @@ static void mwl8k_fw_state_machine(const
|
||||
break;
|
||||
|
||||
case FW_STATE_LOADING_ALT:
|
||||
|
@ -1642,7 +1642,7 @@ upstream submission.
|
|||
priv->fw_ucode = fw;
|
||||
rc = mwl8k_firmware_load_success(priv);
|
||||
if (rc)
|
||||
@@ -5797,10 +5790,8 @@ retry:
|
||||
@@ -5798,10 +5791,8 @@ retry:
|
||||
|
||||
/* Ask userland hotplug daemon for the device firmware */
|
||||
rc = mwl8k_request_firmware(priv, fw_image, nowait);
|
||||
|
@ -1690,7 +1690,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/net/wireless/orinoco/orinoco_usb.c
|
||||
+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
|
||||
@@ -1667,7 +1667,6 @@ static int ezusb_probe(struct usb_interf
|
||||
@@ -1668,7 +1668,6 @@ static int ezusb_probe(struct usb_interf
|
||||
if (ezusb_firmware_download(upriv, &firmware) < 0)
|
||||
goto error;
|
||||
} else {
|
||||
|
@ -1894,7 +1894,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/scsi/aic94xx/aic94xx_init.c
|
||||
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
|
||||
@@ -389,8 +389,6 @@ static ssize_t asd_store_update_bios(str
|
||||
@@ -385,8 +385,6 @@ static ssize_t asd_store_update_bios(str
|
||||
filename_ptr,
|
||||
&asd_ha->pcidev->dev);
|
||||
if (err) {
|
||||
|
@ -1930,7 +1930,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/scsi/ipr.c
|
||||
+++ b/drivers/scsi/ipr.c
|
||||
@@ -4010,10 +4010,8 @@ static ssize_t ipr_store_update_fw(struc
|
||||
@@ -4011,10 +4011,8 @@ static ssize_t ipr_store_update_fw(struc
|
||||
len = snprintf(fname, 99, "%s", buf);
|
||||
fname[len-1] = '\0';
|
||||
|
||||
|
@ -1968,7 +1968,7 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/scsi/qla2xxx/qla_init.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
||||
@@ -5524,8 +5524,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
||||
@@ -5520,8 +5520,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
||||
/* Load firmware blob. */
|
||||
blob = qla2x00_request_firmware(vha);
|
||||
if (!blob) {
|
||||
|
@ -1977,7 +1977,7 @@ upstream submission.
|
|||
ql_log(ql_log_info, vha, 0x0084,
|
||||
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
|
||||
return QLA_FUNCTION_FAILED;
|
||||
@@ -5627,8 +5625,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
||||
@@ -5623,8 +5621,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
||||
/* Load firmware blob. */
|
||||
blob = qla2x00_request_firmware(vha);
|
||||
if (!blob) {
|
||||
|
@ -2003,7 +2003,7 @@ upstream submission.
|
|||
if (qla82xx_validate_firmware_blob(vha,
|
||||
--- a/drivers/scsi/qla2xxx/qla_os.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
||||
@@ -5369,8 +5369,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
||||
@@ -5365,8 +5365,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
||||
goto out;
|
||||
|
||||
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
|
||||
|
@ -2136,10 +2136,10 @@ upstream submission.
|
|||
}
|
||||
--- a/drivers/staging/rtl8192u/r819xU_firmware.c
|
||||
+++ b/drivers/staging/rtl8192u/r819xU_firmware.c
|
||||
@@ -243,10 +243,8 @@ bool init_firmware(struct net_device *de
|
||||
@@ -244,10 +244,8 @@ bool init_firmware(struct net_device *de
|
||||
*/
|
||||
if (rst_opt == OPT_SYSTEM_RESET) {
|
||||
rc = request_firmware(&fw_entry, fw_name[init_step],&priv->udev->dev);
|
||||
rc = request_firmware(&fw_entry, fw_name[init_step], &priv->udev->dev);
|
||||
- if (rc < 0) {
|
||||
- RT_TRACE(COMP_ERR, "request firmware fail!\n");
|
||||
+ if (rc)
|
||||
|
@ -2276,7 +2276,7 @@ upstream submission.
|
|||
|
||||
--- a/drivers/usb/atm/cxacru.c
|
||||
+++ b/drivers/usb/atm/cxacru.c
|
||||
@@ -1081,8 +1081,6 @@ static int cxacru_find_firmware(struct c
|
||||
@@ -1086,8 +1086,6 @@ static int cxacru_find_firmware(struct c
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
@ -2431,24 +2431,15 @@ upstream submission.
|
|||
BootMajorVersion = rec->data[0];
|
||||
--- a/drivers/usb/serial/io_ti.c
|
||||
+++ b/drivers/usb/serial/io_ti.c
|
||||
@@ -784,8 +784,6 @@ static int build_i2c_fw_hdr(__u8 *header
|
||||
@@ -2483,8 +2483,6 @@ static int edge_startup(struct usb_seria
|
||||
|
||||
err = request_firmware(&fw, fw_name, dev);
|
||||
if (err) {
|
||||
status = request_firmware(&fw, fw_name, dev);
|
||||
if (status) {
|
||||
- dev_err(dev, "Failed to load image \"%s\" err %d\n",
|
||||
- fw_name, err);
|
||||
kfree(buffer);
|
||||
return err;
|
||||
- fw_name, status);
|
||||
kfree(edge_serial);
|
||||
return status;
|
||||
}
|
||||
@@ -1331,8 +1329,6 @@ static int download_fw(struct edgeport_s
|
||||
|
||||
err = request_firmware(&fw, fw_name, dev);
|
||||
if (err) {
|
||||
- dev_err(dev, "Failed to load image \"%s\" err %d\n",
|
||||
- fw_name, err);
|
||||
kfree(buffer);
|
||||
return err;
|
||||
}
|
||||
--- a/drivers/usb/serial/ti_usb_3410_5052.c
|
||||
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
|
||||
@@ -1485,10 +1485,8 @@ static int ti_download_firmware(struct t
|
||||
|
@ -2680,7 +2671,7 @@ upstream submission.
|
|||
if (err) {
|
||||
--- a/sound/pci/rme9652/hdsp.c
|
||||
+++ b/sound/pci/rme9652/hdsp.c
|
||||
@@ -5102,11 +5102,8 @@ static int hdsp_request_fw_loader(struct
|
||||
@@ -5103,11 +5103,8 @@ static int hdsp_request_fw_loader(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,128 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 26 Aug 2015 00:44:21 +0100
|
||||
Subject: gfs2: Make statistics unsigned, suitable for use with do_div()
|
||||
Forwarded: http://mid.gmane.org/1440548464.26026.9.camel@decadent.org.uk
|
||||
|
||||
None of these statistics can meaningfully be negative, and the
|
||||
numerator for do_div() must have the type u64. The generic
|
||||
implementation of do_div() used on some 32-bit architectures asserts
|
||||
that, resulting in a compiler error in gfs2_rgrp_congested().
|
||||
|
||||
Fixes: 0166b197c2ed ("GFS2: Average in only non-zero round-trip times ...")
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
fs/gfs2/glock.c | 22 +++++++++++-----------
|
||||
fs/gfs2/incore.h | 2 +-
|
||||
fs/gfs2/rgrp.c | 8 ++++----
|
||||
fs/gfs2/trace_gfs2.h | 16 ++++++++--------
|
||||
4 files changed, 24 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
|
||||
index a38e38f..1b6aebe 100644
|
||||
--- a/fs/gfs2/glock.c
|
||||
+++ b/fs/gfs2/glock.c
|
||||
@@ -1733,17 +1733,17 @@ static int gfs2_glstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
||||
{
|
||||
struct gfs2_glock *gl = iter_ptr;
|
||||
|
||||
- seq_printf(seq, "G: n:%u/%llx rtt:%lld/%lld rttb:%lld/%lld irt:%lld/%lld dcnt: %lld qcnt: %lld\n",
|
||||
+ seq_printf(seq, "G: n:%u/%llx rtt:%llu/%llu rttb:%llu/%llu irt:%llu/%llu dcnt: %llu qcnt: %llu\n",
|
||||
gl->gl_name.ln_type,
|
||||
(unsigned long long)gl->gl_name.ln_number,
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
|
||||
- (long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
|
||||
+ (unsigned long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1780,7 +1780,7 @@ static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
||||
struct gfs2_sbd *sdp = gi->sdp;
|
||||
unsigned index = gi->hash >> 3;
|
||||
unsigned subindex = gi->hash & 0x07;
|
||||
- s64 value;
|
||||
+ u64 value;
|
||||
int i;
|
||||
|
||||
if (index == 0 && subindex != 0)
|
||||
@@ -1796,7 +1796,7 @@ static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
|
||||
} else {
|
||||
value = lkstats->lkstats[index - 1].stats[subindex];
|
||||
}
|
||||
- seq_printf(seq, " %15lld", (long long)value);
|
||||
+ seq_printf(seq, " %15llu", (long long)value);
|
||||
}
|
||||
seq_putc(seq, '\n');
|
||||
return 0;
|
||||
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
|
||||
index a1ec7c2..7647e31 100644
|
||||
--- a/fs/gfs2/incore.h
|
||||
+++ b/fs/gfs2/incore.h
|
||||
@@ -241,7 +241,7 @@ enum {
|
||||
};
|
||||
|
||||
struct gfs2_lkstats {
|
||||
- s64 stats[GFS2_NR_LKSTATS];
|
||||
+ u64 stats[GFS2_NR_LKSTATS];
|
||||
};
|
||||
|
||||
enum {
|
||||
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
|
||||
index c6c6232..2884f6f 100644
|
||||
--- a/fs/gfs2/rgrp.c
|
||||
+++ b/fs/gfs2/rgrp.c
|
||||
@@ -1862,11 +1862,11 @@ static bool gfs2_rgrp_congested(const struct gfs2_rgrpd *rgd, int loops)
|
||||
const struct gfs2_glock *gl = rgd->rd_gl;
|
||||
const struct gfs2_sbd *sdp = gl->gl_sbd;
|
||||
struct gfs2_lkstats *st;
|
||||
- s64 r_dcount, l_dcount;
|
||||
- s64 l_srttb, a_srttb = 0;
|
||||
+ u64 r_dcount, l_dcount;
|
||||
+ u64 l_srttb, a_srttb = 0;
|
||||
s64 srttb_diff;
|
||||
- s64 sqr_diff;
|
||||
- s64 var;
|
||||
+ u64 sqr_diff;
|
||||
+ u64 var;
|
||||
int cpu, nonzero = 0;
|
||||
|
||||
preempt_disable();
|
||||
diff --git a/fs/gfs2/trace_gfs2.h b/fs/gfs2/trace_gfs2.h
|
||||
index 20c007d..03a7049 100644
|
||||
--- a/fs/gfs2/trace_gfs2.h
|
||||
+++ b/fs/gfs2/trace_gfs2.h
|
||||
@@ -267,14 +267,14 @@ TRACE_EVENT(gfs2_glock_lock_time,
|
||||
__field( int, status )
|
||||
__field( char, flags )
|
||||
__field( s64, tdiff )
|
||||
- __field( s64, srtt )
|
||||
- __field( s64, srttvar )
|
||||
- __field( s64, srttb )
|
||||
- __field( s64, srttvarb )
|
||||
- __field( s64, sirt )
|
||||
- __field( s64, sirtvar )
|
||||
- __field( s64, dcount )
|
||||
- __field( s64, qcount )
|
||||
+ __field( u64, srtt )
|
||||
+ __field( u64, srttvar )
|
||||
+ __field( u64, srttb )
|
||||
+ __field( u64, srttvarb )
|
||||
+ __field( u64, sirt )
|
||||
+ __field( u64, sirtvar )
|
||||
+ __field( u64, dcount )
|
||||
+ __field( u64, qcount )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
|
@ -30,13 +30,17 @@ the kernel.
|
|||
|
||||
# cc-option-align
|
||||
# Prefix align with either -falign or -malign
|
||||
@@ -126,14 +126,15 @@ cc-option-align = $(subst -functions=0,,
|
||||
@@ -126,18 +126,19 @@ cc-option-align = $(subst -functions=0,,
|
||||
# cc-disable-warning
|
||||
# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
|
||||
cc-disable-warning = $(call try-run,\
|
||||
- $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
|
||||
+ $(CC) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
|
||||
|
||||
# cc-name
|
||||
# Expands to either gcc or clang
|
||||
cc-name = $(shell $(CC) -v 2>&1 | grep -q "clang version" && echo clang || echo gcc)
|
||||
|
||||
# cc-version
|
||||
-cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
|
||||
+cc-version = $(shell $(CONFIG_SHELL) \
|
||||
|
@ -49,7 +53,7 @@ the kernel.
|
|||
|
||||
# cc-ifversion
|
||||
# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
|
||||
@@ -147,7 +148,7 @@ cc-ldoption = $(call try-run,\
|
||||
@@ -151,7 +152,7 @@ cc-ldoption = $(call try-run,\
|
||||
# ld-option
|
||||
# Usage: LDFLAGS += $(call ld-option, -X)
|
||||
ld-option = $(call try-run,\
|
||||
|
@ -60,7 +64,7 @@ the kernel.
|
|||
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -621,6 +621,8 @@ else
|
||||
@@ -614,6 +614,8 @@ else
|
||||
KBUILD_CFLAGS += -O2
|
||||
endif
|
||||
|
||||
|
@ -69,7 +73,7 @@ the kernel.
|
|||
# Tell gcc to never replace conditional load with a non-conditional one
|
||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||
|
||||
@@ -751,7 +753,7 @@ KBUILD_CFLAGS += $(call cc-option, -fno-
|
||||
@@ -744,7 +746,7 @@ KBUILD_CFLAGS += $(call cc-option, -fno-
|
||||
endif
|
||||
|
||||
# arch Makefile may override CC so keep this after arch Makefile is included
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
From: Sasha Levin <sasha.levin@oracle.com>
|
||||
Date: Tue, 8 Sep 2015 10:53:40 -0400
|
||||
Subject: RDS: verify the underlying transport exists before creating a
|
||||
connection
|
||||
Origin: https://git.kernel.org/linus/74e98eb085889b0d2d4908f59f6e00026063014f
|
||||
|
||||
There was no verification that an underlying transport exists when creating
|
||||
a connection, this would cause dereferencing a NULL ptr.
|
||||
|
||||
It might happen on sockets that weren't properly bound before attempting to
|
||||
send a message, which will cause a NULL ptr deref:
|
||||
|
||||
[135546.047719] kasan: GPF could be caused by NULL-ptr deref or user memory accessgeneral protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN
|
||||
[135546.051270] Modules linked in:
|
||||
[135546.051781] CPU: 4 PID: 15650 Comm: trinity-c4 Not tainted 4.2.0-next-20150902-sasha-00041-gbaa1222-dirty #2527
|
||||
[135546.053217] task: ffff8800835bc000 ti: ffff8800bc708000 task.ti: ffff8800bc708000
|
||||
[135546.054291] RIP: __rds_conn_create (net/rds/connection.c:194)
|
||||
[135546.055666] RSP: 0018:ffff8800bc70fab0 EFLAGS: 00010202
|
||||
[135546.056457] RAX: dffffc0000000000 RBX: 0000000000000f2c RCX: ffff8800835bc000
|
||||
[135546.057494] RDX: 0000000000000007 RSI: ffff8800835bccd8 RDI: 0000000000000038
|
||||
[135546.058530] RBP: ffff8800bc70fb18 R08: 0000000000000001 R09: 0000000000000000
|
||||
[135546.059556] R10: ffffed014d7a3a23 R11: ffffed014d7a3a21 R12: 0000000000000000
|
||||
[135546.060614] R13: 0000000000000001 R14: ffff8801ec3d0000 R15: 0000000000000000
|
||||
[135546.061668] FS: 00007faad4ffb700(0000) GS:ffff880252000000(0000) knlGS:0000000000000000
|
||||
[135546.062836] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
|
||||
[135546.063682] CR2: 000000000000846a CR3: 000000009d137000 CR4: 00000000000006a0
|
||||
[135546.064723] Stack:
|
||||
[135546.065048] ffffffffafe2055c ffffffffafe23fc1 ffffed00493097bf ffff8801ec3d0008
|
||||
[135546.066247] 0000000000000000 00000000000000d0 0000000000000000 ac194a24c0586342
|
||||
[135546.067438] 1ffff100178e1f78 ffff880320581b00 ffff8800bc70fdd0 ffff880320581b00
|
||||
[135546.068629] Call Trace:
|
||||
[135546.069028] ? __rds_conn_create (include/linux/rcupdate.h:856 net/rds/connection.c:134)
|
||||
[135546.069989] ? rds_message_copy_from_user (net/rds/message.c:298)
|
||||
[135546.071021] rds_conn_create_outgoing (net/rds/connection.c:278)
|
||||
[135546.071981] rds_sendmsg (net/rds/send.c:1058)
|
||||
[135546.072858] ? perf_trace_lock (include/trace/events/lock.h:38)
|
||||
[135546.073744] ? lockdep_init (kernel/locking/lockdep.c:3298)
|
||||
[135546.074577] ? rds_send_drop_to (net/rds/send.c:976)
|
||||
[135546.075508] ? __might_fault (./arch/x86/include/asm/current.h:14 mm/memory.c:3795)
|
||||
[135546.076349] ? __might_fault (mm/memory.c:3795)
|
||||
[135546.077179] ? rds_send_drop_to (net/rds/send.c:976)
|
||||
[135546.078114] sock_sendmsg (net/socket.c:611 net/socket.c:620)
|
||||
[135546.078856] SYSC_sendto (net/socket.c:1657)
|
||||
[135546.079596] ? SYSC_connect (net/socket.c:1628)
|
||||
[135546.080510] ? trace_dump_stack (kernel/trace/trace.c:1926)
|
||||
[135546.081397] ? ring_buffer_unlock_commit (kernel/trace/ring_buffer.c:2479 kernel/trace/ring_buffer.c:2558 kernel/trace/ring_buffer.c:2674)
|
||||
[135546.082390] ? trace_buffer_unlock_commit (kernel/trace/trace.c:1749)
|
||||
[135546.083410] ? trace_event_raw_event_sys_enter (include/trace/events/syscalls.h:16)
|
||||
[135546.084481] ? do_audit_syscall_entry (include/trace/events/syscalls.h:16)
|
||||
[135546.085438] ? trace_buffer_unlock_commit (kernel/trace/trace.c:1749)
|
||||
[135546.085515] rds_ib_laddr_check(): addr 36.74.25.172 ret -99 node type -1
|
||||
|
||||
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
|
||||
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/rds/connection.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/net/rds/connection.c
|
||||
+++ b/net/rds/connection.c
|
||||
@@ -187,6 +187,12 @@ new_conn:
|
||||
}
|
||||
}
|
||||
|
||||
+ if (trans == NULL) {
|
||||
+ kmem_cache_free(rds_conn_slab, conn);
|
||||
+ conn = ERR_PTR(-ENODEV);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
conn->c_trans = trans;
|
||||
|
||||
ret = trans->conn_alloc(conn, gfp);
|
|
@ -1,34 +0,0 @@
|
|||
From: Jérémy Bobbio <lunar@debian.org>
|
||||
Date: Wed, 8 Jul 2015 20:06:33 +0100
|
||||
Subject: scripts/kernel-doc: parse kernel-doc deterministically
|
||||
Bug-Debian: https://bugs.debian.org/769844
|
||||
Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31871
|
||||
|
||||
Regular expressions for highlights in kernel-doc are stored in a Perl
|
||||
hash. These hashes are ordered differently for each Perl run. This will
|
||||
prevent kernel-doc to behave deterministically when parsing “@foo()” as
|
||||
in some runs it will be interpreted as a parameter and in the others it
|
||||
will be interpreted as a function.
|
||||
|
||||
We now sort the %highlights hash to get the same behavior on every run.
|
||||
|
||||
Signed-off-by: Jérémy Bobbio <lunar@debian.org>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
|
||||
---
|
||||
scripts/kernel-doc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
|
||||
index 9922e66..71ada00 100755
|
||||
--- a/scripts/kernel-doc
|
||||
+++ b/scripts/kernel-doc
|
||||
@@ -2587,7 +2587,7 @@ $kernelversion = get_kernel_version();
|
||||
|
||||
# generate a sequence of code that will splice in highlighting information
|
||||
# using the s// operator.
|
||||
-foreach my $pattern (keys %highlights) {
|
||||
+foreach my $pattern (sort keys %highlights) {
|
||||
# print STDERR "scanning pattern:$pattern, highlight:($highlights{$pattern})\n";
|
||||
$dohighlight .= "\$contents =~ s:$pattern:$highlights{$pattern}:gs;\n";
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 8 Jul 2015 20:07:16 +0100
|
||||
Subject: scripts/kernel-doc: Use $KBUILD_BUILD_TIMESTAMP as man page date
|
||||
Bug-Debian: https://bugs.debian.org/769844
|
||||
Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31875
|
||||
|
||||
Together with the preceding changes, this allows man pages to be built
|
||||
reproducibly.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
|
||||
---
|
||||
scripts/kernel-doc | 15 ++++++++++++---
|
||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
|
||||
index 71ada00..0ac1a07 100755
|
||||
--- a/scripts/kernel-doc
|
||||
+++ b/scripts/kernel-doc
|
||||
@@ -253,11 +253,20 @@ my %highlights = %highlights_man;
|
||||
my $blankline = $blankline_man;
|
||||
my $modulename = "Kernel API";
|
||||
my $function_only = 0;
|
||||
+my $show_not_found = 0;
|
||||
+
|
||||
+my @build_time;
|
||||
+if (defined($ENV{'KBUILD_BUILD_TIMESTAMP'}) &&
|
||||
+ (my $seconds = `date -d"${ENV{'KBUILD_BUILD_TIMESTAMP'}}" +%s`) ne '') {
|
||||
+ @build_time = gmtime($seconds);
|
||||
+} else {
|
||||
+ @build_time = localtime;
|
||||
+}
|
||||
+
|
||||
my $man_date = ('January', 'February', 'March', 'April', 'May', 'June',
|
||||
'July', 'August', 'September', 'October',
|
||||
- 'November', 'December')[(localtime)[4]] .
|
||||
- " " . ((localtime)[5]+1900);
|
||||
-my $show_not_found = 0;
|
||||
+ 'November', 'December')[$build_time[4]] .
|
||||
+ " " . ($build_time[5]+1900);
|
||||
|
||||
# Essentially these are globals.
|
||||
# They probably want to be tidied up, made more localised or something.
|
|
@ -1,104 +0,0 @@
|
|||
From: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Date: Sat, 15 Aug 2015 20:27:13 -0500
|
||||
Subject: vfs: Test for and handle paths that are unreachable from their mnt_root
|
||||
Origin: https://git.kernel.org/linus/397d425dc26da728396e66d392d5dcb8dac30c37
|
||||
|
||||
In rare cases a directory can be renamed out from under a bind mount.
|
||||
In those cases without special handling it becomes possible to walk up
|
||||
the directory tree to the root dentry of the filesystem and down
|
||||
from the root dentry to every other file or directory on the filesystem.
|
||||
|
||||
Like division by zero .. from an unconnected path can not be given
|
||||
a useful semantic as there is no predicting at which path component
|
||||
the code will realize it is unconnected. We certainly can not match
|
||||
the current behavior as the current behavior is a security hole.
|
||||
|
||||
Therefore when encounting .. when following an unconnected path
|
||||
return -ENOENT.
|
||||
|
||||
- Add a function path_connected to verify path->dentry is reachable
|
||||
from path->mnt.mnt_root. AKA to validate that rename did not do
|
||||
something nasty to the bind mount.
|
||||
|
||||
To avoid races path_connected must be called after following a path
|
||||
component to it's next path component.
|
||||
|
||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
---
|
||||
fs/namei.c | 27 +++++++++++++++++++++++++--
|
||||
1 file changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/namei.c b/fs/namei.c
|
||||
index 1c2105e..29b9279 100644
|
||||
--- a/fs/namei.c
|
||||
+++ b/fs/namei.c
|
||||
@@ -560,6 +560,24 @@ static int __nd_alloc_stack(struct nameidata *nd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * path_connected - Verify that a path->dentry is below path->mnt.mnt_root
|
||||
+ * @path: nameidate to verify
|
||||
+ *
|
||||
+ * Rename can sometimes move a file or directory outside of a bind
|
||||
+ * mount, path_connected allows those cases to be detected.
|
||||
+ */
|
||||
+static bool path_connected(const struct path *path)
|
||||
+{
|
||||
+ struct vfsmount *mnt = path->mnt;
|
||||
+
|
||||
+ /* Only bind mounts can have disconnected paths */
|
||||
+ if (mnt->mnt_root == mnt->mnt_sb->s_root)
|
||||
+ return true;
|
||||
+
|
||||
+ return is_subdir(path->dentry, mnt->mnt_root);
|
||||
+}
|
||||
+
|
||||
static inline int nd_alloc_stack(struct nameidata *nd)
|
||||
{
|
||||
if (likely(nd->depth != EMBEDDED_LEVELS))
|
||||
@@ -1296,6 +1314,8 @@ static int follow_dotdot_rcu(struct nameidata *nd)
|
||||
return -ECHILD;
|
||||
nd->path.dentry = parent;
|
||||
nd->seq = seq;
|
||||
+ if (unlikely(!path_connected(&nd->path)))
|
||||
+ return -ENOENT;
|
||||
break;
|
||||
} else {
|
||||
struct mount *mnt = real_mount(nd->path.mnt);
|
||||
@@ -1396,7 +1416,7 @@ static void follow_mount(struct path *path)
|
||||
}
|
||||
}
|
||||
|
||||
-static void follow_dotdot(struct nameidata *nd)
|
||||
+static int follow_dotdot(struct nameidata *nd)
|
||||
{
|
||||
if (!nd->root.mnt)
|
||||
set_root(nd);
|
||||
@@ -1412,6 +1432,8 @@ static void follow_dotdot(struct nameidata *nd)
|
||||
/* rare case of legitimate dget_parent()... */
|
||||
nd->path.dentry = dget_parent(nd->path.dentry);
|
||||
dput(old);
|
||||
+ if (unlikely(!path_connected(&nd->path)))
|
||||
+ return -ENOENT;
|
||||
break;
|
||||
}
|
||||
if (!follow_up(&nd->path))
|
||||
@@ -1419,6 +1441,7 @@ static void follow_dotdot(struct nameidata *nd)
|
||||
}
|
||||
follow_mount(&nd->path);
|
||||
nd->inode = nd->path.dentry->d_inode;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1634,7 +1657,7 @@ static inline int handle_dots(struct nameidata *nd, int type)
|
||||
if (nd->flags & LOOKUP_RCU) {
|
||||
return follow_dotdot_rcu(nd);
|
||||
} else
|
||||
- follow_dotdot(nd);
|
||||
+ return follow_dotdot(nd);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
From: Tim Gardner <tim.gardner@canonical.com>
|
||||
Date: Tue, 4 Aug 2015 11:26:04 -0600
|
||||
Subject: workqueue: Make flush_workqueue() available again to non GPL modules
|
||||
Origin: https://git.kernel.org/linus/1dadafa86a779884f14a6e7a3ddde1a57b0a0a65
|
||||
Bug-Debian: https://bugs.debian.org/798311
|
||||
|
||||
Commit 37b1ef31a568fc02e53587620226e5f3c66454c8 ("workqueue: move
|
||||
flush_scheduled_work() to workqueue.h") moved the exported non GPL
|
||||
flush_scheduled_work() from a function to an inline wrapper.
|
||||
Unfortunately, it directly calls flush_workqueue() which is a GPL function.
|
||||
This has the effect of changing the licensing requirement for this function
|
||||
and makes it unavailable to non GPL modules.
|
||||
|
||||
See commit ad7b1f841f8a54c6d61ff181451f55b68175e15a ("workqueue: Make
|
||||
schedule_work() available again to non GPL modules") for precedent.
|
||||
|
||||
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
---
|
||||
kernel/workqueue.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
|
||||
index 4c4f061..a413acb 100644
|
||||
--- a/kernel/workqueue.c
|
||||
+++ b/kernel/workqueue.c
|
||||
@@ -2614,7 +2614,7 @@ void flush_workqueue(struct workqueue_struct *wq)
|
||||
out_unlock:
|
||||
mutex_unlock(&wq->mutex);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(flush_workqueue);
|
||||
+EXPORT_SYMBOL(flush_workqueue);
|
||||
|
||||
/**
|
||||
* drain_workqueue - drain a workqueue
|
|
@ -15,12 +15,12 @@ Forwarded: not-needed
|
|||
|
||||
/* describe a ptrace relationship for potential exception */
|
||||
struct ptrace_relation {
|
||||
@@ -408,7 +408,7 @@ static __init int yama_init(void)
|
||||
return 0;
|
||||
yama_add_hooks();
|
||||
#endif
|
||||
@@ -402,7 +402,7 @@ static inline void yama_init_sysctl(void
|
||||
|
||||
void __init yama_add_hooks(void)
|
||||
{
|
||||
- pr_info("Yama: becoming mindful.\n");
|
||||
+ pr_info("Yama: disabled by default; enable with sysctl kernel.yama.*\n");
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
if (!register_sysctl_paths(yama_sysctl_path, yama_sysctl_table))
|
||||
security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks));
|
||||
yama_init_sysctl();
|
||||
}
|
||||
|
|
|
@ -8,11 +8,10 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
|
|||
|
||||
aufs4.x-rcN mmap patch
|
||||
|
||||
diff --git a/fs/buffer.c b/fs/buffer.c
|
||||
index 1cf7a53..076aff86 100644
|
||||
[bwh: Forward-ported to 4.3-rc2: adjust context, indentation]
|
||||
--- a/fs/buffer.c
|
||||
+++ b/fs/buffer.c
|
||||
@@ -2473,7 +2473,7 @@ int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
|
||||
@@ -2473,7 +2473,7 @@ int block_page_mkwrite(struct vm_area_st
|
||||
* Update file times before taking page lock. We may end up failing the
|
||||
* fault so this update may be superfluous but who really cares...
|
||||
*/
|
||||
|
@ -21,11 +20,9 @@ index 1cf7a53..076aff86 100644
|
|||
|
||||
ret = __block_page_mkwrite(vma, vmf, get_block);
|
||||
sb_end_pagefault(sb);
|
||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
||||
index 87782e8..b287e64 100644
|
||||
--- a/fs/proc/base.c
|
||||
+++ b/fs/proc/base.c
|
||||
@@ -1934,7 +1934,7 @@ static int proc_map_files_get_link(struct dentry *dentry, struct path *path)
|
||||
@@ -1914,7 +1914,7 @@ static int proc_map_files_get_link(struc
|
||||
down_read(&mm->mmap_sem);
|
||||
vma = find_exact_vma(mm, vm_start, vm_end);
|
||||
if (vma && vma->vm_file) {
|
||||
|
@ -34,11 +31,9 @@ index 87782e8..b287e64 100644
|
|||
path_get(path);
|
||||
rc = 0;
|
||||
}
|
||||
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
|
||||
index f8595e8..cb8eda0 100644
|
||||
--- a/fs/proc/nommu.c
|
||||
+++ b/fs/proc/nommu.c
|
||||
@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
|
||||
@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_
|
||||
file = region->vm_file;
|
||||
|
||||
if (file) {
|
||||
|
@ -50,11 +45,9 @@ index f8595e8..cb8eda0 100644
|
|||
dev = inode->i_sb->s_dev;
|
||||
ino = inode->i_ino;
|
||||
}
|
||||
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
|
||||
index ca1e091..8940e47 100644
|
||||
--- a/fs/proc/task_mmu.c
|
||||
+++ b/fs/proc/task_mmu.c
|
||||
@@ -279,7 +279,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
|
||||
@@ -280,7 +280,10 @@ show_map_vma(struct seq_file *m, struct
|
||||
const char *name = NULL;
|
||||
|
||||
if (file) {
|
||||
|
@ -66,7 +59,7 @@ index ca1e091..8940e47 100644
|
|||
dev = inode->i_sb->s_dev;
|
||||
ino = inode->i_ino;
|
||||
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
||||
@@ -1479,7 +1482,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
||||
@@ -1465,7 +1468,7 @@ static int show_numa_map(struct seq_file
|
||||
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
||||
struct vm_area_struct *vma = v;
|
||||
struct numa_maps *md = &numa_priv->md;
|
||||
|
@ -75,11 +68,9 @@ index ca1e091..8940e47 100644
|
|||
struct mm_struct *mm = vma->vm_mm;
|
||||
struct mm_walk walk = {
|
||||
.hugetlb_entry = gather_hugetlb_stats,
|
||||
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
|
||||
index e0d64c9..7aa92db 100644
|
||||
--- a/fs/proc/task_nommu.c
|
||||
+++ b/fs/proc/task_nommu.c
|
||||
@@ -160,7 +160,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
|
||||
@@ -160,7 +160,10 @@ static int nommu_vma_show(struct seq_fil
|
||||
file = vma->vm_file;
|
||||
|
||||
if (file) {
|
||||
|
@ -91,11 +82,9 @@ index e0d64c9..7aa92db 100644
|
|||
dev = inode->i_sb->s_dev;
|
||||
ino = inode->i_ino;
|
||||
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||
index 2e872f9..2494ed2 100644
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -1173,6 +1173,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
|
||||
@@ -1190,6 +1190,28 @@ static inline int fixup_user_fault(struc
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -124,11 +113,9 @@ index 2e872f9..2494ed2 100644
|
|||
extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
|
||||
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
||||
void *buf, int len, int write);
|
||||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
|
||||
index 0038ac7..409940d 100644
|
||||
--- a/include/linux/mm_types.h
|
||||
+++ b/include/linux/mm_types.h
|
||||
@@ -259,6 +259,7 @@ struct vm_region {
|
||||
@@ -250,6 +250,7 @@ struct vm_region {
|
||||
unsigned long vm_top; /* region allocated to here */
|
||||
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
||||
struct file *vm_file; /* the backing file or NULL */
|
||||
|
@ -136,7 +123,7 @@ index 0038ac7..409940d 100644
|
|||
|
||||
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
||||
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
||||
@@ -323,6 +324,7 @@ struct vm_area_struct {
|
||||
@@ -324,6 +325,7 @@ struct vm_area_struct {
|
||||
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
||||
units, *not* PAGE_CACHE_SIZE */
|
||||
struct file * vm_file; /* File we map to (can be NULL). */
|
||||
|
@ -144,11 +131,9 @@ index 0038ac7..409940d 100644
|
|||
void * vm_private_data; /* was vm_pte (shared mem) */
|
||||
|
||||
#ifndef CONFIG_MMU
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index 1bfefc6..a86bd7f 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -456,7 +456,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
|
||||
@@ -462,7 +462,7 @@ static int dup_mmap(struct mm_struct *mm
|
||||
struct inode *inode = file_inode(file);
|
||||
struct address_space *mapping = file->f_mapping;
|
||||
|
||||
|
@ -157,11 +142,9 @@ index 1bfefc6..a86bd7f 100644
|
|||
if (tmp->vm_flags & VM_DENYWRITE)
|
||||
atomic_dec(&inode->i_writecount);
|
||||
i_mmap_lock_write(mapping);
|
||||
diff --git a/mm/Makefile b/mm/Makefile
|
||||
index 98c4eae..3f0c9b9 100644
|
||||
--- a/mm/Makefile
|
||||
+++ b/mm/Makefile
|
||||
@@ -21,7 +21,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
|
||||
@@ -21,7 +21,7 @@ obj-y := filemap.o mempool.o oom_kill.
|
||||
mm_init.o mmu_context.o percpu.o slab_common.o \
|
||||
compaction.o vmacache.o \
|
||||
interval_tree.o list_lru.o workingset.o \
|
||||
|
@ -170,11 +153,9 @@ index 98c4eae..3f0c9b9 100644
|
|||
|
||||
obj-y += init-mm.o
|
||||
|
||||
diff --git a/mm/filemap.c b/mm/filemap.c
|
||||
index 1283fc8..128f18f 100644
|
||||
--- a/mm/filemap.c
|
||||
+++ b/mm/filemap.c
|
||||
@@ -2089,7 +2089,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
@@ -2089,7 +2089,7 @@ int filemap_page_mkwrite(struct vm_area_
|
||||
int ret = VM_FAULT_LOCKED;
|
||||
|
||||
sb_start_pagefault(inode->i_sb);
|
||||
|
@ -183,11 +164,9 @@ index 1283fc8..128f18f 100644
|
|||
lock_page(page);
|
||||
if (page->mapping != inode->i_mapping) {
|
||||
unlock_page(page);
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index a84fbb7..13973d2 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -2034,7 +2034,7 @@ static inline int wp_page_reuse(struct mm_struct *mm,
|
||||
@@ -2035,7 +2035,7 @@ static inline int wp_page_reuse(struct m
|
||||
}
|
||||
|
||||
if (!page_mkwrite)
|
||||
|
@ -196,11 +175,9 @@ index a84fbb7..13973d2 100644
|
|||
}
|
||||
|
||||
return VM_FAULT_WRITE;
|
||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
||||
index aa632ad..3ff75d3 100644
|
||||
--- a/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -274,7 +274,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
|
||||
@@ -275,7 +275,7 @@ static struct vm_area_struct *remove_vma
|
||||
if (vma->vm_ops && vma->vm_ops->close)
|
||||
vma->vm_ops->close(vma);
|
||||
if (vma->vm_file)
|
||||
|
@ -209,7 +186,7 @@ index aa632ad..3ff75d3 100644
|
|||
mpol_put(vma_policy(vma));
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return next;
|
||||
@@ -886,7 +886,7 @@ again: remove_next = 1 + (end > next->vm_end);
|
||||
@@ -887,7 +887,7 @@ again: remove_next = 1 + (end > next->
|
||||
if (remove_next) {
|
||||
if (file) {
|
||||
uprobe_munmap(next, next->vm_start, next->vm_end);
|
||||
|
@ -218,7 +195,7 @@ index aa632ad..3ff75d3 100644
|
|||
}
|
||||
if (next->anon_vma)
|
||||
anon_vma_merge(vma, next);
|
||||
@@ -1671,8 +1671,8 @@ out:
|
||||
@@ -1682,8 +1682,8 @@ out:
|
||||
return addr;
|
||||
|
||||
unmap_and_free_vma:
|
||||
|
@ -228,7 +205,7 @@ index aa632ad..3ff75d3 100644
|
|||
|
||||
/* Undo any partial mapping done by a device driver. */
|
||||
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
|
||||
@@ -2473,7 +2473,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
@@ -2484,7 +2484,7 @@ static int __split_vma(struct mm_struct
|
||||
goto out_free_mpol;
|
||||
|
||||
if (new->vm_file)
|
||||
|
@ -237,7 +214,7 @@ index aa632ad..3ff75d3 100644
|
|||
|
||||
if (new->vm_ops && new->vm_ops->open)
|
||||
new->vm_ops->open(new);
|
||||
@@ -2492,7 +2492,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
@@ -2503,7 +2503,7 @@ static int __split_vma(struct mm_struct
|
||||
if (new->vm_ops && new->vm_ops->close)
|
||||
new->vm_ops->close(new);
|
||||
if (new->vm_file)
|
||||
|
@ -246,7 +223,7 @@ index aa632ad..3ff75d3 100644
|
|||
unlink_anon_vmas(new);
|
||||
out_free_mpol:
|
||||
mpol_put(vma_policy(new));
|
||||
@@ -2635,7 +2635,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
@@ -2645,7 +2645,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
|
||||
struct vm_area_struct *vma;
|
||||
unsigned long populate = 0;
|
||||
unsigned long ret = -EINVAL;
|
||||
|
@ -254,7 +231,7 @@ index aa632ad..3ff75d3 100644
|
|||
|
||||
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. "
|
||||
"See Documentation/vm/remap_file_pages.txt.\n",
|
||||
@@ -2679,10 +2678,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
@@ -2689,10 +2688,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
|
||||
munlock_vma_pages_range(vma, start, start + size);
|
||||
}
|
||||
|
||||
|
@ -267,20 +244,18 @@ index aa632ad..3ff75d3 100644
|
|||
out:
|
||||
up_write(&mm->mmap_sem);
|
||||
if (populate)
|
||||
@@ -2949,7 +2948,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
||||
if (anon_vma_clone(new_vma, vma))
|
||||
goto out_free_mempol;
|
||||
if (new_vma->vm_file)
|
||||
- get_file(new_vma->vm_file);
|
||||
+ vma_get_file(new_vma);
|
||||
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
||||
new_vma->vm_ops->open(new_vma);
|
||||
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
||||
diff --git a/mm/nommu.c b/mm/nommu.c
|
||||
index 58ea364..f937b7e 100644
|
||||
@@ -2962,7 +2961,7 @@ struct vm_area_struct *copy_vma(struct v
|
||||
if (anon_vma_clone(new_vma, vma))
|
||||
goto out_free_mempol;
|
||||
if (new_vma->vm_file)
|
||||
- get_file(new_vma->vm_file);
|
||||
+ vma_get_file(new_vma);
|
||||
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
||||
new_vma->vm_ops->open(new_vma);
|
||||
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
||||
--- a/mm/nommu.c
|
||||
+++ b/mm/nommu.c
|
||||
@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm_region *region)
|
||||
@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm
|
||||
up_write(&nommu_region_sem);
|
||||
|
||||
if (region->vm_file)
|
||||
|
@ -289,7 +264,7 @@ index 58ea364..f937b7e 100644
|
|||
|
||||
/* IO memory and memory shared directly out of the pagecache
|
||||
* from ramfs/tmpfs mustn't be released here */
|
||||
@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
|
||||
@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct
|
||||
if (vma->vm_ops && vma->vm_ops->close)
|
||||
vma->vm_ops->close(vma);
|
||||
if (vma->vm_file)
|
||||
|
@ -298,7 +273,7 @@ index 58ea364..f937b7e 100644
|
|||
put_nommu_region(vma->vm_region);
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
}
|
||||
@@ -1354,7 +1354,7 @@ unsigned long do_mmap_pgoff(struct file *file,
|
||||
@@ -1355,7 +1355,7 @@ unsigned long do_mmap(struct file *file,
|
||||
goto error_just_free;
|
||||
}
|
||||
}
|
||||
|
@ -307,7 +282,7 @@ index 58ea364..f937b7e 100644
|
|||
kmem_cache_free(vm_region_jar, region);
|
||||
region = pregion;
|
||||
result = start;
|
||||
@@ -1429,10 +1429,10 @@ error_just_free:
|
||||
@@ -1430,10 +1430,10 @@ error_just_free:
|
||||
up_write(&nommu_region_sem);
|
||||
error:
|
||||
if (region->vm_file)
|
||||
|
@ -320,9 +295,6 @@ index 58ea364..f937b7e 100644
|
|||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return ret;
|
||||
|
||||
diff --git a/mm/prfile.c b/mm/prfile.c
|
||||
new file mode 100644
|
||||
index 0000000..b323b8a
|
||||
--- /dev/null
|
||||
+++ b/mm/prfile.c
|
||||
@@ -0,0 +1,86 @@
|
||||
|
|
|
@ -8,6 +8,8 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
|
|||
|
||||
aufs4.x-rcN standalone patch
|
||||
|
||||
[bwh: Forward-ported to 4.3-rc2: remove export of inode_sb_list_lock which
|
||||
no longer exists as a global variable]
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -1272,6 +1272,7 @@ rename_retry:
|
||||
|
@ -36,16 +38,6 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
void __init files_init(void)
|
||||
{
|
||||
--- a/fs/inode.c
|
||||
+++ b/fs/inode.c
|
||||
@@ -58,6 +58,7 @@ static struct hlist_head *inode_hashtabl
|
||||
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
|
||||
|
||||
__cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock);
|
||||
+EXPORT_SYMBOL_GPL(inode_sb_list_lock);
|
||||
|
||||
/*
|
||||
* Empty aops. Can be used for the cases where the user does not
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m
|
||||
|
@ -108,23 +100,23 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
/* Calculate mask of events for a list of marks */
|
||||
u32 fsnotify_recalc_mask(struct hlist_head *head)
|
||||
@@ -202,6 +203,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
||||
fsnotify_destroy_mark_locked(mark, group);
|
||||
@@ -208,6 +209,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
||||
mutex_unlock(&group->mark_mutex);
|
||||
fsnotify_free_mark(mark);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark);
|
||||
|
||||
/*
|
||||
* Destroy all marks in the given list. The marks must be already detached from
|
||||
@@ -376,6 +378,7 @@ err:
|
||||
|
||||
void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock)
|
||||
{
|
||||
@@ -402,6 +404,7 @@ int fsnotify_add_mark(struct fsnotify_ma
|
||||
mutex_unlock(&group->mark_mutex);
|
||||
return ret;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
|
||||
|
||||
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
|
||||
struct inode *inode, struct vfsmount *mnt, int allow_dups)
|
||||
@@ -475,6 +478,7 @@ void fsnotify_init_mark(struct fsnotify_
|
||||
/*
|
||||
* Given a list of marks, find the mark associated with given group. If found
|
||||
@@ -492,6 +495,7 @@ void fsnotify_init_mark(struct fsnotify_
|
||||
atomic_set(&mark->refcnt, 1);
|
||||
mark->free_mark = free_mark;
|
||||
}
|
||||
|
@ -198,7 +190,7 @@ aufs4.x-rcN standalone patch
|
|||
int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
|
||||
--- a/security/commoncap.c
|
||||
+++ b/security/commoncap.c
|
||||
@@ -970,12 +970,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||
@@ -1053,12 +1053,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -233,7 +225,7 @@ aufs4.x-rcN standalone patch
|
|||
{
|
||||
--- a/security/security.c
|
||||
+++ b/security/security.c
|
||||
@@ -438,6 +438,7 @@ int security_path_rmdir(struct path *dir
|
||||
@@ -433,6 +433,7 @@ int security_path_rmdir(struct path *dir
|
||||
return 0;
|
||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||
}
|
||||
|
@ -241,7 +233,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_unlink(struct path *dir, struct dentry *dentry)
|
||||
{
|
||||
@@ -454,6 +455,7 @@ int security_path_symlink(struct path *d
|
||||
@@ -449,6 +450,7 @@ int security_path_symlink(struct path *d
|
||||
return 0;
|
||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||
}
|
||||
|
@ -249,7 +241,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
|
||||
struct dentry *new_dentry)
|
||||
@@ -462,6 +464,7 @@ int security_path_link(struct dentry *ol
|
||||
@@ -457,6 +459,7 @@ int security_path_link(struct dentry *ol
|
||||
return 0;
|
||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||
}
|
||||
|
@ -257,7 +249,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
|
||||
struct path *new_dir, struct dentry *new_dentry,
|
||||
@@ -489,6 +492,7 @@ int security_path_truncate(struct path *
|
||||
@@ -484,6 +487,7 @@ int security_path_truncate(struct path *
|
||||
return 0;
|
||||
return call_int_hook(path_truncate, 0, path);
|
||||
}
|
||||
|
@ -265,7 +257,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_chmod(struct path *path, umode_t mode)
|
||||
{
|
||||
@@ -496,6 +500,7 @@ int security_path_chmod(struct path *pat
|
||||
@@ -491,6 +495,7 @@ int security_path_chmod(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chmod, 0, path, mode);
|
||||
}
|
||||
|
@ -273,7 +265,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
|
||||
{
|
||||
@@ -503,6 +508,7 @@ int security_path_chown(struct path *pat
|
||||
@@ -498,6 +503,7 @@ int security_path_chown(struct path *pat
|
||||
return 0;
|
||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||
}
|
||||
|
@ -281,7 +273,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_path_chroot(struct path *path)
|
||||
{
|
||||
@@ -588,6 +594,7 @@ int security_inode_readlink(struct dentr
|
||||
@@ -583,6 +589,7 @@ int security_inode_readlink(struct dentr
|
||||
return 0;
|
||||
return call_int_hook(inode_readlink, 0, dentry);
|
||||
}
|
||||
|
@ -289,7 +281,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
||||
bool rcu)
|
||||
@@ -603,6 +610,7 @@ int security_inode_permission(struct ino
|
||||
@@ -598,6 +605,7 @@ int security_inode_permission(struct ino
|
||||
return 0;
|
||||
return call_int_hook(inode_permission, 0, inode, mask);
|
||||
}
|
||||
|
@ -297,7 +289,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
{
|
||||
@@ -741,6 +749,7 @@ int security_file_permission(struct file
|
||||
@@ -736,6 +744,7 @@ int security_file_permission(struct file
|
||||
|
||||
return fsnotify_perm(file, mask);
|
||||
}
|
||||
|
@ -305,7 +297,7 @@ aufs4.x-rcN standalone patch
|
|||
|
||||
int security_file_alloc(struct file *file)
|
||||
{
|
||||
@@ -800,6 +809,7 @@ int security_mmap_file(struct file *file
|
||||
@@ -795,6 +804,7 @@ int security_mmap_file(struct file *file
|
||||
return ret;
|
||||
return ima_file_mmap(file, prot);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -580,8 +580,8 @@ bytes respectively. Such letter suffixes
|
||||
@@ -587,8 +587,8 @@ bytes respectively. Such letter suffixes
|
||||
ccw_timeout_log [S390]
|
||||
See Documentation/s390/CommonIO for details.
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
a single hierarchy
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -990,6 +990,14 @@ config MEMCG
|
||||
@@ -1010,6 +1010,14 @@ config MEMCG
|
||||
Provides a memory resource controller that manages both anonymous
|
||||
memory and page cache. (See Documentation/cgroups/memory.txt)
|
||||
|
||||
|
@ -49,7 +49,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
depends on MEMCG && SWAP
|
||||
--- a/kernel/cgroup.c
|
||||
+++ b/kernel/cgroup.c
|
||||
@@ -5370,7 +5370,7 @@ out_free:
|
||||
@@ -5468,7 +5468,7 @@ out_free:
|
||||
kfree(pathbuf);
|
||||
}
|
||||
|
||||
|
@ -58,19 +58,17 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
{
|
||||
struct cgroup_subsys *ss;
|
||||
char *token;
|
||||
@@ -5382,17 +5382,29 @@ static int __init cgroup_disable(char *s
|
||||
@@ -5483,16 +5483,27 @@ static int __init cgroup_disable(char *s
|
||||
strcmp(token, ss->legacy_name))
|
||||
continue;
|
||||
|
||||
for_each_subsys(ss, i) {
|
||||
if (!strcmp(token, ss->name)) {
|
||||
- ss->disabled = 1;
|
||||
- printk(KERN_INFO "Disabling %s control group"
|
||||
- " subsystem\n", ss->name);
|
||||
+ ss->disabled = value;
|
||||
+ printk(KERN_INFO
|
||||
+ "%sabling %s control group subsystem\n",
|
||||
+ value ? "Dis" : "En", ss->name);
|
||||
break;
|
||||
}
|
||||
- ss->disabled = 1;
|
||||
- printk(KERN_INFO "Disabling %s control group subsystem\n",
|
||||
- ss->name);
|
||||
+ ss->disabled = value;
|
||||
+ printk(KERN_INFO "%sabling %s control group subsystem\n",
|
||||
+ value ? "Dis" : "En", ss->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
@ -93,7 +91,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
printk("cgroup: using legacy files on the default hierarchy\n");
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -5379,6 +5379,9 @@ static struct cftype memory_files[] = {
|
||||
@@ -5209,6 +5209,9 @@ static struct cftype memory_files[] = {
|
||||
};
|
||||
|
||||
struct cgroup_subsys memory_cgrp_subsys = {
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
From d4ea7d86457a8d0ea40ce77bdeda1fc966cc35ec Mon Sep 17 00:00:00 2001
|
||||
From: Ian Campbell <ijc@hellion.org.uk>
|
||||
Date: Sat, 1 Aug 2015 18:13:25 +0100
|
||||
Subject: [PATCH] regulator: axp20x: Add module alias
|
||||
Origin: https://git.kernel.org/broonie/regulator/c/d4ea7d86457a8d0ea40ce77bdeda1fc966cc35ec
|
||||
|
||||
This allows the module to be autoloaded.
|
||||
|
||||
Together with 07949bf9c63c ("cpufreq: dt: allow driver to boot
|
||||
automatically") this is sufficient to allow a modular kernel (such
|
||||
as Debian's) to enable cpufreq on a Cubietruck.
|
||||
|
||||
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/axp20x-regulator.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
|
||||
index 6468291..01bf347 100644
|
||||
--- a/drivers/regulator/axp20x-regulator.c
|
||||
+++ b/drivers/regulator/axp20x-regulator.c
|
||||
@@ -405,3 +405,4 @@ module_platform_driver(axp20x_regulator_driver);
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Carlo Caione <carlo@caione.org>");
|
||||
MODULE_DESCRIPTION("Regulator Driver for AXP20X PMIC");
|
||||
+MODULE_ALIAS("platform:axp20x-regulator");
|
||||
--
|
||||
2.1.4
|
||||
|
|
@ -24,7 +24,7 @@ Ben.
|
|||
|
||||
--- a/scripts/package/builddeb
|
||||
+++ b/scripts/package/builddeb
|
||||
@@ -45,7 +45,16 @@ create_package() {
|
||||
@@ -52,7 +52,16 @@ set_debarch() {
|
||||
arm64)
|
||||
debarch=arm64 ;;
|
||||
arm*)
|
||||
|
@ -40,5 +40,5 @@ Ben.
|
|||
+ fi
|
||||
+ ;;
|
||||
*)
|
||||
debarch=$(dpkg --print-architecture)
|
||||
echo "" >&2
|
||||
echo "** ** ** WARNING ** ** **" >&2
|
||||
|
|
|
@ -17,6 +17,7 @@ Signed-off-by: Mark Langsdorf <mlangsdo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
|
|||
[ ijc -- allow build as a module, otherwise cannot see various core
|
||||
symbols, like xhci_resume or usb_add_hcd which are in modules. xhci-hcd-plat
|
||||
can be built as a module from v3.18. ]
|
||||
[bwh: Drop Kconfig change as a similar change was applied upstream]
|
||||
|
||||
---
|
||||
Changes from v2
|
||||
|
@ -28,26 +29,6 @@ Changes from v1
|
|||
Removed changes to arm64/Kconfig
|
||||
Made CONFIG_USB_XHCI_PLATFORM a user selectable config option
|
||||
|
||||
drivers/usb/host/Kconfig | 7 ++++++-
|
||||
drivers/usb/host/xhci-plat.c | 11 +++++++++++
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -32,7 +32,12 @@ config USB_XHCI_PCI
|
||||
default y
|
||||
|
||||
config USB_XHCI_PLATFORM
|
||||
- tristate
|
||||
+ tristate "xHCI platform driver support"
|
||||
+ ---help---
|
||||
+ Say 'Y' to enable the support for the xHCI host controller
|
||||
+ as a platform device. Many ARM SoCs provide USB this way.
|
||||
+
|
||||
+ If unsure, say 'Y'.
|
||||
|
||||
config USB_XHCI_MVEBU
|
||||
tristate "xHCI support for Marvell Armada 375/38x"
|
||||
--- a/drivers/usb/host/xhci-plat.c
|
||||
+++ b/drivers/usb/host/xhci-plat.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
@ -58,7 +39,7 @@ Changes from v1
|
|||
|
||||
#include "xhci.h"
|
||||
#include "xhci-mvebu.h"
|
||||
@@ -258,6 +259,15 @@ static const struct of_device_id usb_xhc
|
||||
@@ -262,6 +263,15 @@ static const struct of_device_id usb_xhc
|
||||
MODULE_DEVICE_TABLE(of, usb_xhci_of_match);
|
||||
#endif
|
||||
|
||||
|
@ -74,7 +55,7 @@ Changes from v1
|
|||
static struct platform_driver usb_xhci_driver = {
|
||||
.probe = xhci_plat_probe,
|
||||
.remove = xhci_plat_remove,
|
||||
@@ -265,6 +275,7 @@ static struct platform_driver usb_xhci_d
|
||||
@@ -269,6 +279,7 @@ static struct platform_driver usb_xhci_d
|
||||
.name = "xhci-hcd",
|
||||
.pm = DEV_PM_OPS,
|
||||
.of_match_table = of_match_ptr(usb_xhci_of_match),
|
||||
|
|
|
@ -24,7 +24,7 @@ Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
|
|||
case CVMX_BOARD_TYPE_CUST_DSR1000N:
|
||||
/*
|
||||
* Port 2 connects to Broadcom PHY (B5081). Other ports (0-1)
|
||||
@@ -759,6 +761,7 @@ enum cvmx_helper_board_usb_clock_types _
|
||||
@@ -765,6 +767,7 @@ enum cvmx_helper_board_usb_clock_types _
|
||||
case CVMX_BOARD_TYPE_LANAI2_G:
|
||||
case CVMX_BOARD_TYPE_NIC10E_66:
|
||||
case CVMX_BOARD_TYPE_UBNT_E100:
|
||||
|
@ -34,19 +34,19 @@ Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
|
|||
case CVMX_BOARD_TYPE_NIC10E:
|
||||
--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||
+++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
|
||||
@@ -228,6 +228,7 @@ enum cvmx_board_types_enum {
|
||||
@@ -283,6 +283,7 @@ enum cvmx_board_types_enum {
|
||||
*/
|
||||
CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
|
||||
CVMX_BOARD_TYPE_UBNT_E100 = 20002,
|
||||
+ CVMX_BOARD_TYPE_UBNT_E200 = 20003,
|
||||
CVMX_BOARD_TYPE_CUST_DSR1000N = 20006,
|
||||
CVMX_BOARD_TYPE_KONTRON_S1901 = 21901,
|
||||
CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000,
|
||||
|
||||
@@ -328,6 +329,7 @@ static inline const char *cvmx_board_typ
|
||||
@@ -384,6 +385,7 @@ static inline const char *cvmx_board_typ
|
||||
/* Customer private range */
|
||||
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
|
||||
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
|
||||
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
|
||||
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N)
|
||||
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KONTRON_S1901)
|
||||
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX)
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
|
||||
--- a/mm/memtest.c
|
||||
+++ b/mm/memtest.c
|
||||
@@ -31,6 +31,10 @@ static u64 patterns[] __initdata = {
|
||||
@@ -26,6 +26,10 @@ static u64 patterns[] __initdata = {
|
||||
|
||||
static void __init reserve_bad_mem(u64 pattern, phys_addr_t start_bad, phys_addr_t end_bad)
|
||||
{
|
||||
|
@ -23,6 +23,6 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||
+ WARN_ONCE(1, "Bad RAM detected. Use memtest86+ to perform a thorough test\n"
|
||||
+ "and the memmap= parameter to reserve the bad areas.");
|
||||
+#endif
|
||||
printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
|
||||
(unsigned long long) pattern,
|
||||
(unsigned long long) start_bad,
|
||||
pr_info(" %016llx bad mem addr %pa - %pa reserved\n",
|
||||
cpu_to_be64(pattern), &start_bad, &end_bad);
|
||||
memblock_reserve(start_bad, end_bad - start_bad);
|
||||
|
|
|
@ -65,22 +65,15 @@ features/arm64/usb-add-support-for-acpi-identification-to-xhci-platform.patch
|
|||
bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
|
||||
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
||||
bugfix/all/disable-some-marvell-phys.patch
|
||||
bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch
|
||||
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
|
||||
bugfix/all/net-mv643xx-disable-tso-by-default.patch
|
||||
|
||||
# Reproducible docs
|
||||
bugfix/all/scripts-kernel-doc-parse-kernel-doc-deterministicall.patch
|
||||
bugfix/all/docbook-don-t-store-mtime-or-name-in-compressed-man-.patch
|
||||
bugfix/all/docbook-generate-consistent-ids.patch
|
||||
bugfix/all/docbook-fix-non-determinstic-installation-of-duplica.patch
|
||||
bugfix/all/scripts-kernel-doc-use-kbuild_build_timestamp-as-man.patch
|
||||
bugfix/all/documentation-avoid-creating-man-pages-in-source-tree.patch
|
||||
bugfix/all/docbook-use-a-fixed-encoding-for-output.patch
|
||||
|
||||
# Miscellaneous features
|
||||
features/all/efi-autoload-efi-pstore.patch
|
||||
features/all/regulator-axp20x-Add-module-alias.patch
|
||||
|
||||
# Hardening from grsecurity
|
||||
features/all/grsecurity/grsecurity-kconfig.patch
|
||||
|
@ -88,11 +81,4 @@ features/all/grsecurity/grsecurity-kconfig.patch
|
|||
#features/all/grsecurity/grsecurity-kbuild.patch
|
||||
features/all/grsecurity/grkernsec_perf_harden.patch
|
||||
|
||||
bugfix/all/gfs2-make-statistics-unsigned-suitable-for-use-with-.patch
|
||||
bugfix/all/workqueue-make-flush_workqueue-available-again-to-no.patch
|
||||
bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch
|
||||
bugfix/all/dcache-reduce-the-scope-of-i_lock-in-d_splice_alias.patch
|
||||
bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch
|
||||
bugfix/all/rds-verify-the-underlying-transport-exists-before-cr.patch
|
||||
bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch
|
||||
bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch
|
||||
|
|
Loading…
Reference in New Issue