@@ -11,7 +11,7 @@
|
||||
<Summary>Kernel module allowing to switch dedicated graphics card on Optimus laptops</Summary>
|
||||
<Description>kernel module allowing to switch dedicated graphics card on Optimus laptops</Description>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.2.6">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Archive sha1sum="e282ee682d794e3962baa4dead01917c42571e78" type="targz">https://github.com/Bumblebee-Project/bbswitch/archive/v0.8.tar.gz</Archive>
|
||||
<Patches>
|
||||
@@ -20,7 +20,7 @@
|
||||
<Package>
|
||||
<Name>module-bbswitch</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.2.6">kernel</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library" permanent="true">/lib/modules</Path>
|
||||
@@ -34,6 +34,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="34">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>0.8</Version>
|
||||
<Comment>Rebuild for kernel-4.2.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="33">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>0.8</Version>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<Archive sha1sum="e02beac9cc713011551c483ae5f20f065f5b88c7" type="targz" target="i686">http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz</Archive>
|
||||
<Archive sha1sum="bd55f1fdc6b0a4d0a70dc4ba4bb4169a824e238c" type="targz" target="x86_64">http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.2.6">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">patch/linux-40.patch</Patch>
|
||||
@@ -32,7 +32,7 @@
|
||||
<Package>
|
||||
<Name>module-broadcom-wl</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.2.6">kernel</Dependency>
|
||||
<Dependency release="current">module-broadcom-wl-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Replaces>
|
||||
@@ -64,6 +64,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="54">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
<Comment>Rebuild for kernel 4.2.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="53">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>6.30.223.248</Version>
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
<Description>This package provides the kernel modules needed for mouse integration and shared folder support between VirtualBox host and guest systems.</Description>
|
||||
<Archive sha1sum="cd1f7c62e17ef3d9b5f7aef7d83fd160355eb396" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.4.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.2.6">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>module-virtualbox-guest</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.2.6">kernel</Dependency>
|
||||
<Dependency>baselayout</Dependency>
|
||||
<Dependency version="current">module-virtualbox-guest-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
@@ -52,6 +52,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="55">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Rebuild for kernel-4.2.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="54">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>5.0.4</Version>
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
<Description>This package provides the kernel support for VirtualBox.</Description>
|
||||
<Archive sha1sum="14e3d8630f779dc1349d9aa488fa7e6604b9ba3e" type="tarxz">http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-5.0.4.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.2.6">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>module-virtualbox</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.2.6">kernel</Dependency>
|
||||
<Dependency version="current">module-virtualbox-userspace</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
@@ -47,6 +47,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="57">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>5.0.4</Version>
|
||||
<Comment>Rebuild for kernel-4.2.6.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="57">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>5.0.4</Version>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<Description>module-ndiswrapper allows you to use Windows XP drivers for WLAN cards without proper Linux drivers.</Description>
|
||||
<Archive sha1sum="75fbbda677fe91ee07a6f6a8e19b1f3e2479540f" type="targz">http://download.sourceforge.net/ndiswrapper/ndiswrapper-1.59.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency version="4.2.5">kernel-module-headers</Dependency>
|
||||
<Dependency version="4.2.6">kernel-module-headers</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch>support_kernel-4.0.patch</Patch>
|
||||
@@ -29,7 +29,7 @@
|
||||
<Package>
|
||||
<Name>ndiswrapper</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency version="4.2.5">kernel</Dependency>
|
||||
<Dependency version="4.2.6">kernel</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library" permanent="true">/lib/modules</Path>
|
||||
@@ -45,6 +45,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="8">
|
||||
<Date>2014-11-11</Date>
|
||||
<Version>1.59</Version>
|
||||
<Comment>Rebuild for kernel-4.2.6.</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2014-11-30</Date>
|
||||
<Version>1.59</Version>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 4.2.5 Kernel Configuration
|
||||
# Linux/x86_64 4.2.6 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_X86_64=y
|
||||
|
||||
Binary file not shown.
-53
@@ -1,53 +0,0 @@
|
||||
From 0f89abf56abbd0e1c6e3cef9813e6d9f05383c1e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Engelmayer <cengelma@gmx.at>
|
||||
Date: Wed, 21 Oct 2015 00:50:06 +0200
|
||||
Subject: btrfs: fix possible leak in btrfs_ioctl_balance()
|
||||
|
||||
Commit 8eb934591f8b ("btrfs: check unsupported filters in balance
|
||||
arguments") adds a jump to exit label out_bargs in case the argument
|
||||
check fails. At this point in addition to the bargs memory, the
|
||||
memory for struct btrfs_balance_control has already been allocated.
|
||||
Ownership of bctl is passed to btrfs_balance() in the good case,
|
||||
thus the memory is not freed due to the introduced jump. Make sure
|
||||
that the memory gets freed in any case as necessary. Detected by
|
||||
Coverity CID 1328378.
|
||||
|
||||
Signed-off-by: Christian Engelmayer <cengelma@gmx.at>
|
||||
Reviewed-by: David Sterba <dsterba@suse.com>
|
||||
Signed-off-by: Chris Mason <clm@fb.com>
|
||||
---
|
||||
fs/btrfs/ioctl.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
|
||||
index 3e3e613..8d20f3b 100644
|
||||
--- a/fs/btrfs/ioctl.c
|
||||
+++ b/fs/btrfs/ioctl.c
|
||||
@@ -4641,7 +4641,7 @@ locked:
|
||||
|
||||
if (bctl->flags & ~(BTRFS_BALANCE_ARGS_MASK | BTRFS_BALANCE_TYPE_MASK)) {
|
||||
ret = -EINVAL;
|
||||
- goto out_bargs;
|
||||
+ goto out_bctl;
|
||||
}
|
||||
|
||||
do_balance:
|
||||
@@ -4655,12 +4655,15 @@ do_balance:
|
||||
need_unlock = false;
|
||||
|
||||
ret = btrfs_balance(bctl, bargs);
|
||||
+ bctl = NULL;
|
||||
|
||||
if (arg) {
|
||||
if (copy_to_user(arg, bargs, sizeof(*bargs)))
|
||||
ret = -EFAULT;
|
||||
}
|
||||
|
||||
+out_bctl:
|
||||
+ kfree(bctl);
|
||||
out_bargs:
|
||||
kfree(bargs);
|
||||
out_unlock:
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
-115
@@ -1,115 +0,0 @@
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Subject: [PATCH] alps: Only the Dell Latitude D420/430/620/630 have separate stick button bits
|
||||
Date: Wed, 21 Oct 2015 10:16:18 +0200
|
||||
|
||||
commit 92bac83dd79e ("Input: alps - non interleaved V2 dualpoint has
|
||||
separate stick button bits") assumes that all alps v2 non-interleaved
|
||||
dual point setups have the separate stick button bits.
|
||||
|
||||
Later we limited this to Dell laptops only because of reports that this
|
||||
broke things on non Dell laptops. Now it turns out that this breaks things
|
||||
on the Dell Latitude D600 too. So it seems that only the Dell Latitude
|
||||
D420/430/620/630, which all share the same touchpad / stick combo,
|
||||
have these separate bits.
|
||||
|
||||
This patch limits the checking of the separate bits to only these models
|
||||
fixing regressions with other models.
|
||||
|
||||
Reported-and-tested-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: stable@vger.kernel.org
|
||||
Tested-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/input/mouse/alps.c | 48 ++++++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 42 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
|
||||
index 4d24686..41e6cb5 100644
|
||||
--- a/drivers/input/mouse/alps.c
|
||||
+++ b/drivers/input/mouse/alps.c
|
||||
@@ -100,7 +100,7 @@ static const struct alps_nibble_commands alps_v6_nibble_commands[] = {
|
||||
#define ALPS_FOUR_BUTTONS 0x40 /* 4 direction button present */
|
||||
#define ALPS_PS2_INTERLEAVED 0x80 /* 3-byte PS/2 packet interleaved with
|
||||
6-byte ALPS packet */
|
||||
-#define ALPS_DELL 0x100 /* device is a Dell laptop */
|
||||
+#define ALPS_STICK_BITS 0x100 /* separate stick button bits */
|
||||
#define ALPS_BUTTONPAD 0x200 /* device is a clickpad */
|
||||
|
||||
static const struct alps_model_info alps_model_data[] = {
|
||||
@@ -159,6 +159,43 @@ static const struct alps_protocol_info alps_v8_protocol_data = {
|
||||
ALPS_PROTO_V8, 0x18, 0x18, 0
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * Some v2 models report the stick buttons in separate bits
|
||||
+ */
|
||||
+static const struct dmi_system_id alps_dmi_has_separate_stick_buttons[] = {
|
||||
+#if defined(CONFIG_DMI) && defined(CONFIG_X86)
|
||||
+ {
|
||||
+ /* Extrapolated from other entries */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D420"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Reported-by: Hans de Bruin <jmdebruin@xmsnet.nl> */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D430"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D620"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ /* Extrapolated from other entries */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D630"),
|
||||
+ },
|
||||
+ },
|
||||
+#endif
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
static void alps_set_abs_params_st(struct alps_data *priv,
|
||||
struct input_dev *dev1);
|
||||
static void alps_set_abs_params_semi_mt(struct alps_data *priv,
|
||||
@@ -253,9 +290,8 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* Dell non interleaved V2 dualpoint has separate stick button bits */
|
||||
- if (priv->proto_version == ALPS_PROTO_V2 &&
|
||||
- priv->flags == (ALPS_DELL | ALPS_PASS | ALPS_DUALPOINT)) {
|
||||
+ /* Some models have separate stick button bits */
|
||||
+ if (priv->flags & ALPS_STICK_BITS) {
|
||||
left |= packet[0] & 1;
|
||||
right |= packet[0] & 2;
|
||||
middle |= packet[0] & 4;
|
||||
@@ -2552,8 +2588,6 @@ static int alps_set_protocol(struct psmouse *psmouse,
|
||||
priv->byte0 = protocol->byte0;
|
||||
priv->mask0 = protocol->mask0;
|
||||
priv->flags = protocol->flags;
|
||||
- if (dmi_name_in_vendors("Dell"))
|
||||
- priv->flags |= ALPS_DELL;
|
||||
|
||||
priv->x_max = 2000;
|
||||
priv->y_max = 1400;
|
||||
@@ -2568,6 +2602,8 @@ static int alps_set_protocol(struct psmouse *psmouse,
|
||||
priv->set_abs_params = alps_set_abs_params_st;
|
||||
priv->x_max = 1023;
|
||||
priv->y_max = 767;
|
||||
+ if (dmi_check_system(alps_dmi_has_separate_stick_buttons))
|
||||
+ priv->flags |= ALPS_STICK_BITS;
|
||||
break;
|
||||
|
||||
case ALPS_PROTO_V3:
|
||||
--
|
||||
2.5.0
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
From c255cb2ed3c7960b2c68f45de1dc0ac2197c8f78 Mon Sep 17 00:00:00 2001
|
||||
From: Anthony Lineham <anthony.lineham@alliedtelesis.co.nz>
|
||||
Date: Thu, 22 Oct 2015 11:17:03 +1300
|
||||
Subject: netfilter: Fix removal of GRE expectation entries created by PPTP
|
||||
|
||||
The uninitialized tuple structure caused incorrect hash calculation
|
||||
and the lookup failed.
|
||||
|
||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=106441
|
||||
Signed-off-by: Anthony Lineham <anthony.lineham@alliedtelesis.co.nz>
|
||||
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
---
|
||||
net/ipv4/netfilter/nf_nat_pptp.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv4/netfilter/nf_nat_pptp.c b/net/ipv4/netfilter/nf_nat_pptp.c
|
||||
index 657d230..b3ca21b 100644
|
||||
--- a/net/ipv4/netfilter/nf_nat_pptp.c
|
||||
+++ b/net/ipv4/netfilter/nf_nat_pptp.c
|
||||
@@ -45,7 +45,7 @@ static void pptp_nat_expected(struct nf_conn *ct,
|
||||
struct net *net = nf_ct_net(ct);
|
||||
const struct nf_conn *master = ct->master;
|
||||
struct nf_conntrack_expect *other_exp;
|
||||
- struct nf_conntrack_tuple t;
|
||||
+ struct nf_conntrack_tuple t = {};
|
||||
const struct nf_ct_pptp_master *ct_pptp_info;
|
||||
const struct nf_nat_pptp *nat_pptp_info;
|
||||
struct nf_nat_range range;
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
@@ -0,0 +1,481 @@
|
||||
From 95ad1f4a9358dff1dcf84bf5c9cc84caa9215f7f Mon Sep 17 00:00:00 2001
|
||||
From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
Date: Sat, 7 Nov 2015 11:21:47 +0100
|
||||
Subject: netfilter: ipset: Fix extension alignment
|
||||
|
||||
The data extensions in ipset lacked the proper memory alignment and
|
||||
thus could lead to kernel crash on several architectures. Therefore
|
||||
the structures have been reorganized and alignment attributes added
|
||||
where needed. The patch was tested on armv7h by Gerhard Wiesinger and
|
||||
on x86_64, sparc64 by Jozsef Kadlecsik.
|
||||
|
||||
Reported-by: Gerhard Wiesinger <lists@wiesinger.com>
|
||||
Tested-by: Gerhard Wiesinger <lists@wiesinger.com>
|
||||
Tested-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
---
|
||||
include/linux/netfilter/ipset/ip_set.h | 2 +-
|
||||
net/netfilter/ipset/ip_set_bitmap_gen.h | 17 +++-----
|
||||
net/netfilter/ipset/ip_set_bitmap_ip.c | 14 ++-----
|
||||
net/netfilter/ipset/ip_set_bitmap_ipmac.c | 64 ++++++++++++++-----------------
|
||||
net/netfilter/ipset/ip_set_bitmap_port.c | 18 ++++-----
|
||||
net/netfilter/ipset/ip_set_core.c | 14 ++++---
|
||||
net/netfilter/ipset/ip_set_hash_gen.h | 11 ++++--
|
||||
net/netfilter/ipset/ip_set_list_set.c | 5 ++-
|
||||
8 files changed, 65 insertions(+), 80 deletions(-)
|
||||
|
||||
diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
|
||||
index 48bb01e..0e1f433 100644
|
||||
--- a/include/linux/netfilter/ipset/ip_set.h
|
||||
+++ b/include/linux/netfilter/ipset/ip_set.h
|
||||
@@ -421,7 +421,7 @@ extern void ip_set_free(void *members);
|
||||
extern int ip_set_get_ipaddr4(struct nlattr *nla, __be32 *ipaddr);
|
||||
extern int ip_set_get_ipaddr6(struct nlattr *nla, union nf_inet_addr *ipaddr);
|
||||
extern size_t ip_set_elem_len(struct ip_set *set, struct nlattr *tb[],
|
||||
- size_t len);
|
||||
+ size_t len, size_t align);
|
||||
extern int ip_set_get_extensions(struct ip_set *set, struct nlattr *tb[],
|
||||
struct ip_set_ext *ext);
|
||||
|
||||
diff --git a/net/netfilter/ipset/ip_set_bitmap_gen.h b/net/netfilter/ipset/ip_set_bitmap_gen.h
|
||||
index d05e759..b0bc475 100644
|
||||
--- a/net/netfilter/ipset/ip_set_bitmap_gen.h
|
||||
+++ b/net/netfilter/ipset/ip_set_bitmap_gen.h
|
||||
@@ -33,7 +33,7 @@
|
||||
#define mtype_gc IPSET_TOKEN(MTYPE, _gc)
|
||||
#define mtype MTYPE
|
||||
|
||||
-#define get_ext(set, map, id) ((map)->extensions + (set)->dsize * (id))
|
||||
+#define get_ext(set, map, id) ((map)->extensions + ((set)->dsize * (id)))
|
||||
|
||||
static void
|
||||
mtype_gc_init(struct ip_set *set, void (*gc)(unsigned long ul_set))
|
||||
@@ -67,12 +67,9 @@ mtype_destroy(struct ip_set *set)
|
||||
del_timer_sync(&map->gc);
|
||||
|
||||
ip_set_free(map->members);
|
||||
- if (set->dsize) {
|
||||
- if (set->extensions & IPSET_EXT_DESTROY)
|
||||
- mtype_ext_cleanup(set);
|
||||
- ip_set_free(map->extensions);
|
||||
- }
|
||||
- kfree(map);
|
||||
+ if (set->dsize && set->extensions & IPSET_EXT_DESTROY)
|
||||
+ mtype_ext_cleanup(set);
|
||||
+ ip_set_free(map);
|
||||
|
||||
set->data = NULL;
|
||||
}
|
||||
@@ -92,16 +89,14 @@ mtype_head(struct ip_set *set, struct sk_buff *skb)
|
||||
{
|
||||
const struct mtype *map = set->data;
|
||||
struct nlattr *nested;
|
||||
+ size_t memsize = sizeof(*map) + map->memsize;
|
||||
|
||||
nested = ipset_nest_start(skb, IPSET_ATTR_DATA);
|
||||
if (!nested)
|
||||
goto nla_put_failure;
|
||||
if (mtype_do_head(skb, map) ||
|
||||
nla_put_net32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1)) ||
|
||||
- nla_put_net32(skb, IPSET_ATTR_MEMSIZE,
|
||||
- htonl(sizeof(*map) +
|
||||
- map->memsize +
|
||||
- set->dsize * map->elements)))
|
||||
+ nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)))
|
||||
goto nla_put_failure;
|
||||
if (unlikely(ip_set_put_flags(skb, set)))
|
||||
goto nla_put_failure;
|
||||
diff --git a/net/netfilter/ipset/ip_set_bitmap_ip.c b/net/netfilter/ipset/ip_set_bitmap_ip.c
|
||||
index 64a5643..4783eff 100644
|
||||
--- a/net/netfilter/ipset/ip_set_bitmap_ip.c
|
||||
+++ b/net/netfilter/ipset/ip_set_bitmap_ip.c
|
||||
@@ -41,7 +41,6 @@ MODULE_ALIAS("ip_set_bitmap:ip");
|
||||
/* Type structure */
|
||||
struct bitmap_ip {
|
||||
void *members; /* the set members */
|
||||
- void *extensions; /* data extensions */
|
||||
u32 first_ip; /* host byte order, included in range */
|
||||
u32 last_ip; /* host byte order, included in range */
|
||||
u32 elements; /* number of max elements in the set */
|
||||
@@ -49,6 +48,8 @@ struct bitmap_ip {
|
||||
size_t memsize; /* members size */
|
||||
u8 netmask; /* subnet netmask */
|
||||
struct timer_list gc; /* garbage collection */
|
||||
+ unsigned char extensions[0] /* data extensions */
|
||||
+ __aligned(__alignof__(u64));
|
||||
};
|
||||
|
||||
/* ADT structure for generic function args */
|
||||
@@ -224,13 +225,6 @@ init_map_ip(struct ip_set *set, struct bitmap_ip *map,
|
||||
map->members = ip_set_alloc(map->memsize);
|
||||
if (!map->members)
|
||||
return false;
|
||||
- if (set->dsize) {
|
||||
- map->extensions = ip_set_alloc(set->dsize * elements);
|
||||
- if (!map->extensions) {
|
||||
- kfree(map->members);
|
||||
- return false;
|
||||
- }
|
||||
- }
|
||||
map->first_ip = first_ip;
|
||||
map->last_ip = last_ip;
|
||||
map->elements = elements;
|
||||
@@ -316,13 +310,13 @@ bitmap_ip_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
|
||||
pr_debug("hosts %u, elements %llu\n",
|
||||
hosts, (unsigned long long)elements);
|
||||
|
||||
- map = kzalloc(sizeof(*map), GFP_KERNEL);
|
||||
+ set->dsize = ip_set_elem_len(set, tb, 0, 0);
|
||||
+ map = ip_set_alloc(sizeof(*map) + elements * set->dsize);
|
||||
if (!map)
|
||||
return -ENOMEM;
|
||||
|
||||
map->memsize = bitmap_bytes(0, elements - 1);
|
||||
set->variant = &bitmap_ip;
|
||||
- set->dsize = ip_set_elem_len(set, tb, 0);
|
||||
if (!init_map_ip(set, map, first_ip, last_ip,
|
||||
elements, hosts, netmask)) {
|
||||
kfree(map);
|
||||
diff --git a/net/netfilter/ipset/ip_set_bitmap_ipmac.c b/net/netfilter/ipset/ip_set_bitmap_ipmac.c
|
||||
index 1430535..29dde20 100644
|
||||
--- a/net/netfilter/ipset/ip_set_bitmap_ipmac.c
|
||||
+++ b/net/netfilter/ipset/ip_set_bitmap_ipmac.c
|
||||
@@ -47,24 +47,26 @@ enum {
|
||||
/* Type structure */
|
||||
struct bitmap_ipmac {
|
||||
void *members; /* the set members */
|
||||
- void *extensions; /* MAC + data extensions */
|
||||
u32 first_ip; /* host byte order, included in range */
|
||||
u32 last_ip; /* host byte order, included in range */
|
||||
u32 elements; /* number of max elements in the set */
|
||||
size_t memsize; /* members size */
|
||||
struct timer_list gc; /* garbage collector */
|
||||
+ unsigned char extensions[0] /* MAC + data extensions */
|
||||
+ __aligned(__alignof__(u64));
|
||||
};
|
||||
|
||||
/* ADT structure for generic function args */
|
||||
struct bitmap_ipmac_adt_elem {
|
||||
+ unsigned char ether[ETH_ALEN] __aligned(2);
|
||||
u16 id;
|
||||
- unsigned char *ether;
|
||||
+ u16 add_mac;
|
||||
};
|
||||
|
||||
struct bitmap_ipmac_elem {
|
||||
unsigned char ether[ETH_ALEN];
|
||||
unsigned char filled;
|
||||
-} __attribute__ ((aligned));
|
||||
+} __aligned(__alignof__(u64));
|
||||
|
||||
static inline u32
|
||||
ip_to_id(const struct bitmap_ipmac *m, u32 ip)
|
||||
@@ -72,11 +74,11 @@ ip_to_id(const struct bitmap_ipmac *m, u32 ip)
|
||||
return ip - m->first_ip;
|
||||
}
|
||||
|
||||
-static inline struct bitmap_ipmac_elem *
|
||||
-get_elem(void *extensions, u16 id, size_t dsize)
|
||||
-{
|
||||
- return (struct bitmap_ipmac_elem *)(extensions + id * dsize);
|
||||
-}
|
||||
+#define get_elem(extensions, id, dsize) \
|
||||
+ (struct bitmap_ipmac_elem *)(extensions + (id) * (dsize))
|
||||
+
|
||||
+#define get_const_elem(extensions, id, dsize) \
|
||||
+ (const struct bitmap_ipmac_elem *)(extensions + (id) * (dsize))
|
||||
|
||||
/* Common functions */
|
||||
|
||||
@@ -88,10 +90,9 @@ bitmap_ipmac_do_test(const struct bitmap_ipmac_adt_elem *e,
|
||||
|
||||
if (!test_bit(e->id, map->members))
|
||||
return 0;
|
||||
- elem = get_elem(map->extensions, e->id, dsize);
|
||||
- if (elem->filled == MAC_FILLED)
|
||||
- return !e->ether ||
|
||||
- ether_addr_equal(e->ether, elem->ether);
|
||||
+ elem = get_const_elem(map->extensions, e->id, dsize);
|
||||
+ if (e->add_mac && elem->filled == MAC_FILLED)
|
||||
+ return ether_addr_equal(e->ether, elem->ether);
|
||||
/* Trigger kernel to fill out the ethernet address */
|
||||
return -EAGAIN;
|
||||
}
|
||||
@@ -103,7 +104,7 @@ bitmap_ipmac_gc_test(u16 id, const struct bitmap_ipmac *map, size_t dsize)
|
||||
|
||||
if (!test_bit(id, map->members))
|
||||
return 0;
|
||||
- elem = get_elem(map->extensions, id, dsize);
|
||||
+ elem = get_const_elem(map->extensions, id, dsize);
|
||||
/* Timer not started for the incomplete elements */
|
||||
return elem->filled == MAC_FILLED;
|
||||
}
|
||||
@@ -133,7 +134,7 @@ bitmap_ipmac_add_timeout(unsigned long *timeout,
|
||||
* and we can reuse it later when MAC is filled out,
|
||||
* possibly by the kernel
|
||||
*/
|
||||
- if (e->ether)
|
||||
+ if (e->add_mac)
|
||||
ip_set_timeout_set(timeout, t);
|
||||
else
|
||||
*timeout = t;
|
||||
@@ -150,7 +151,7 @@ bitmap_ipmac_do_add(const struct bitmap_ipmac_adt_elem *e,
|
||||
elem = get_elem(map->extensions, e->id, dsize);
|
||||
if (test_bit(e->id, map->members)) {
|
||||
if (elem->filled == MAC_FILLED) {
|
||||
- if (e->ether &&
|
||||
+ if (e->add_mac &&
|
||||
(flags & IPSET_FLAG_EXIST) &&
|
||||
!ether_addr_equal(e->ether, elem->ether)) {
|
||||
/* memcpy isn't atomic */
|
||||
@@ -159,7 +160,7 @@ bitmap_ipmac_do_add(const struct bitmap_ipmac_adt_elem *e,
|
||||
ether_addr_copy(elem->ether, e->ether);
|
||||
}
|
||||
return IPSET_ADD_FAILED;
|
||||
- } else if (!e->ether)
|
||||
+ } else if (!e->add_mac)
|
||||
/* Already added without ethernet address */
|
||||
return IPSET_ADD_FAILED;
|
||||
/* Fill the MAC address and trigger the timer activation */
|
||||
@@ -168,7 +169,7 @@ bitmap_ipmac_do_add(const struct bitmap_ipmac_adt_elem *e,
|
||||
ether_addr_copy(elem->ether, e->ether);
|
||||
elem->filled = MAC_FILLED;
|
||||
return IPSET_ADD_START_STORED_TIMEOUT;
|
||||
- } else if (e->ether) {
|
||||
+ } else if (e->add_mac) {
|
||||
/* We can store MAC too */
|
||||
ether_addr_copy(elem->ether, e->ether);
|
||||
elem->filled = MAC_FILLED;
|
||||
@@ -191,7 +192,7 @@ bitmap_ipmac_do_list(struct sk_buff *skb, const struct bitmap_ipmac *map,
|
||||
u32 id, size_t dsize)
|
||||
{
|
||||
const struct bitmap_ipmac_elem *elem =
|
||||
- get_elem(map->extensions, id, dsize);
|
||||
+ get_const_elem(map->extensions, id, dsize);
|
||||
|
||||
return nla_put_ipaddr4(skb, IPSET_ATTR_IP,
|
||||
htonl(map->first_ip + id)) ||
|
||||
@@ -213,7 +214,7 @@ bitmap_ipmac_kadt(struct ip_set *set, const struct sk_buff *skb,
|
||||
{
|
||||
struct bitmap_ipmac *map = set->data;
|
||||
ipset_adtfn adtfn = set->variant->adt[adt];
|
||||
- struct bitmap_ipmac_adt_elem e = { .id = 0 };
|
||||
+ struct bitmap_ipmac_adt_elem e = { .id = 0, .add_mac = 1 };
|
||||
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
|
||||
u32 ip;
|
||||
|
||||
@@ -231,7 +232,7 @@ bitmap_ipmac_kadt(struct ip_set *set, const struct sk_buff *skb,
|
||||
return -EINVAL;
|
||||
|
||||
e.id = ip_to_id(map, ip);
|
||||
- e.ether = eth_hdr(skb)->h_source;
|
||||
+ memcpy(e.ether, eth_hdr(skb)->h_source, ETH_ALEN);
|
||||
|
||||
return adtfn(set, &e, &ext, &opt->ext, opt->cmdflags);
|
||||
}
|
||||
@@ -265,11 +266,10 @@ bitmap_ipmac_uadt(struct ip_set *set, struct nlattr *tb[],
|
||||
return -IPSET_ERR_BITMAP_RANGE;
|
||||
|
||||
e.id = ip_to_id(map, ip);
|
||||
- if (tb[IPSET_ATTR_ETHER])
|
||||
- e.ether = nla_data(tb[IPSET_ATTR_ETHER]);
|
||||
- else
|
||||
- e.ether = NULL;
|
||||
-
|
||||
+ if (tb[IPSET_ATTR_ETHER]) {
|
||||
+ memcpy(e.ether, nla_data(tb[IPSET_ATTR_ETHER]), ETH_ALEN);
|
||||
+ e.add_mac = 1;
|
||||
+ }
|
||||
ret = adtfn(set, &e, &ext, &ext, flags);
|
||||
|
||||
return ip_set_eexist(ret, flags) ? 0 : ret;
|
||||
@@ -300,13 +300,6 @@ init_map_ipmac(struct ip_set *set, struct bitmap_ipmac *map,
|
||||
map->members = ip_set_alloc(map->memsize);
|
||||
if (!map->members)
|
||||
return false;
|
||||
- if (set->dsize) {
|
||||
- map->extensions = ip_set_alloc(set->dsize * elements);
|
||||
- if (!map->extensions) {
|
||||
- kfree(map->members);
|
||||
- return false;
|
||||
- }
|
||||
- }
|
||||
map->first_ip = first_ip;
|
||||
map->last_ip = last_ip;
|
||||
map->elements = elements;
|
||||
@@ -361,14 +354,15 @@ bitmap_ipmac_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
|
||||
if (elements > IPSET_BITMAP_MAX_RANGE + 1)
|
||||
return -IPSET_ERR_BITMAP_RANGE_SIZE;
|
||||
|
||||
- map = kzalloc(sizeof(*map), GFP_KERNEL);
|
||||
+ set->dsize = ip_set_elem_len(set, tb,
|
||||
+ sizeof(struct bitmap_ipmac_elem),
|
||||
+ __alignof__(struct bitmap_ipmac_elem));
|
||||
+ map = ip_set_alloc(sizeof(*map) + elements * set->dsize);
|
||||
if (!map)
|
||||
return -ENOMEM;
|
||||
|
||||
map->memsize = bitmap_bytes(0, elements - 1);
|
||||
set->variant = &bitmap_ipmac;
|
||||
- set->dsize = ip_set_elem_len(set, tb,
|
||||
- sizeof(struct bitmap_ipmac_elem));
|
||||
if (!init_map_ipmac(set, map, first_ip, last_ip, elements)) {
|
||||
kfree(map);
|
||||
return -ENOMEM;
|
||||
diff --git a/net/netfilter/ipset/ip_set_bitmap_port.c b/net/netfilter/ipset/ip_set_bitmap_port.c
|
||||
index 5338ccd..7f0c733 100644
|
||||
--- a/net/netfilter/ipset/ip_set_bitmap_port.c
|
||||
+++ b/net/netfilter/ipset/ip_set_bitmap_port.c
|
||||
@@ -35,12 +35,13 @@ MODULE_ALIAS("ip_set_bitmap:port");
|
||||
/* Type structure */
|
||||
struct bitmap_port {
|
||||
void *members; /* the set members */
|
||||
- void *extensions; /* data extensions */
|
||||
u16 first_port; /* host byte order, included in range */
|
||||
u16 last_port; /* host byte order, included in range */
|
||||
u32 elements; /* number of max elements in the set */
|
||||
size_t memsize; /* members size */
|
||||
struct timer_list gc; /* garbage collection */
|
||||
+ unsigned char extensions[0] /* data extensions */
|
||||
+ __aligned(__alignof__(u64));
|
||||
};
|
||||
|
||||
/* ADT structure for generic function args */
|
||||
@@ -209,13 +210,6 @@ init_map_port(struct ip_set *set, struct bitmap_port *map,
|
||||
map->members = ip_set_alloc(map->memsize);
|
||||
if (!map->members)
|
||||
return false;
|
||||
- if (set->dsize) {
|
||||
- map->extensions = ip_set_alloc(set->dsize * map->elements);
|
||||
- if (!map->extensions) {
|
||||
- kfree(map->members);
|
||||
- return false;
|
||||
- }
|
||||
- }
|
||||
map->first_port = first_port;
|
||||
map->last_port = last_port;
|
||||
set->timeout = IPSET_NO_TIMEOUT;
|
||||
@@ -232,6 +226,7 @@ bitmap_port_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
|
||||
{
|
||||
struct bitmap_port *map;
|
||||
u16 first_port, last_port;
|
||||
+ u32 elements;
|
||||
|
||||
if (unlikely(!ip_set_attr_netorder(tb, IPSET_ATTR_PORT) ||
|
||||
!ip_set_attr_netorder(tb, IPSET_ATTR_PORT_TO) ||
|
||||
@@ -248,14 +243,15 @@ bitmap_port_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
|
||||
last_port = tmp;
|
||||
}
|
||||
|
||||
- map = kzalloc(sizeof(*map), GFP_KERNEL);
|
||||
+ elements = last_port - first_port + 1;
|
||||
+ set->dsize = ip_set_elem_len(set, tb, 0, 0);
|
||||
+ map = ip_set_alloc(sizeof(*map) + elements * set->dsize);
|
||||
if (!map)
|
||||
return -ENOMEM;
|
||||
|
||||
- map->elements = last_port - first_port + 1;
|
||||
+ map->elements = elements;
|
||||
map->memsize = bitmap_bytes(0, map->elements);
|
||||
set->variant = &bitmap_port;
|
||||
- set->dsize = ip_set_elem_len(set, tb, 0);
|
||||
if (!init_map_port(set, map, first_port, last_port)) {
|
||||
kfree(map);
|
||||
return -ENOMEM;
|
||||
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
|
||||
index 69ab9c26..54f3d7c 100644
|
||||
--- a/net/netfilter/ipset/ip_set_core.c
|
||||
+++ b/net/netfilter/ipset/ip_set_core.c
|
||||
@@ -364,25 +364,27 @@ add_extension(enum ip_set_ext_id id, u32 flags, struct nlattr *tb[])
|
||||
}
|
||||
|
||||
size_t
|
||||
-ip_set_elem_len(struct ip_set *set, struct nlattr *tb[], size_t len)
|
||||
+ip_set_elem_len(struct ip_set *set, struct nlattr *tb[], size_t len,
|
||||
+ size_t align)
|
||||
{
|
||||
enum ip_set_ext_id id;
|
||||
- size_t offset = len;
|
||||
u32 cadt_flags = 0;
|
||||
|
||||
if (tb[IPSET_ATTR_CADT_FLAGS])
|
||||
cadt_flags = ip_set_get_h32(tb[IPSET_ATTR_CADT_FLAGS]);
|
||||
if (cadt_flags & IPSET_FLAG_WITH_FORCEADD)
|
||||
set->flags |= IPSET_CREATE_FLAG_FORCEADD;
|
||||
+ if (!align)
|
||||
+ align = 1;
|
||||
for (id = 0; id < IPSET_EXT_ID_MAX; id++) {
|
||||
if (!add_extension(id, cadt_flags, tb))
|
||||
continue;
|
||||
- offset = ALIGN(offset, ip_set_extensions[id].align);
|
||||
- set->offset[id] = offset;
|
||||
+ len = ALIGN(len, ip_set_extensions[id].align);
|
||||
+ set->offset[id] = len;
|
||||
set->extensions |= ip_set_extensions[id].type;
|
||||
- offset += ip_set_extensions[id].len;
|
||||
+ len += ip_set_extensions[id].len;
|
||||
}
|
||||
- return offset;
|
||||
+ return ALIGN(len, align);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip_set_elem_len);
|
||||
|
||||
diff --git a/net/netfilter/ipset/ip_set_hash_gen.h b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
index 691b54f..4ff2219 100644
|
||||
--- a/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
+++ b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
@@ -72,8 +72,9 @@ struct hbucket {
|
||||
DECLARE_BITMAP(used, AHASH_MAX_TUNED);
|
||||
u8 size; /* size of the array */
|
||||
u8 pos; /* position of the first free entry */
|
||||
- unsigned char value[0]; /* the array of the values */
|
||||
-} __attribute__ ((aligned));
|
||||
+ unsigned char value[0] /* the array of the values */
|
||||
+ __aligned(__alignof__(u64));
|
||||
+};
|
||||
|
||||
/* The hash table: the table size stored here in order to make resizing easy */
|
||||
struct htable {
|
||||
@@ -1323,12 +1324,14 @@ IPSET_TOKEN(HTYPE, _create)(struct net *net, struct ip_set *set,
|
||||
#endif
|
||||
set->variant = &IPSET_TOKEN(HTYPE, 4_variant);
|
||||
set->dsize = ip_set_elem_len(set, tb,
|
||||
- sizeof(struct IPSET_TOKEN(HTYPE, 4_elem)));
|
||||
+ sizeof(struct IPSET_TOKEN(HTYPE, 4_elem)),
|
||||
+ __alignof__(struct IPSET_TOKEN(HTYPE, 4_elem)));
|
||||
#ifndef IP_SET_PROTO_UNDEF
|
||||
} else {
|
||||
set->variant = &IPSET_TOKEN(HTYPE, 6_variant);
|
||||
set->dsize = ip_set_elem_len(set, tb,
|
||||
- sizeof(struct IPSET_TOKEN(HTYPE, 6_elem)));
|
||||
+ sizeof(struct IPSET_TOKEN(HTYPE, 6_elem)),
|
||||
+ __alignof__(struct IPSET_TOKEN(HTYPE, 6_elem)));
|
||||
}
|
||||
#endif
|
||||
if (tb[IPSET_ATTR_TIMEOUT]) {
|
||||
diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
|
||||
index 5a30ce6..bbede95 100644
|
||||
--- a/net/netfilter/ipset/ip_set_list_set.c
|
||||
+++ b/net/netfilter/ipset/ip_set_list_set.c
|
||||
@@ -31,7 +31,7 @@ struct set_elem {
|
||||
struct rcu_head rcu;
|
||||
struct list_head list;
|
||||
ip_set_id_t id;
|
||||
-};
|
||||
+} __aligned(__alignof__(u64));
|
||||
|
||||
struct set_adt_elem {
|
||||
ip_set_id_t id;
|
||||
@@ -618,7 +618,8 @@ list_set_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
|
||||
size = IP_SET_LIST_MIN_SIZE;
|
||||
|
||||
set->variant = &set_variant;
|
||||
- set->dsize = ip_set_elem_len(set, tb, sizeof(struct set_elem));
|
||||
+ set->dsize = ip_set_elem_len(set, tb, sizeof(struct set_elem),
|
||||
+ __alignof__(struct set_elem));
|
||||
if (!init_list_set(net, set, size))
|
||||
return -ENOMEM;
|
||||
if (tb[IPSET_ATTR_TIMEOUT]) {
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From e9dfdc052d018268926ab769d5b7598226713d5a Mon Sep 17 00:00:00 2001
|
||||
From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
Date: Sat, 7 Nov 2015 11:23:34 +0100
|
||||
Subject: netfilter: ipset: Fix hash:* type expiration
|
||||
|
||||
Incorrect index was used when the data blob was shrinked at expiration,
|
||||
which could lead to falsely expired entries and memory leak when
|
||||
the comment extension was used too.
|
||||
|
||||
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
---
|
||||
net/netfilter/ipset/ip_set_hash_gen.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/netfilter/ipset/ip_set_hash_gen.h b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
index 4ff2219..fa4f637 100644
|
||||
--- a/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
+++ b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
@@ -523,7 +523,7 @@ mtype_expire(struct ip_set *set, struct htype *h, u8 nets_length, size_t dsize)
|
||||
continue;
|
||||
data = ahash_data(n, j, dsize);
|
||||
memcpy(tmp->value + d * dsize, data, dsize);
|
||||
- set_bit(j, tmp->used);
|
||||
+ set_bit(d, tmp->used);
|
||||
d++;
|
||||
}
|
||||
tmp->pos = d;
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
From 0aae24eb409fc429f54ca3809f904f1b91e295e0 Mon Sep 17 00:00:00 2001
|
||||
From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
Date: Sat, 7 Nov 2015 11:24:51 +0100
|
||||
Subject: netfilter: ipset: Fix hash type expire: release empty hash bucket
|
||||
block
|
||||
|
||||
When all entries are expired/all slots are empty, release the bucket.
|
||||
|
||||
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
---
|
||||
net/netfilter/ipset/ip_set_hash_gen.h | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/net/netfilter/ipset/ip_set_hash_gen.h b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
index fa4f637..e5336ab 100644
|
||||
--- a/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
+++ b/net/netfilter/ipset/ip_set_hash_gen.h
|
||||
@@ -476,7 +476,7 @@ static void
|
||||
mtype_expire(struct ip_set *set, struct htype *h, u8 nets_length, size_t dsize)
|
||||
{
|
||||
struct htable *t;
|
||||
- struct hbucket *n;
|
||||
+ struct hbucket *n, *tmp;
|
||||
struct mtype_elem *data;
|
||||
u32 i, j, d;
|
||||
#ifdef IP_SET_HASH_WITH_NETS
|
||||
@@ -511,9 +511,14 @@ mtype_expire(struct ip_set *set, struct htype *h, u8 nets_length, size_t dsize)
|
||||
}
|
||||
}
|
||||
if (d >= AHASH_INIT_SIZE) {
|
||||
- struct hbucket *tmp = kzalloc(sizeof(*tmp) +
|
||||
- (n->size - AHASH_INIT_SIZE) * dsize,
|
||||
- GFP_ATOMIC);
|
||||
+ if (d >= n->size) {
|
||||
+ rcu_assign_pointer(hbucket(t, i), NULL);
|
||||
+ kfree_rcu(n, rcu);
|
||||
+ continue;
|
||||
+ }
|
||||
+ tmp = kzalloc(sizeof(*tmp) +
|
||||
+ (n->size - AHASH_INIT_SIZE) * dsize,
|
||||
+ GFP_ATOMIC);
|
||||
if (!tmp)
|
||||
/* Still try to delete expired elements */
|
||||
continue;
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
From b5a48134f8af08f5243328f8a0b05fc5ae7cf343 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Tue, 22 Sep 2015 10:47:27 +0200
|
||||
Subject: [PATCH] iwlwifi: fix firmware filename for 3160
|
||||
|
||||
The MODULE_FIRMWARE() for 3160 should be using the 7260 version as
|
||||
it's done in the device configuration struct instead of referencing
|
||||
IWL3160_UCODE_API_OK which doesn't even exist.
|
||||
|
||||
Cc: <stable@vger.kernel.org> [3.8+]
|
||||
Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-7000.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-7000.c b/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
index 6951aba..3fb327d 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-7000.c
|
||||
@@ -348,6 +348,6 @@ const struct iwl_cfg iwl7265d_n_cfg = {
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
-MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL3160_UCODE_API_OK));
|
||||
+MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
--
|
||||
2.6.2
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
From: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Subject: [PATCH] realtek: rtlwifi: rtl8821ae: Fix lockups on boot
|
||||
Date: Tue, 10 Nov 2015 10:46:11 -0600
|
||||
|
||||
In commit 54328e64047a5 ("rtlwifi: rtl8821ae: Fix system lockups on boot"),
|
||||
an attempt was made to fix a regression introduced in commit 1277fa2ab2f9
|
||||
("rtlwifi: Remove the clear interrupt routine from all drivers").
|
||||
Unfortunately, there were logic errors in that patch that prevented
|
||||
affected boxes from booting even after that patch was applied.
|
||||
|
||||
The actual cause of the original problem is unknown as none of the
|
||||
developers have systems that are affected.
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: Stable <stable@vger.kernel.org> [V4.1+]
|
||||
---
|
||||
|
||||
Kalle,
|
||||
|
||||
I hope this patch can be applied to 4.4.
|
||||
|
||||
Thanks,
|
||||
|
||||
Larry
|
||||
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/hw.c | 2 +-
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/sw.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
index 6e9418e..bbb789f 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
@@ -2272,7 +2272,7 @@ void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw)
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
||||
- if (!rtlpci->int_clear)
|
||||
+ if (rtlpci->int_clear)
|
||||
rtl8821ae_clear_interrupt(hw);/*clear it here first*/
|
||||
|
||||
rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF);
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
index 8ee141a..142bdff 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
@@ -448,7 +448,7 @@ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
|
||||
MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n");
|
||||
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
|
||||
MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n");
|
||||
-MODULE_PARM_DESC(int_clear, "Set to 1 to disable interrupt clear before set (default 0)\n");
|
||||
+MODULE_PARM_DESC(int_clear, "Set to 0 to disable interrupt clear before set (default 1)\n");
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
|
||||
|
||||
--
|
||||
2.1.4
|
||||
|
||||
-148
@@ -1,148 +0,0 @@
|
||||
From: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Subject: [PATCH] rtlwifi: rtl8821ae: Fix system lockups on boot
|
||||
Date: Fri, 2 Oct 2015 11:44:30 -0500
|
||||
|
||||
In commit 1277fa2ab2f9, the code that cleared all interrupt enable
|
||||
bits before setting them was removed for all PCI drivers. This fixed an
|
||||
issue that caused TX to be blocked for 3-5 seconds. On some RTL8821AE units,
|
||||
this change causes soft lockups to occur on boot. For that reason, the portion
|
||||
of the earlier commit that applied to rtl8821ae is reverted. Kernels 4.1 and
|
||||
newer are affected.
|
||||
|
||||
See http://marc.info/?l=linux-wireless&m=144373370103285&w=2 and
|
||||
https://bugzilla.opensuse.org/show_bug.cgi?id=944978 for two cases where
|
||||
this regression affected user systems. Note that this bug does not appear on
|
||||
any of the developer's setups. For those users whose systems are affected
|
||||
by the TX blockage, but do not lock up on boot, a module parameter is added
|
||||
to disable the interrupt clear
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Cc: Stable <stable@vger.kernel.org> [V4.1+]
|
||||
---
|
||||
|
||||
Kalle,
|
||||
|
||||
If possible, please send this patch upstream for inclusion in kernel 4.3.
|
||||
As noted, the bug affects kernels 4.1 and newer.
|
||||
|
||||
This patch applies to wireless-drivers-next, and assumes that the patch that
|
||||
moved all the Realtek drivers into drivers/net/wireless/realtek has NOT been
|
||||
applied.
|
||||
|
||||
Thanks,
|
||||
|
||||
Larry
|
||||
---
|
||||
drivers/net/wireless/rtlwifi/pci.h | 2 ++
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/hw.c | 17 +++++++++++++++++
|
||||
drivers/net/wireless/rtlwifi/rtl8821ae/sw.c | 5 +++++
|
||||
drivers/net/wireless/rtlwifi/wifi.h | 3 +++
|
||||
4 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/pci.h b/drivers/net/wireless/rtlwifi/pci.h
|
||||
index d4567d1..5da6703 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/pci.h
|
||||
+++ b/drivers/net/wireless/rtlwifi/pci.h
|
||||
@@ -247,6 +247,8 @@ struct rtl_pci {
|
||||
/* MSI support */
|
||||
bool msi_support;
|
||||
bool using_msi;
|
||||
+ /* interrupt clear before set */
|
||||
+ bool int_clear;
|
||||
};
|
||||
|
||||
struct mp_adapter {
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
index b7f18e21..6e9418e 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
|
||||
@@ -2253,11 +2253,28 @@ void rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci)
|
||||
}
|
||||
}
|
||||
|
||||
+static void rtl8821ae_clear_interrupt(struct ieee80211_hw *hw)
|
||||
+{
|
||||
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
+ u32 tmp = rtl_read_dword(rtlpriv, REG_HISR);
|
||||
+
|
||||
+ rtl_write_dword(rtlpriv, REG_HISR, tmp);
|
||||
+
|
||||
+ tmp = rtl_read_dword(rtlpriv, REG_HISRE);
|
||||
+ rtl_write_dword(rtlpriv, REG_HISRE, tmp);
|
||||
+
|
||||
+ tmp = rtl_read_dword(rtlpriv, REG_HSISR);
|
||||
+ rtl_write_dword(rtlpriv, REG_HSISR, tmp);
|
||||
+}
|
||||
+
|
||||
void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
||||
+ if (!rtlpci->int_clear)
|
||||
+ rtl8821ae_clear_interrupt(hw);/*clear it here first*/
|
||||
+
|
||||
rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF);
|
||||
rtl_write_dword(rtlpriv, REG_HIMRE, rtlpci->irq_mask[1] & 0xFFFFFFFF);
|
||||
rtlpci->irq_enabled = true;
|
||||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
index a4988121..8ee141a 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
|
||||
@@ -96,6 +96,7 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
|
||||
|
||||
rtl8821ae_bt_reg_init(hw);
|
||||
rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support;
|
||||
+ rtlpci->int_clear = rtlpriv->cfg->mod_params->int_clear;
|
||||
rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer();
|
||||
|
||||
rtlpriv->dm.dm_initialgain_enable = 1;
|
||||
@@ -167,6 +168,7 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
|
||||
rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps;
|
||||
rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps;
|
||||
rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support;
|
||||
+ rtlpci->msi_support = rtlpriv->cfg->mod_params->int_clear;
|
||||
if (rtlpriv->cfg->mod_params->disable_watchdog)
|
||||
pr_info("watchdog disabled\n");
|
||||
rtlpriv->psc.reg_fwctrl_lps = 3;
|
||||
@@ -308,6 +310,7 @@ static struct rtl_mod_params rtl8821ae_mod_params = {
|
||||
.swctrl_lps = false,
|
||||
.fwctrl_lps = true,
|
||||
.msi_support = true,
|
||||
+ .int_clear = true,
|
||||
.debug = DBG_EMERG,
|
||||
.disable_watchdog = 0,
|
||||
};
|
||||
@@ -437,6 +440,7 @@ module_param_named(fwlps, rtl8821ae_mod_params.fwctrl_lps, bool, 0444);
|
||||
module_param_named(msi, rtl8821ae_mod_params.msi_support, bool, 0444);
|
||||
module_param_named(disable_watchdog, rtl8821ae_mod_params.disable_watchdog,
|
||||
bool, 0444);
|
||||
+module_param_named(int_clear, rtl8821ae_mod_params.int_clear, bool, 0444);
|
||||
MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
|
||||
MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
|
||||
MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
|
||||
@@ -444,6 +448,7 @@ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
|
||||
MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n");
|
||||
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
|
||||
MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n");
|
||||
+MODULE_PARM_DESC(int_clear, "Set to 1 to disable interrupt clear before set (default 0)\n");
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
|
||||
index b90ca61..4544752 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/wifi.h
|
||||
+++ b/drivers/net/wireless/rtlwifi/wifi.h
|
||||
@@ -2249,6 +2249,9 @@ struct rtl_mod_params {
|
||||
|
||||
/* default 0: 1 means disable */
|
||||
bool disable_watchdog;
|
||||
+
|
||||
+ /* default 0: 1 means do not disable interrupts */
|
||||
+ bool int_clear;
|
||||
};
|
||||
|
||||
struct rtl_hal_usbint_cfg {
|
||||
--
|
||||
2.1.4
|
||||
|
||||
@@ -14,9 +14,6 @@
|
||||
###
|
||||
### Stable Queue
|
||||
###
|
||||
stable-mac80211-fix-hwflags-debugfs-file-format.patch
|
||||
stable-ath9k-declare-required-extra-tx-headroom.patch
|
||||
stable-mmc-core-fix-init_card-in-52mhz.patch
|
||||
|
||||
###
|
||||
### Arch x86
|
||||
@@ -41,8 +38,11 @@ x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch
|
||||
# slows down boot
|
||||
Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch
|
||||
|
||||
# EFI
|
||||
x86-efi-Fix-multiple-GOP-device-support.patch
|
||||
# (CVE-2015-5307)
|
||||
x86-KVM-x86-work-around-infinite-loop-in-microcode-when-AC-is-delivered.patch
|
||||
|
||||
# (CVE-2015-8104)
|
||||
x86-KVM-svm-unconditionally-intercept-DB.patch
|
||||
|
||||
###
|
||||
### Core
|
||||
@@ -131,9 +131,6 @@ scsi-Fix-NULL-pointer-dereference-in-RTPM-of-block-layer.patch
|
||||
fs-aufs4.patch
|
||||
fs-aufs4-modular.patch
|
||||
|
||||
# btrfs memleak
|
||||
fs-btrfs-fix-possible-leak-in-btrfs_ioctl_balance.patch
|
||||
|
||||
###
|
||||
### FireWire
|
||||
###
|
||||
@@ -177,9 +174,6 @@ gpu-drm-mach64-3.18-buildfix.patch
|
||||
|
||||
input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
|
||||
|
||||
# fix alps breakage
|
||||
input-alps-Only-the-Dell-Latitude-D420_430_620_630-have-separate-stick-button-bits.patch
|
||||
|
||||
###
|
||||
### idle
|
||||
###
|
||||
@@ -220,11 +214,14 @@ net-netfilter-psd.patch
|
||||
net-netfilter-psd-mdv.patch
|
||||
net-netfilter-psd-2.6.35-buildfix.patch
|
||||
|
||||
# wireless lockup
|
||||
net-wireless-rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch
|
||||
# netfilter fixes
|
||||
net-netfilter-ipset-Fix-extension-alignment.patch
|
||||
net-netfilter-ipset-Fix-hash-type-expiration.patch
|
||||
net-netfilter-ipset-Fix-hash-type-expire-release-empty-hash-bucket-block.patch
|
||||
net-netfilter-Fix-removal-of-GRE-expectation-entries-created-by-PPTP.patch
|
||||
|
||||
# iwlwifi borked fw reference
|
||||
net-wireless-iwlwifi-fix-firmware-filename-for-3160.patch
|
||||
# rtlwifi hang fix
|
||||
net-wireless-rtlwifi-rtl8821ae-Fix-lockups-on-boot.patch
|
||||
|
||||
###
|
||||
### Platform drivers
|
||||
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
From 029cd0370241641eb70235d205aa0b90c84dce44 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Thu, 24 Sep 2015 16:59:46 +0200
|
||||
Subject: ath9k: declare required extra tx headroom
|
||||
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
commit 029cd0370241641eb70235d205aa0b90c84dce44 upstream.
|
||||
|
||||
ath9k inserts padding between the 802.11 header and the data area (to
|
||||
align it). Since it didn't declare this extra required headroom, this
|
||||
led to some nasty issues like randomly dropped packets in some setups.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/net/wireless/ath/ath9k/init.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -874,6 +874,7 @@ static void ath9k_set_hw_capab(struct at
|
||||
hw->max_rate_tries = 10;
|
||||
hw->sta_data_size = sizeof(struct ath_node);
|
||||
hw->vif_data_size = sizeof(struct ath_vif);
|
||||
+ hw->extra_tx_headroom = 4;
|
||||
|
||||
hw->wiphy->available_antennas_rx = BIT(ah->caps.max_rxchains) - 1;
|
||||
hw->wiphy->available_antennas_tx = BIT(ah->caps.max_txchains) - 1;
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
From 4633dfc32c0019bed2996de9bbdbe7f3b518a44e Mon Sep 17 00:00:00 2001
|
||||
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
Date: Thu, 8 Oct 2015 19:20:14 +0530
|
||||
Subject: mac80211: Fix hwflags debugfs file format
|
||||
|
||||
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
|
||||
commit 4633dfc32c0019bed2996de9bbdbe7f3b518a44e upstream.
|
||||
|
||||
Commit 30686bf7f5b3 ("mac80211: convert HW flags to unsigned long
|
||||
bitmap") accidentally removed the newline delimiter from the hwflags
|
||||
debugfs file. Fix this by adding back the newline between the HW flags.
|
||||
|
||||
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
|
||||
[fix commit log]
|
||||
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
net/mac80211/debugfs.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -148,7 +148,7 @@ static ssize_t hwflags_read(struct file
|
||||
|
||||
for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) {
|
||||
if (test_bit(i, local->hw.flags))
|
||||
- pos += scnprintf(pos, end - pos, "%s",
|
||||
+ pos += scnprintf(pos, end - pos, "%s\n",
|
||||
hw_flag_names[i]);
|
||||
}
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
From 08b137d90eec51b0e90c42e123ca8ceb118d233f Mon Sep 17 00:00:00 2001
|
||||
From: Chaotian Jing <chaotian.jing@mediatek.com>
|
||||
Date: Mon, 12 Oct 2015 17:22:23 +0800
|
||||
Subject: mmc: core: Fix init_card in 52Mhz
|
||||
|
||||
From: Chaotian Jing <chaotian.jing@mediatek.com>
|
||||
|
||||
commit 08b137d90eec51b0e90c42e123ca8ceb118d233f upstream.
|
||||
|
||||
Suppose that we got a data crc error, and it triggers the mmc_reset.
|
||||
mmc_reset will call mmc_send_status to see if HW reset was supported.
|
||||
before issue CMD13, it will do retune, and if EMMC was in HS400 mode,
|
||||
it will reduce frequency to 52Mhz firstly, then results in card init
|
||||
was doing at 52Mhz.
|
||||
The mmc_send_status was originally only done for mmc_test, should drop
|
||||
it. And, rename the "eMMC hardware reset" to "Reset test", as we would
|
||||
also be able to use the test for SD-cards.
|
||||
|
||||
Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
|
||||
Suggested-by: Adrian Hunter <adrian.hunter@intel.com>
|
||||
Fixes: bd11e8bd03ca ("mmc: core: Flag re-tuning is needed on CRC errors")
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
drivers/mmc/card/mmc_test.c | 9 +++------
|
||||
drivers/mmc/core/mmc.c | 7 -------
|
||||
2 files changed, 3 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/mmc/card/mmc_test.c
|
||||
+++ b/drivers/mmc/card/mmc_test.c
|
||||
@@ -2263,15 +2263,12 @@ static int mmc_test_profile_sglen_r_nonb
|
||||
/*
|
||||
* eMMC hardware reset.
|
||||
*/
|
||||
-static int mmc_test_hw_reset(struct mmc_test_card *test)
|
||||
+static int mmc_test_reset(struct mmc_test_card *test)
|
||||
{
|
||||
struct mmc_card *card = test->card;
|
||||
struct mmc_host *host = card->host;
|
||||
int err;
|
||||
|
||||
- if (!mmc_card_mmc(card) || !mmc_can_reset(card))
|
||||
- return RESULT_UNSUP_CARD;
|
||||
-
|
||||
err = mmc_hw_reset(host);
|
||||
if (!err)
|
||||
return RESULT_OK;
|
||||
@@ -2605,8 +2602,8 @@ static const struct mmc_test_case mmc_te
|
||||
},
|
||||
|
||||
{
|
||||
- .name = "eMMC hardware reset",
|
||||
- .run = mmc_test_hw_reset,
|
||||
+ .name = "Reset test",
|
||||
+ .run = mmc_test_reset,
|
||||
},
|
||||
};
|
||||
|
||||
--- a/drivers/mmc/core/mmc.c
|
||||
+++ b/drivers/mmc/core/mmc.c
|
||||
@@ -1924,7 +1924,6 @@ EXPORT_SYMBOL(mmc_can_reset);
|
||||
static int mmc_reset(struct mmc_host *host)
|
||||
{
|
||||
struct mmc_card *card = host->card;
|
||||
- u32 status;
|
||||
|
||||
if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->hw_reset)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -1937,12 +1936,6 @@ static int mmc_reset(struct mmc_host *ho
|
||||
|
||||
host->ops->hw_reset(host);
|
||||
|
||||
- /* If the reset has happened, then a status command will fail */
|
||||
- if (!mmc_send_status(card, &status)) {
|
||||
- mmc_host_clk_release(host);
|
||||
- return -ENOSYS;
|
||||
- }
|
||||
-
|
||||
/* Set initial state and call mmc_set_ios */
|
||||
mmc_set_initial_state(host);
|
||||
mmc_host_clk_release(host);
|
||||
@@ -0,0 +1,80 @@
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Subject: [PATCH 2/3] KVM: svm: unconditionally intercept #DB
|
||||
Date: Tue, 10 Nov 2015 13:22:53 +0100
|
||||
|
||||
This is needed to avoid the possibility that the guest triggers
|
||||
an infinite stream of #DB exceptions (CVE-2015-8104).
|
||||
|
||||
VMX is not affected: because it does not save DR6 in the VMCS,
|
||||
it already intercepts #DB unconditionally.
|
||||
|
||||
Reported-by: Jan Beulich <jbeulich@suse.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
arch/x86/kvm/svm.c | 14 +++-----------
|
||||
1 file changed, 3 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
|
||||
index 183926483c3a..1cc1ffca0d8c 100644
|
||||
--- a/arch/x86/kvm/svm.c
|
||||
+++ b/arch/x86/kvm/svm.c
|
||||
@@ -1020,6 +1020,7 @@ static void init_vmcb(struct vcpu_svm *svm)
|
||||
set_exception_intercept(svm, UD_VECTOR);
|
||||
set_exception_intercept(svm, MC_VECTOR);
|
||||
set_exception_intercept(svm, AC_VECTOR);
|
||||
+ set_exception_intercept(svm, DB_VECTOR);
|
||||
|
||||
set_intercept(svm, INTERCEPT_INTR);
|
||||
set_intercept(svm, INTERCEPT_NMI);
|
||||
@@ -1554,20 +1555,13 @@ static void svm_set_segment(struct kvm_vcpu *vcpu,
|
||||
mark_dirty(svm->vmcb, VMCB_SEG);
|
||||
}
|
||||
|
||||
-static void update_db_bp_intercept(struct kvm_vcpu *vcpu)
|
||||
+static void update_bp_intercept(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
|
||||
- clr_exception_intercept(svm, DB_VECTOR);
|
||||
clr_exception_intercept(svm, BP_VECTOR);
|
||||
|
||||
- if (svm->nmi_singlestep)
|
||||
- set_exception_intercept(svm, DB_VECTOR);
|
||||
-
|
||||
if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
|
||||
- if (vcpu->guest_debug &
|
||||
- (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP))
|
||||
- set_exception_intercept(svm, DB_VECTOR);
|
||||
if (vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP)
|
||||
set_exception_intercept(svm, BP_VECTOR);
|
||||
} else
|
||||
@@ -1673,7 +1667,6 @@ static int db_interception(struct vcpu_svm *svm)
|
||||
if (!(svm->vcpu.guest_debug & KVM_GUESTDBG_SINGLESTEP))
|
||||
svm->vmcb->save.rflags &=
|
||||
~(X86_EFLAGS_TF | X86_EFLAGS_RF);
|
||||
- update_db_bp_intercept(&svm->vcpu);
|
||||
}
|
||||
|
||||
if (svm->vcpu.guest_debug &
|
||||
@@ -3661,7 +3654,6 @@ static void enable_nmi_window(struct kvm_vcpu *vcpu)
|
||||
*/
|
||||
svm->nmi_singlestep = true;
|
||||
svm->vmcb->save.rflags |= (X86_EFLAGS_TF | X86_EFLAGS_RF);
|
||||
- update_db_bp_intercept(vcpu);
|
||||
}
|
||||
|
||||
static int svm_set_tss_addr(struct kvm *kvm, unsigned int addr)
|
||||
@@ -4287,7 +4279,7 @@ static struct kvm_x86_ops svm_x86_ops = {
|
||||
.vcpu_load = svm_vcpu_load,
|
||||
.vcpu_put = svm_vcpu_put,
|
||||
|
||||
- .update_db_bp_intercept = update_db_bp_intercept,
|
||||
+ .update_db_bp_intercept = update_bp_intercept,
|
||||
.get_msr = svm_get_msr,
|
||||
.set_msr = svm_set_msr,
|
||||
.get_segment_base = svm_get_segment_base,
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Subject: [PATCH 1/3] KVM: x86: work around infinite loop in microcode when #AC is delivered
|
||||
Date: Tue, 10 Nov 2015 13:22:52 +0100
|
||||
|
||||
From: Eric Northup <digitaleric@google.com>
|
||||
|
||||
It was found that a guest can DoS a host by triggering an infinite
|
||||
stream of "alignment check" (#AC) exceptions. This causes the
|
||||
microcode to enter an infinite loop where the core never receives
|
||||
another interrupt. The host kernel panics pretty quickly due to the
|
||||
effects (CVE-2015-5307).
|
||||
|
||||
Signed-off-by: Eric Northup <digitaleric@google.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
---
|
||||
arch/x86/include/uapi/asm/svm.h | 1 +
|
||||
arch/x86/kvm/svm.c | 8 ++++++++
|
||||
arch/x86/kvm/vmx.c | 5 ++++-
|
||||
3 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/include/uapi/asm/svm.h b/arch/x86/include/uapi/asm/svm.h
|
||||
index b5d7640abc5d..8a4add8e4639 100644
|
||||
--- a/arch/x86/include/uapi/asm/svm.h
|
||||
+++ b/arch/x86/include/uapi/asm/svm.h
|
||||
@@ -100,6 +100,7 @@
|
||||
{ SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, \
|
||||
{ SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, \
|
||||
{ SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, \
|
||||
+ { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, \
|
||||
{ SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, \
|
||||
{ SVM_EXIT_INTR, "interrupt" }, \
|
||||
{ SVM_EXIT_NMI, "nmi" }, \
|
||||
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
|
||||
index f2ba91990b4e..183926483c3a 100644
|
||||
--- a/arch/x86/kvm/svm.c
|
||||
+++ b/arch/x86/kvm/svm.c
|
||||
@@ -1019,6 +1019,7 @@ static void init_vmcb(struct vcpu_svm *svm)
|
||||
set_exception_intercept(svm, PF_VECTOR);
|
||||
set_exception_intercept(svm, UD_VECTOR);
|
||||
set_exception_intercept(svm, MC_VECTOR);
|
||||
+ set_exception_intercept(svm, AC_VECTOR);
|
||||
|
||||
set_intercept(svm, INTERCEPT_INTR);
|
||||
set_intercept(svm, INTERCEPT_NMI);
|
||||
@@ -1707,6 +1708,12 @@ static int ud_interception(struct vcpu_svm *svm)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static int ac_interception(struct vcpu_svm *svm)
|
||||
+{
|
||||
+ kvm_queue_exception_e(&svm->vcpu, AC_VECTOR, 0);
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
static void svm_fpu_activate(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
@@ -3270,6 +3277,7 @@ static int (*const svm_exit_handlers[])(struct vcpu_svm *svm) = {
|
||||
[SVM_EXIT_EXCP_BASE + PF_VECTOR] = pf_interception,
|
||||
[SVM_EXIT_EXCP_BASE + NM_VECTOR] = nm_interception,
|
||||
[SVM_EXIT_EXCP_BASE + MC_VECTOR] = mc_interception,
|
||||
+ [SVM_EXIT_EXCP_BASE + AC_VECTOR] = ac_interception,
|
||||
[SVM_EXIT_INTR] = intr_interception,
|
||||
[SVM_EXIT_NMI] = nmi_interception,
|
||||
[SVM_EXIT_SMI] = nop_on_interception,
|
||||
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
|
||||
index b765b036a048..89aaedd2a91d 100644
|
||||
--- a/arch/x86/kvm/vmx.c
|
||||
+++ b/arch/x86/kvm/vmx.c
|
||||
@@ -1639,7 +1639,7 @@ static void update_exception_bitmap(struct kvm_vcpu *vcpu)
|
||||
u32 eb;
|
||||
|
||||
eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR) |
|
||||
- (1u << NM_VECTOR) | (1u << DB_VECTOR);
|
||||
+ (1u << NM_VECTOR) | (1u << DB_VECTOR) | (1u << AC_VECTOR);
|
||||
if ((vcpu->guest_debug &
|
||||
(KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP)) ==
|
||||
(KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP))
|
||||
@@ -5261,6 +5261,9 @@ static int handle_exception(struct kvm_vcpu *vcpu)
|
||||
return handle_rmode_exception(vcpu, ex_no, error_code);
|
||||
|
||||
switch (ex_no) {
|
||||
+ case AC_VECTOR:
|
||||
+ kvm_queue_exception_e(vcpu, AC_VECTOR, error_code);
|
||||
+ return 1;
|
||||
case DB_VECTOR:
|
||||
dr6 = vmcs_readl(EXIT_QUALIFICATION);
|
||||
if (!(vcpu->guest_debug &
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
From 8a53554e12e98d1759205afd7b8e9e2ea0936f48 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?K=C5=91v=C3=A1g=C3=B3=2C=20Zolt=C3=A1n?=
|
||||
<dirty.ice.hu@gmail.com>
|
||||
Date: Mon, 12 Oct 2015 15:13:56 +0100
|
||||
Subject: [PATCH] x86/efi: Fix multiple GOP device support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When multiple GOP devices exists, but none of them implements
|
||||
ConOut, the code should just choose the first GOP (according to
|
||||
the comments). But currently 'fb_base' will refer to the last GOP,
|
||||
while other parameters to the first GOP, which will likely
|
||||
result in a garbled display.
|
||||
|
||||
I can reliably reproduce this bug using my ASRock Z87M Extreme4
|
||||
motherboard with CSM and integrated GPU disabled, and two PCIe
|
||||
video cards (NVidia GT640 and GTX980), booting from efi-stub
|
||||
(booting from grub works fine). On the primary display the
|
||||
ASRock logo remains and on the secondary screen it is garbled
|
||||
up completely.
|
||||
|
||||
Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
|
||||
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
|
||||
Cc: Peter Zijlstra <peterz@infradead.org>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Link: http://lkml.kernel.org/r/1444659236-24837-2-git-send-email-matt@codeblueprint.co.uk
|
||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||||
---
|
||||
arch/x86/boot/compressed/eboot.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
|
||||
index ee1b6d3..db51c1f 100644
|
||||
--- a/arch/x86/boot/compressed/eboot.c
|
||||
+++ b/arch/x86/boot/compressed/eboot.c
|
||||
@@ -667,6 +667,7 @@ setup_gop32(struct screen_info *si, efi_guid_t *proto,
|
||||
bool conout_found = false;
|
||||
void *dummy = NULL;
|
||||
u32 h = handles[i];
|
||||
+ u32 current_fb_base;
|
||||
|
||||
status = efi_call_early(handle_protocol, h,
|
||||
proto, (void **)&gop32);
|
||||
@@ -678,7 +679,7 @@ setup_gop32(struct screen_info *si, efi_guid_t *proto,
|
||||
if (status == EFI_SUCCESS)
|
||||
conout_found = true;
|
||||
|
||||
- status = __gop_query32(gop32, &info, &size, &fb_base);
|
||||
+ status = __gop_query32(gop32, &info, &size, ¤t_fb_base);
|
||||
if (status == EFI_SUCCESS && (!first_gop || conout_found)) {
|
||||
/*
|
||||
* Systems that use the UEFI Console Splitter may
|
||||
@@ -692,6 +693,7 @@ setup_gop32(struct screen_info *si, efi_guid_t *proto,
|
||||
pixel_format = info->pixel_format;
|
||||
pixel_info = info->pixel_information;
|
||||
pixels_per_scan_line = info->pixels_per_scan_line;
|
||||
+ fb_base = current_fb_base;
|
||||
|
||||
/*
|
||||
* Once we've found a GOP supporting ConOut,
|
||||
@@ -770,6 +772,7 @@ setup_gop64(struct screen_info *si, efi_guid_t *proto,
|
||||
bool conout_found = false;
|
||||
void *dummy = NULL;
|
||||
u64 h = handles[i];
|
||||
+ u32 current_fb_base;
|
||||
|
||||
status = efi_call_early(handle_protocol, h,
|
||||
proto, (void **)&gop64);
|
||||
@@ -781,7 +784,7 @@ setup_gop64(struct screen_info *si, efi_guid_t *proto,
|
||||
if (status == EFI_SUCCESS)
|
||||
conout_found = true;
|
||||
|
||||
- status = __gop_query64(gop64, &info, &size, &fb_base);
|
||||
+ status = __gop_query64(gop64, &info, &size, ¤t_fb_base);
|
||||
if (status == EFI_SUCCESS && (!first_gop || conout_found)) {
|
||||
/*
|
||||
* Systems that use the UEFI Console Splitter may
|
||||
@@ -795,6 +798,7 @@ setup_gop64(struct screen_info *si, efi_guid_t *proto,
|
||||
pixel_format = info->pixel_format;
|
||||
pixel_info = info->pixel_information;
|
||||
pixels_per_scan_line = info->pixels_per_scan_line;
|
||||
+ fb_base = current_fb_base;
|
||||
|
||||
/*
|
||||
* Once we've found a GOP supporting ConOut,
|
||||
--
|
||||
2.6.2
|
||||
|
||||
+21
-13
@@ -28,19 +28,18 @@
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Linux patches -->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.2.5.xz</Patch>
|
||||
<!-- Mageia Linux patches // compatible with http://svnweb.mageia.org/packages/cauldron/kernel/releases/4.2.5/1.mga6/PATCHES/patches/series-->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.2.6.xz</Patch>
|
||||
<!-- Mageia Linux patches // compatible with http://svnweb.mageia.org/packages/cauldron/kernel/releases/4.2.6/1.mga6/PATCHES/patches/series-->
|
||||
<!--stable patches-->
|
||||
<Patch level="1">patches/mageia/stable-mac80211-fix-hwflags-debugfs-file-format.patch</Patch>
|
||||
<Patch level="1">patches/mageia/stable-ath9k-declare-required-extra-tx-headroom.patch</Patch>
|
||||
<Patch level="1">patches/mageia/stable-mmc-core-fix-init_card-in-52mhz.patch</Patch>
|
||||
|
||||
<!--other patches-->
|
||||
<Patch level="1">patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-boot-video-80x25-if-break.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-default_poweroff_up_machines.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch</Patch>
|
||||
<Patch level="1">patches/mageia/Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-efi-Fix-multiple-GOP-device-support.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-KVM-x86-work-around-infinite-loop-in-microcode-when-AC-is-delivered.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-KVM-svm-unconditionally-intercept-DB.patch</Patch>
|
||||
<Patch level="1">patches/mageia/base-cacheinfo-silence-DT-warnings.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pci-add-ALI-M5229-ide-compatibility-mode-quirk.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pci-quirks-drop-devinit-exit.patch</Patch>
|
||||
@@ -61,7 +60,6 @@
|
||||
<Patch level="1">patches/mageia/block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-aufs4.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-aufs4-modular.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-btrfs-fix-possible-leak-in-btrfs_ioctl_balance.patch</Patch><!--essai-->
|
||||
<Patch level="1">patches/mageia/firewire-ieee1394-module-aliases.patch</Patch>
|
||||
<Patch level="1">patches/mageia/char-agp-intel-new-Q57-id.patch</Patch>
|
||||
<Patch level="1">patches/mageia/gpu-drm-mach64.patch</Patch>
|
||||
@@ -82,7 +80,6 @@
|
||||
<Patch level="1">patches/mageia/gpu-drm-mach64-3.17-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/gpu-drm-mach64-3.18-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch</Patch>
|
||||
<Patch level="1">patches/mageia/input-alps-Only-the-Dell-Latitude-D420_430_620_630-have-separate-stick-button-bits.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-sis190-fix-list-usage.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-IFWLOG.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-IFWLOG-mdv.patch</Patch>
|
||||
@@ -92,9 +89,12 @@
|
||||
<Patch level="1">patches/mageia/net-netfilter-IFWLOG-3.7-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-psd.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-psd-mdv.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-psd-2.6.35-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-wireless-rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-wireless-iwlwifi-fix-firmware-filename-for-3160.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-psd-2.6.35-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-ipset-Fix-extension-alignment.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-ipset-Fix-hash-type-expiration.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-ipset-Fix-hash-type-expire-release-empty-hash-bucket-block.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-Fix-removal-of-GRE-expectation-entries-created-by-PPTP.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-wireless-rtlwifi-rtl8821ae-Fix-lockups-on-boot.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-add-shuttle-wmi-driver.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch</Patch>
|
||||
@@ -113,9 +113,9 @@
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-fix-build-with-function-tracer.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-2.6.36-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-fix-include.patch</Patch>
|
||||
<!--Patch level="1">patches/mageia/3rd-aes2501-r19.patch</Patch>
|
||||
<!--<Patch level="1">patches/mageia/3rd-aes2501-r19.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-kbuild.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-rmmod-oops-fix.patch</Patch-->
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-rmmod-oops-fix.patch</Patch -2-->
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-1.59.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Kconfig.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Makefile-build-fix.patch</Patch>
|
||||
@@ -190,6 +190,14 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="66">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>4.2.6</Version>
|
||||
<Comment>Version bump to 4.2.5 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.5</Comment>
|
||||
<Type package="kernel">security</Type>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="65">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>4.2.5</Version>
|
||||
|
||||
Binary file not shown.
@@ -18,7 +18,7 @@
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Linux patches -->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.2.5.xz</Patch>
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.2.6.xz</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -44,6 +44,13 @@
|
||||
</Provides>-->
|
||||
</Package>
|
||||
<History>
|
||||
<Update release="65">
|
||||
<Date>2015-11-11</Date>
|
||||
<Version>4.2.6</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Ertuğrul Erata</Name>
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="64">
|
||||
<Date>2015-11-30</Date>
|
||||
<Version>4.2.5</Version>
|
||||
|
||||
Reference in New Issue
Block a user