mirror of
https://abf.rosa.ru/djam/kernel.git
synced 2025-02-23 16:22:51 +00:00
New build model for the kernel (ported from kernel-4.6 project)
See the commits 05a8c4904699..16da528365de in https://abf.io/kernels_stable/kernel-4.6. Hightlights: * New build model: everything in a single project. * PAE by default on i586. No non-PAE flavours remain. * SELinux is now built in (disabled by default). * Dropped ndiswrapper (can be built separately if it is really needed).
This commit is contained in:
parent
63d865f82f
commit
b6b23129ad
28 changed files with 62155 additions and 872 deletions
104
0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-4.1.patch
Normal file
104
0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-4.1.patch
Normal file
|
@ -0,0 +1,104 @@
|
|||
From ba1f3efda7e8670fc74715ba9eed93bc1172672d Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Valente <paolo.valente@unimore.it>
|
||||
Date: Tue, 7 Apr 2015 13:39:12 +0200
|
||||
Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r8-4.1
|
||||
|
||||
Update Kconfig.iosched and do the related Makefile changes to include
|
||||
kernel configuration options for BFQ. Also add the bfqio controller
|
||||
to the cgroups subsystem.
|
||||
|
||||
Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
|
||||
Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
|
||||
---
|
||||
block/Kconfig.iosched | 32 ++++++++++++++++++++++++++++++++
|
||||
block/Makefile | 1 +
|
||||
include/linux/cgroup_subsys.h | 4 ++++
|
||||
3 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
|
||||
index 421bef9..0ee5f0f 100644
|
||||
--- a/block/Kconfig.iosched
|
||||
+++ b/block/Kconfig.iosched
|
||||
@@ -39,6 +39,27 @@ config CFQ_GROUP_IOSCHED
|
||||
---help---
|
||||
Enable group IO scheduling in CFQ.
|
||||
|
||||
+config IOSCHED_BFQ
|
||||
+ tristate "BFQ I/O scheduler"
|
||||
+ default n
|
||||
+ ---help---
|
||||
+ The BFQ I/O scheduler tries to distribute bandwidth among
|
||||
+ all processes according to their weights.
|
||||
+ It aims at distributing the bandwidth as desired, independently of
|
||||
+ the disk parameters and with any workload. It also tries to
|
||||
+ guarantee low latency to interactive and soft real-time
|
||||
+ applications. If compiled built-in (saying Y here), BFQ can
|
||||
+ be configured to support hierarchical scheduling.
|
||||
+
|
||||
+config CGROUP_BFQIO
|
||||
+ bool "BFQ hierarchical scheduling support"
|
||||
+ depends on CGROUPS && IOSCHED_BFQ=y
|
||||
+ default n
|
||||
+ ---help---
|
||||
+ Enable hierarchical scheduling in BFQ, using the cgroups
|
||||
+ filesystem interface. The name of the subsystem will be
|
||||
+ bfqio.
|
||||
+
|
||||
choice
|
||||
prompt "Default I/O scheduler"
|
||||
default DEFAULT_CFQ
|
||||
@@ -52,6 +73,16 @@ choice
|
||||
config DEFAULT_CFQ
|
||||
bool "CFQ" if IOSCHED_CFQ=y
|
||||
|
||||
+ config DEFAULT_BFQ
|
||||
+ bool "BFQ" if IOSCHED_BFQ=y
|
||||
+ help
|
||||
+ Selects BFQ as the default I/O scheduler which will be
|
||||
+ used by default for all block devices.
|
||||
+ The BFQ I/O scheduler aims at distributing the bandwidth
|
||||
+ as desired, independently of the disk parameters and with
|
||||
+ any workload. It also tries to guarantee low latency to
|
||||
+ interactive and soft real-time applications.
|
||||
+
|
||||
config DEFAULT_NOOP
|
||||
bool "No-op"
|
||||
|
||||
@@ -61,6 +92,7 @@ config DEFAULT_IOSCHED
|
||||
string
|
||||
default "deadline" if DEFAULT_DEADLINE
|
||||
default "cfq" if DEFAULT_CFQ
|
||||
+ default "bfq" if DEFAULT_BFQ
|
||||
default "noop" if DEFAULT_NOOP
|
||||
|
||||
endmenu
|
||||
diff --git a/block/Makefile b/block/Makefile
|
||||
index 00ecc97..1ed86d5 100644
|
||||
--- a/block/Makefile
|
||||
+++ b/block/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_BLK_DEV_THROTTLING) += blk-throttle.o
|
||||
obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
|
||||
obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o
|
||||
obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
|
||||
+obj-$(CONFIG_IOSCHED_BFQ) += bfq-iosched.o
|
||||
|
||||
obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o
|
||||
obj-$(CONFIG_BLK_CMDLINE_PARSER) += cmdline-parser.o
|
||||
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
|
||||
index e4a96fb..267d681 100644
|
||||
--- a/include/linux/cgroup_subsys.h
|
||||
+++ b/include/linux/cgroup_subsys.h
|
||||
@@ -35,6 +35,10 @@ SUBSYS(freezer)
|
||||
SUBSYS(net_cls)
|
||||
#endif
|
||||
|
||||
+#if IS_ENABLED(CONFIG_CGROUP_BFQIO)
|
||||
+SUBSYS(bfqio)
|
||||
+#endif
|
||||
+
|
||||
#if IS_ENABLED(CONFIG_CGROUP_PERF)
|
||||
SUBSYS(perf_event)
|
||||
#endif
|
||||
--
|
||||
2.1.4
|
||||
|
6952
0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-4.1.patch
Normal file
6952
0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-4.1.patch
Normal file
File diff suppressed because it is too large
Load diff
1220
0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-4.1.0.patch
Normal file
1220
0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-4.1.0.patch
Normal file
File diff suppressed because it is too large
Load diff
31
HID-lenovo-01-Use-constants-for-axes-names.patch
Normal file
31
HID-lenovo-01-Use-constants-for-axes-names.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
From 7f65068fb77f173c5466545fc11818de7a35c1f3 Mon Sep 17 00:00:00 2001
|
||||
From: Jamie Lentin <jm@lentin.co.uk>
|
||||
Date: Tue, 11 Aug 2015 22:40:50 +0100
|
||||
Subject: [PATCH] HID: lenovo: Use constants for axes names
|
||||
|
||||
Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
drivers/hid/hid-lenovo.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
|
||||
index 4f59bff..680bb11 100644
|
||||
--- a/drivers/hid/hid-lenovo.c
|
||||
+++ b/drivers/hid/hid-lenovo.c
|
||||
@@ -146,10 +146,10 @@ static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
|
||||
|
||||
switch (usage->hid & HID_USAGE) {
|
||||
case 0x0000:
|
||||
- hid_map_usage(hi, usage, bit, max, EV_REL, 0x06);
|
||||
+ hid_map_usage(hi, usage, bit, max, EV_REL, REL_HWHEEL);
|
||||
return 1;
|
||||
case 0x0001:
|
||||
- hid_map_usage(hi, usage, bit, max, EV_REL, 0x08);
|
||||
+ hid_map_usage(hi, usage, bit, max, EV_REL, REL_WHEEL);
|
||||
return 1;
|
||||
default:
|
||||
return -1;
|
||||
--
|
||||
2.3.2
|
||||
|
32
HID-lenovo-02-Add-missing-return-value-check.patch
Normal file
32
HID-lenovo-02-Add-missing-return-value-check.patch
Normal file
|
@ -0,0 +1,32 @@
|
|||
From dbfebb44b7c650dd134a8be07f9afd5862150987 Mon Sep 17 00:00:00 2001
|
||||
From: Jamie Lentin <jm@lentin.co.uk>
|
||||
Date: Tue, 11 Aug 2015 22:40:51 +0100
|
||||
Subject: [PATCH] HID: lenovo: Add missing return-value check
|
||||
|
||||
Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
drivers/hid/hid-lenovo.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
|
||||
index 680bb11..d40221d 100644
|
||||
--- a/drivers/hid/hid-lenovo.c
|
||||
+++ b/drivers/hid/hid-lenovo.c
|
||||
@@ -207,9 +207,12 @@ static void lenovo_features_set_cptkbd(struct hid_device *hdev)
|
||||
struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev);
|
||||
|
||||
ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock);
|
||||
- ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity);
|
||||
if (ret)
|
||||
hid_err(hdev, "Fn-lock setting failed: %d\n", ret);
|
||||
+
|
||||
+ ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity);
|
||||
+ if (ret)
|
||||
+ hid_err(hdev, "Sensitivity setting failed: %d\n", ret);
|
||||
}
|
||||
|
||||
static ssize_t attr_fn_lock_show_cptkbd(struct device *dev,
|
||||
--
|
||||
2.3.2
|
||||
|
100
HID-lenovo-03-Hide-middle-button-press-until-release.patch
Normal file
100
HID-lenovo-03-Hide-middle-button-press-until-release.patch
Normal file
|
@ -0,0 +1,100 @@
|
|||
From 3cb5ff0220e31bd1043bb18fd5765c9f86928491 Mon Sep 17 00:00:00 2001
|
||||
From: Jamie Lentin <jm@lentin.co.uk>
|
||||
Date: Tue, 11 Aug 2015 22:40:52 +0100
|
||||
Subject: [PATCH] HID: lenovo: Hide middle-button press until release
|
||||
|
||||
Don't relay a middle button press to userspace until release, and then
|
||||
only if there was no scroll events inbetween. This is closer to what
|
||||
Xorg's wheel emulation does, and avoids spurious middle-click pastes.
|
||||
|
||||
Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
drivers/hid/hid-lenovo.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 50 insertions(+)
|
||||
|
||||
diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
|
||||
index d40221d..e4bc6cb 100644
|
||||
--- a/drivers/hid/hid-lenovo.c
|
||||
+++ b/drivers/hid/hid-lenovo.c
|
||||
@@ -37,6 +37,7 @@ struct lenovo_drvdata_tpkbd {
|
||||
};
|
||||
|
||||
struct lenovo_drvdata_cptkbd {
|
||||
+ u8 middlebutton_state; /* 0:Up, 1:Down (undecided), 2:Scrolling */
|
||||
bool fn_lock;
|
||||
int sensitivity;
|
||||
};
|
||||
@@ -316,6 +317,53 @@ static int lenovo_raw_event(struct hid_device *hdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int lenovo_event_cptkbd(struct hid_device *hdev,
|
||||
+ struct hid_field *field, struct hid_usage *usage, __s32 value)
|
||||
+{
|
||||
+ struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev);
|
||||
+
|
||||
+ /* "wheel" scroll events */
|
||||
+ if (usage->type == EV_REL && (usage->code == REL_WHEEL ||
|
||||
+ usage->code == REL_HWHEEL)) {
|
||||
+ /* Scroll events disable middle-click event */
|
||||
+ cptkbd_data->middlebutton_state = 2;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /* Middle click events */
|
||||
+ if (usage->type == EV_KEY && usage->code == BTN_MIDDLE) {
|
||||
+ if (value == 1) {
|
||||
+ cptkbd_data->middlebutton_state = 1;
|
||||
+ } else if (value == 0) {
|
||||
+ if (cptkbd_data->middlebutton_state == 1) {
|
||||
+ /* No scrolling inbetween, send middle-click */
|
||||
+ input_event(field->hidinput->input,
|
||||
+ EV_KEY, BTN_MIDDLE, 1);
|
||||
+ input_sync(field->hidinput->input);
|
||||
+ input_event(field->hidinput->input,
|
||||
+ EV_KEY, BTN_MIDDLE, 0);
|
||||
+ input_sync(field->hidinput->input);
|
||||
+ }
|
||||
+ cptkbd_data->middlebutton_state = 0;
|
||||
+ }
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int lenovo_event(struct hid_device *hdev, struct hid_field *field,
|
||||
+ struct hid_usage *usage, __s32 value)
|
||||
+{
|
||||
+ switch (hdev->product) {
|
||||
+ case USB_DEVICE_ID_LENOVO_CUSBKBD:
|
||||
+ case USB_DEVICE_ID_LENOVO_CBTKBD:
|
||||
+ return lenovo_event_cptkbd(hdev, field, usage, value);
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int lenovo_features_set_tpkbd(struct hid_device *hdev)
|
||||
{
|
||||
struct hid_report *report;
|
||||
@@ -708,6 +756,7 @@ static int lenovo_probe_cptkbd(struct hid_device *hdev)
|
||||
hid_warn(hdev, "Failed to switch middle button: %d\n", ret);
|
||||
|
||||
/* Set keyboard settings to known state */
|
||||
+ cptkbd_data->middlebutton_state = 0;
|
||||
cptkbd_data->fn_lock = true;
|
||||
cptkbd_data->sensitivity = 0x05;
|
||||
lenovo_features_set_cptkbd(hdev);
|
||||
@@ -835,6 +884,7 @@ static struct hid_driver lenovo_driver = {
|
||||
.probe = lenovo_probe,
|
||||
.remove = lenovo_remove,
|
||||
.raw_event = lenovo_raw_event,
|
||||
+ .event = lenovo_event,
|
||||
};
|
||||
module_hid_driver(lenovo_driver);
|
||||
|
||||
--
|
||||
2.3.2
|
||||
|
88
alx-kernel-bz70761-c46.patch
Normal file
88
alx-kernel-bz70761-c46.patch
Normal file
|
@ -0,0 +1,88 @@
|
|||
From https://bugzilla.kernel.org/show_bug.cgi?id=70761#c46
|
||||
|
||||
@@ -, +, @@
|
||||
---
|
||||
drivers/net/ethernet/atheros/alx/hw.c | 10 +++++-----
|
||||
drivers/net/ethernet/atheros/alx/hw.h | 9 ++++++---
|
||||
drivers/net/ethernet/atheros/alx/main.c | 7 +++----
|
||||
3 files changed, 14 insertions(+), 12 deletions(-)
|
||||
--- a/drivers/net/ethernet/atheros/alx/hw.c
|
||||
+++ a/drivers/net/ethernet/atheros/alx/hw.c
|
||||
@@ -958,13 +958,13 @@ void alx_configure_basic(struct alx_hw *hw)
|
||||
alx_write_mem32(hw, ALX_TINT_TPD_THRSHLD, hw->ith_tpd);
|
||||
alx_write_mem32(hw, ALX_TINT_TIMER, hw->imt);
|
||||
|
||||
- raw_mtu = hw->mtu + ETH_HLEN;
|
||||
- alx_write_mem32(hw, ALX_MTU, raw_mtu + 8);
|
||||
- if (raw_mtu > ALX_MTU_JUMBO_TH)
|
||||
+ raw_mtu = ALX_RAW_MTU(hw->mtu);
|
||||
+ alx_write_mem32(hw, ALX_MTU, raw_mtu);
|
||||
+ if (raw_mtu > (ALX_MTU_JUMBO_TH + ETH_FCS_LEN + VLAN_HLEN))
|
||||
hw->rx_ctrl &= ~ALX_MAC_CTRL_FAST_PAUSE;
|
||||
|
||||
- if ((raw_mtu + 8) < ALX_TXQ1_JUMBO_TSO_TH)
|
||||
- val = (raw_mtu + 8 + 7) >> 3;
|
||||
+ if ((raw_mtu) < ALX_TXQ1_JUMBO_TSO_TH)
|
||||
+ val = (raw_mtu + 7) >> 3;
|
||||
else
|
||||
val = ALX_TXQ1_JUMBO_TSO_TH >> 3;
|
||||
alx_write_mem32(hw, ALX_TXQ1, val | ALX_TXQ1_ERRLGPKT_DROP_EN);
|
||||
--- a/drivers/net/ethernet/atheros/alx/hw.h
|
||||
+++ a/drivers/net/ethernet/atheros/alx/hw.h
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/mdio.h>
|
||||
#include <linux/pci.h>
|
||||
+#include <linux/if_vlan.h>
|
||||
#include "reg.h"
|
||||
|
||||
/* Transmit Packet Descriptor, contains 4 32-bit words.
|
||||
@@ -343,12 +344,14 @@ struct alx_rrd {
|
||||
ALX_RSS_HASH_TYPE_IPV4_TCP | \
|
||||
ALX_RSS_HASH_TYPE_IPV6 | \
|
||||
ALX_RSS_HASH_TYPE_IPV6_TCP)
|
||||
-#define ALX_DEF_RXBUF_SIZE 1536
|
||||
+#define ALX_FRAME_PAD 16
|
||||
+#define ALX_RAW_MTU(_mtu) (_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN)
|
||||
+#define ALX_MAX_FRAME_LEN(_mtu) (ALIGN((ALX_RAW_MTU(_mtu) + ALX_FRAME_PAD), 8))
|
||||
+#define ALX_DEF_RXBUF_SIZE ALX_MAX_FRAME_LEN(1500)
|
||||
#define ALX_MAX_JUMBO_PKT_SIZE (9*1024)
|
||||
#define ALX_MAX_TSO_PKT_SIZE (7*1024)
|
||||
#define ALX_MAX_FRAME_SIZE ALX_MAX_JUMBO_PKT_SIZE
|
||||
-#define ALX_MIN_FRAME_SIZE 68
|
||||
-#define ALX_RAW_MTU(_mtu) (_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN)
|
||||
+#define ALX_MIN_FRAME_SIZE (ETH_ZLEN + ETH_FCS_LEN + VLAN_HLEN)
|
||||
|
||||
#define ALX_MAX_RX_QUEUES 8
|
||||
#define ALX_MAX_TX_QUEUES 4
|
||||
--- a/drivers/net/ethernet/atheros/alx/main.c
|
||||
+++ a/drivers/net/ethernet/atheros/alx/main.c
|
||||
@@ -705,7 +705,7 @@ static int alx_init_sw(struct alx_priv *alx)
|
||||
|
||||
hw->smb_timer = 400;
|
||||
hw->mtu = alx->dev->mtu;
|
||||
- alx->rxbuf_size = ALIGN(ALX_RAW_MTU(hw->mtu), 8);
|
||||
+ alx->rxbuf_size = ALX_MAX_FRAME_LEN(hw->mtu);
|
||||
alx->tx_ringsz = 256;
|
||||
alx->rx_ringsz = 512;
|
||||
hw->imt = 200;
|
||||
@@ -806,7 +806,7 @@ static void alx_reinit(struct alx_priv *alx)
|
||||
static int alx_change_mtu(struct net_device *netdev, int mtu)
|
||||
{
|
||||
struct alx_priv *alx = netdev_priv(netdev);
|
||||
- int max_frame = mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
|
||||
+ int max_frame = ALX_MAX_FRAME_LEN(mtu);
|
||||
|
||||
if ((max_frame < ALX_MIN_FRAME_SIZE) ||
|
||||
(max_frame > ALX_MAX_FRAME_SIZE))
|
||||
@@ -817,8 +817,7 @@ static int alx_change_mtu(struct net_device *netdev, int mtu)
|
||||
|
||||
netdev->mtu = mtu;
|
||||
alx->hw.mtu = mtu;
|
||||
- alx->rxbuf_size = mtu > ALX_DEF_RXBUF_SIZE ?
|
||||
- ALIGN(max_frame, 8) : ALX_DEF_RXBUF_SIZE;
|
||||
+ alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE);
|
||||
netdev_update_features(netdev);
|
||||
if (netif_running(netdev))
|
||||
alx_reinit(alx);
|
||||
--
|
|
@ -0,0 +1,33 @@
|
|||
>From 9f04e51293b130474504216a477bb2a73cbf59e1 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Thu, 22 Mar 2012 22:29:11 +0200
|
||||
Subject: [PATCH] ata: prefer ata drivers over ide drivers when both are built
|
||||
|
||||
Currently the old IDE drivers are preferred over ATA drivers when both
|
||||
are built, since ide/ is listed first in drivers/Makefile and therefore
|
||||
the IDE drivers end up before ATA drivers in modules.order which is used
|
||||
by depmod/modprobe for module ordering.
|
||||
|
||||
Change it so that ATA drivers are preferred over IDE driver by moving
|
||||
the ide/ entry under ata/ in drivers/Makefile.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
---
|
||||
drivers/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/Makefile b/drivers/Makefile
|
||||
index 932e8bf..e8df3d0 100644
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -64,9 +64,9 @@ obj-y += base/ block/ misc/ mfd/ nfc/
|
||||
obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/
|
||||
obj-$(CONFIG_NUBUS) += nubus/
|
||||
obj-y += macintosh/
|
||||
-obj-$(CONFIG_IDE) += ide/
|
||||
obj-$(CONFIG_SCSI) += scsi/
|
||||
obj-$(CONFIG_ATA) += ata/
|
||||
+obj-$(CONFIG_IDE) += ide/
|
||||
obj-$(CONFIG_TARGET_CORE) += target/
|
||||
obj-$(CONFIG_MTD) += mtd/
|
||||
obj-$(CONFIG_SPI) += spi/
|
22
audit-make-it-less-verbose.patch
Normal file
22
audit-make-it-less-verbose.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
It seems, if audit itself is not installed and therefore nothing listens
|
||||
to the messages from the kernel's audit subsystem, the latter spams the
|
||||
kernel log with such messages.
|
||||
|
||||
Let us make them debug-level and thus invisible by default.
|
||||
|
||||
http://bugs.rosalinux.ru/show_bug.cgi?id=6235
|
||||
http://bugs.rosalinux.ru/show_bug.cgi?id=6459
|
||||
|
||||
diff --git a/kernel/audit.c b/kernel/audit.c
|
||||
index 1c13e42..56270ce 100644
|
||||
--- a/kernel/audit.c
|
||||
+++ b/kernel/audit.c
|
||||
@@ -396,7 +396,7 @@ static void audit_printk_skb(struct sk_buff *skb)
|
||||
|
||||
if (nlh->nlmsg_type != AUDIT_EOE) {
|
||||
if (printk_ratelimit())
|
||||
- pr_notice("type=%d %s\n", nlh->nlmsg_type, data);
|
||||
+ pr_debug("type=%d %s\n", nlh->nlmsg_type, data);
|
||||
else
|
||||
audit_log_lost("printk limit exceeded");
|
||||
}
|
21
block-floppy-disable-pnp-modalias.patch
Normal file
21
block-floppy-disable-pnp-modalias.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
Disable floppy autoloading as it makes systems without real hw,
|
||||
but that has the pnp headers hang.
|
||||
|
||||
See https://bugs.mageia.org/show_bug.cgi?id=4696
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
diff -Nurp linux-3.3.3-rc1/drivers/block/floppy.c.orig linux-3.3.3-rc1/drivers/block/floppy.c
|
||||
--- linux-3.3.3-rc1/drivers/block/floppy.c.orig 2012-03-19 01:15:34.000000000 +0200
|
||||
+++ linux-3.3.3-rc1/drivers/block/floppy.c 2012-04-22 02:58:10.238498303 +0300
|
||||
@@ -4621,8 +4621,7 @@ static const struct pnp_device_id floppy
|
||||
{"PNP0700", 0},
|
||||
{}
|
||||
};
|
||||
-
|
||||
-MODULE_DEVICE_TABLE(pnp, floppy_pnpids);
|
||||
+/* MODULE_DEVICE_TABLE(pnp, floppy_pnpids); */
|
||||
|
||||
#else
|
||||
|
14
bluetooth-add-support-for-BCM43142A0.patch
Normal file
14
bluetooth-add-support-for-BCM43142A0.patch
Normal file
|
@ -0,0 +1,14 @@
|
|||
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
|
||||
index 8bfc4c2..a176a02 100644
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -117,6 +117,9 @@ static const struct usb_device_id btusb_table[] = {
|
||||
|
||||
/* Broadcom BCM20702B0 (Dynex/Insignia) */
|
||||
{ USB_DEVICE(0x19ff, 0x0239), .driver_info = BTUSB_BCM_PATCHRAM },
|
||||
+
|
||||
+ /* Broadcom BCM43142A0 */
|
||||
+ { USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM },
|
||||
|
||||
/* Foxconn - Hon Hai */
|
||||
{ USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01),
|
|
@ -54,42 +54,42 @@ index d9b1fef..ab546f4 100644
|
|||
@@ -19,23 +19,16 @@ endif
|
||||
unexport CONFIG_
|
||||
|
||||
xconfig: $(obj)/qconf 3rdparty/Makefile
|
||||
xconfig: $(obj)/qconf
|
||||
- $< $(silent) $(Kconfig)
|
||||
|
||||
gconfig: $(obj)/gconf 3rdparty/Makefile
|
||||
gconfig: $(obj)/gconf
|
||||
- $< $(silent) $(Kconfig)
|
||||
|
||||
menuconfig: $(obj)/mconf 3rdparty/Makefile
|
||||
menuconfig: $(obj)/mconf
|
||||
- $< $(silent) $(Kconfig)
|
||||
|
||||
config: $(obj)/conf 3rdparty/Makefile
|
||||
config: $(obj)/conf
|
||||
- $< $(silent) --oldaskconfig $(Kconfig)
|
||||
|
||||
nconfig: $(obj)/nconf 3rdparty/Makefile
|
||||
nconfig: $(obj)/nconf
|
||||
- $< $(silent) $(Kconfig)
|
||||
|
||||
silentoldconfig: $(obj)/conf 3rdparty/Makefile
|
||||
silentoldconfig: $(obj)/conf
|
||||
- $(Q)mkdir -p include/config include/generated
|
||||
- $< $(silent) --$@ $(Kconfig)
|
||||
|
||||
localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf 3rdparty/Makefile
|
||||
localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
|
||||
$(Q)mkdir -p include/config include/generated
|
||||
@@ -81,7 +74,6 @@ simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \
|
||||
PHONY += $(simple-targets)
|
||||
|
||||
$(simple-targets): $(obj)/conf 3rdparty/Makefile
|
||||
$(simple-targets): $(obj)/conf
|
||||
- $< $(silent) --$@ $(Kconfig)
|
||||
|
||||
PHONY += oldnoconfig savedefconfig defconfig
|
||||
|
||||
@@ -91,18 +83,10 @@ PHONY += oldnoconfig savedefconfig defco
|
||||
oldnoconfig: olddefconfig 3rdparty/Makefile
|
||||
oldnoconfig: olddefconfig
|
||||
|
||||
savedefconfig: $(obj)/conf 3rdparty/Makefile
|
||||
savedefconfig: $(obj)/conf
|
||||
- $< $(silent) --$@=defconfig $(Kconfig)
|
||||
|
||||
defconfig: $(obj)/conf 3rdparty/Makefile
|
||||
defconfig: $(obj)/conf
|
||||
-ifeq ($(KBUILD_DEFCONFIG),)
|
||||
- $< $(silent) --defconfig $(Kconfig)
|
||||
-else
|
||||
|
@ -97,7 +97,7 @@ index d9b1fef..ab546f4 100644
|
|||
- $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
|
||||
-endif
|
||||
|
||||
%_defconfig: $(obj)/conf 3rdparty/Makefile
|
||||
%_defconfig: $(obj)/conf
|
||||
- $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
|
||||
|
||||
configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@)
|
||||
|
|
49
drm-cirrus-Use-16bpp-as-default.patch
Normal file
49
drm-cirrus-Use-16bpp-as-default.patch
Normal file
|
@ -0,0 +1,49 @@
|
|||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Fri, 25 Jan 2013 17:08:03 +0100
|
||||
Subject: [PATCH] drm/cirrus: Use 16bpp as default
|
||||
Patch-mainline: Submitted
|
||||
References: bnc#799216
|
||||
|
||||
We've got a bug report that GNOME on QEMU shows wrong colors.
|
||||
It turned out that it's because Cairo doesn't support 24bpp well.
|
||||
This hasn't been an issue until now because we (at least SUSE and
|
||||
Fedora) have a patch to use 16bpp for QEMU in Xorg cirrus UMS driver.
|
||||
|
||||
Since cirrus KMS driver is mainly targeted for the use on QEMU/KVM, we
|
||||
should choose 16bpp as default, too.
|
||||
|
||||
Also, it's not convenient to set the default bpp in multiple places.
|
||||
cirrus_fbdev_init() should check the original preferred depth set in
|
||||
cirrus_modeset_init().
|
||||
|
||||
Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=799216
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
|
||||
---
|
||||
drivers/gpu/drm/cirrus/cirrus_fbdev.c | 2 +-
|
||||
drivers/gpu/drm/cirrus/cirrus_mode.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
|
||||
+++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
|
||||
@@ -273,7 +273,7 @@ int cirrus_fbdev_init(struct cirrus_devi
|
||||
{
|
||||
struct cirrus_fbdev *gfbdev;
|
||||
int ret;
|
||||
- int bpp_sel = 24;
|
||||
+ int bpp_sel = cdev->dev->mode_config.preferred_depth;
|
||||
|
||||
/*bpp_sel = 8;*/
|
||||
gfbdev = kzalloc(sizeof(struct cirrus_fbdev), GFP_KERNEL);
|
||||
--- a/drivers/gpu/drm/cirrus/cirrus_mode.c
|
||||
+++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
|
||||
@@ -588,7 +588,7 @@ int cirrus_modeset_init(struct cirrus_de
|
||||
cdev->dev->mode_config.max_height = CIRRUS_MAX_FB_HEIGHT;
|
||||
|
||||
cdev->dev->mode_config.fb_base = cdev->mc.vram_base;
|
||||
- cdev->dev->mode_config.preferred_depth = 24;
|
||||
+ cdev->dev->mode_config.preferred_depth = 16;
|
||||
/* don't prefer a shadow on virt GPU */
|
||||
cdev->dev->mode_config.prefer_shadow = 0;
|
||||
|
35763
fs-aufs4.patch
Normal file
35763
fs-aufs4.patch
Normal file
File diff suppressed because it is too large
Load diff
31
hp-wmi-rfkill-fix.patch
Normal file
31
hp-wmi-rfkill-fix.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
This patch fixes the problem encountered on many HP laptops: in some cases,
|
||||
WiFi becomes hard-blocked and cannot be unblocked since then. Seen that on
|
||||
HP 6730b and others.
|
||||
|
||||
This is https://bugzilla.kernel.org/show_bug.cgi?id=69131
|
||||
|
||||
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
|
||||
index 0669731..37000f0 100644
|
||||
--- a/drivers/platform/x86/hp-wmi.c
|
||||
+++ b/drivers/platform/x86/hp-wmi.c
|
||||
@@ -714,6 +714,11 @@ static int __init hp_wmi_rfkill_setup(struct platform_device *device)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
+ err = hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1, &wireless,
|
||||
+ sizeof(wireless), 0);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
if (wireless & 0x1) {
|
||||
wifi_rfkill = rfkill_alloc("hp-wifi", &device->dev,
|
||||
RFKILL_TYPE_WLAN,
|
||||
@@ -901,7 +906,7 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
|
||||
gps_rfkill = NULL;
|
||||
rfkill2_count = 0;
|
||||
|
||||
- if (hp_wmi_bios_2009_later() || hp_wmi_rfkill_setup(device))
|
||||
+ if (hp_wmi_rfkill_setup(device))
|
||||
hp_wmi_rfkill2_setup(device);
|
||||
|
||||
err = device_create_file(&device->dev, &dev_attr_display);
|
19
include-kbuild-export-pci_ids.patch
Normal file
19
include-kbuild-export-pci_ids.patch
Normal file
|
@ -0,0 +1,19 @@
|
|||
From Thierry Vignaud <tvignaud@mandriva.com> (Mandriva)
|
||||
|
||||
We now lacks /usr/include/linux/pci_ids.h which break ldetect build...
|
||||
Can you readd it please?
|
||||
Thanks
|
||||
---
|
||||
include/linux/Kbuild | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- linux/include/uapi/linux/Kbuild.include-kbuild-export-pci_ids.orig
|
||||
+++ linux/include/uapi/linux/Kbuild
|
||||
@@ -277,6 +277,7 @@ header-y += param.h
|
||||
header-y += parport.h
|
||||
header-y += patchkey.h
|
||||
header-y += pci.h
|
||||
+header-y += pci_ids.h
|
||||
header-y += pci_regs.h
|
||||
header-y += perf_event.h
|
||||
header-y += personality.h
|
20
inotify-increase-max-user-watches.patch
Normal file
20
inotify-increase-max-user-watches.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
http://bugs.rosalinux.ru/show_bug.cgi?id=4791
|
||||
|
||||
It seems, many applications need max_user_watches to be at least 32768.
|
||||
Let us set the default value of this parameter accordingly.
|
||||
|
||||
Signed-off-by: Eugene A. Shatokhin <eugene.shatokhin@rosalab.ru>
|
||||
|
||||
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
|
||||
index 78a2ca3..ecd1120 100644
|
||||
--- a/fs/notify/inotify/inotify_user.c
|
||||
+++ b/fs/notify/inotify/inotify_user.c
|
||||
@@ -809,7 +809,7 @@ static int __init inotify_user_setup(void)
|
||||
|
||||
inotify_max_queued_events = 16384;
|
||||
inotify_max_user_instances = 128;
|
||||
- inotify_max_user_watches = 8192;
|
||||
+ inotify_max_user_watches = 32768;
|
||||
|
||||
return 0;
|
||||
}
|
8437
kernel-i586.config
Normal file
8437
kernel-i586.config
Normal file
File diff suppressed because it is too large
Load diff
138
kernel-nrj-desktop-i586.config
Normal file
138
kernel-nrj-desktop-i586.config
Normal file
|
@ -0,0 +1,138 @@
|
|||
# CONFIG_HZ_300 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_RDS_RDMA=m
|
||||
CONFIG_TIPC_MEDIA_IB=y
|
||||
CONFIG_NET_9P_RDMA=m
|
||||
CONFIG_BLK_DEV_DRBD=m
|
||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||
CONFIG_FUSION=y
|
||||
CONFIG_FUSION_SPI=m
|
||||
CONFIG_FUSION_FC=m
|
||||
CONFIG_FUSION_SAS=m
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
CONFIG_FUSION_CTL=m
|
||||
CONFIG_FUSION_LAN=m
|
||||
CONFIG_FUSION_LOGGING=y
|
||||
CONFIG_ARCNET=m
|
||||
CONFIG_ARCNET_1201=m
|
||||
CONFIG_ARCNET_1051=m
|
||||
CONFIG_ARCNET_RAW=m
|
||||
CONFIG_ARCNET_CAP=m
|
||||
CONFIG_ARCNET_COM90xx=m
|
||||
CONFIG_ARCNET_COM90xxIO=m
|
||||
CONFIG_ARCNET_RIM_I=m
|
||||
CONFIG_ARCNET_COM20020=m
|
||||
CONFIG_ARCNET_COM20020_ISA=m
|
||||
CONFIG_ARCNET_COM20020_PCI=m
|
||||
CONFIG_ARCNET_COM20020_CS=m
|
||||
CONFIG_ATM_DRIVERS=y
|
||||
CONFIG_ATM_DUMMY=m
|
||||
CONFIG_ATM_TCP=m
|
||||
CONFIG_ATM_LANAI=m
|
||||
CONFIG_ATM_ENI=m
|
||||
# CONFIG_ATM_ENI_DEBUG is not set
|
||||
# CONFIG_ATM_ENI_TUNE_BURST is not set
|
||||
CONFIG_ATM_FIRESTREAM=m
|
||||
CONFIG_ATM_ZATM=m
|
||||
# CONFIG_ATM_ZATM_DEBUG is not set
|
||||
CONFIG_ATM_NICSTAR=m
|
||||
CONFIG_ATM_NICSTAR_USE_SUNI=y
|
||||
CONFIG_ATM_NICSTAR_USE_IDT77105=y
|
||||
CONFIG_ATM_IDT77252=m
|
||||
# CONFIG_ATM_IDT77252_DEBUG is not set
|
||||
# CONFIG_ATM_IDT77252_RCV_ALL is not set
|
||||
CONFIG_ATM_IDT77252_USE_SUNI=y
|
||||
CONFIG_ATM_AMBASSADOR=m
|
||||
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
|
||||
CONFIG_ATM_HORIZON=m
|
||||
# CONFIG_ATM_HORIZON_DEBUG is not set
|
||||
CONFIG_ATM_IA=m
|
||||
# CONFIG_ATM_IA_DEBUG is not set
|
||||
CONFIG_ATM_FORE200E=m
|
||||
CONFIG_ATM_FORE200E_USE_TASKLET=y
|
||||
CONFIG_ATM_FORE200E_TX_RETRY=16
|
||||
CONFIG_ATM_FORE200E_DEBUG=0
|
||||
CONFIG_ATM_HE=m
|
||||
CONFIG_ATM_HE_USE_SUNI=y
|
||||
CONFIG_ATM_SOLOS=m
|
||||
CONFIG_FDDI=y
|
||||
CONFIG_DEFXX=m
|
||||
# CONFIG_DEFXX_MMIO is not set
|
||||
CONFIG_SKFP=m
|
||||
CONFIG_HIPPI=y
|
||||
CONFIG_ROADRUNNER=m
|
||||
# CONFIG_ROADRUNNER_LARGE_RINGS is not set
|
||||
CONFIG_WAN=y
|
||||
CONFIG_HOSTESS_SV11=m
|
||||
CONFIG_COSA=m
|
||||
CONFIG_LANMEDIA=m
|
||||
CONFIG_SEALEVEL_4021=m
|
||||
CONFIG_HDLC=m
|
||||
CONFIG_HDLC_RAW=m
|
||||
CONFIG_HDLC_RAW_ETH=m
|
||||
CONFIG_HDLC_CISCO=m
|
||||
CONFIG_HDLC_FR=m
|
||||
CONFIG_HDLC_PPP=m
|
||||
CONFIG_HDLC_X25=m
|
||||
CONFIG_PCI200SYN=m
|
||||
CONFIG_WANXL=m
|
||||
CONFIG_PC300TOO=m
|
||||
CONFIG_N2=m
|
||||
CONFIG_C101=m
|
||||
CONFIG_FARSYNC=m
|
||||
CONFIG_DSCC4=m
|
||||
CONFIG_DSCC4_PCISYNC=y
|
||||
# CONFIG_DSCC4_PCI_RST is not set
|
||||
CONFIG_DLCI=m
|
||||
CONFIG_DLCI_MAX=8
|
||||
CONFIG_SDLA=m
|
||||
CONFIG_LAPBETHER=m
|
||||
CONFIG_X25_ASY=m
|
||||
CONFIG_SBNI=m
|
||||
CONFIG_SBNI_MULTILINE=y
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
|
||||
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
CONFIG_CAPI_EICON=y
|
||||
CONFIG_ISDN_DIVAS=m
|
||||
CONFIG_ISDN_DIVAS_BRIPCI=y
|
||||
CONFIG_ISDN_DIVAS_PRIPCI=y
|
||||
CONFIG_ISDN_DIVAS_DIVACAPI=m
|
||||
CONFIG_ISDN_DIVAS_USERIDI=m
|
||||
CONFIG_ISDN_DIVAS_MAINT=m
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_USER_MEM=y
|
||||
CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
|
||||
CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_CXGB3=m
|
||||
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_I40IW=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_NES=m
|
||||
# CONFIG_INFINIBAND_NES_DEBUG is not set
|
||||
CONFIG_INFINIBAND_OCRDMA=m
|
||||
CONFIG_INFINIBAND_USNIC=m
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
|
||||
CONFIG_INFINIBAND_SRP=m
|
||||
CONFIG_INFINIBAND_SRPT=m
|
||||
CONFIG_INFINIBAND_ISER=m
|
||||
CONFIG_INFINIBAND_ISERT=m
|
||||
CONFIG_STAGING_RDMA=m
|
||||
CONFIG_LNET_XPRT_IB=m
|
||||
CONFIG_SUNRPC_XPRT_RDMA=m
|
||||
# CONFIG_MLX5_INFINIBAND is not set
|
132
kernel-nrj-desktop-x86_64.config
Normal file
132
kernel-nrj-desktop-x86_64.config
Normal file
|
@ -0,0 +1,132 @@
|
|||
CONFIG_NR_CPUS=64
|
||||
# CONFIG_HZ_300 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_USER_MEM=y
|
||||
CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
|
||||
CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_QIB=m
|
||||
CONFIG_INFINIBAND_QIB_DCA=y
|
||||
CONFIG_INFINIBAND_CXGB3=m
|
||||
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_I40IW=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_NES=m
|
||||
# CONFIG_INFINIBAND_NES_DEBUG is not set
|
||||
CONFIG_INFINIBAND_OCRDMA=m
|
||||
CONFIG_INFINIBAND_USNIC=m
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
# CONFIG_INFINIBAND_IPOIB_CM is not set
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
|
||||
CONFIG_INFINIBAND_SRP=m
|
||||
CONFIG_INFINIBAND_SRPT=m
|
||||
CONFIG_INFINIBAND_ISER=m
|
||||
CONFIG_INFINIBAND_ISERT=m
|
||||
CONFIG_INFINIBAND_RDMAVT=m
|
||||
CONFIG_RDS_RDMA=m
|
||||
CONFIG_TIPC_MEDIA_IB=y
|
||||
CONFIG_NET_9P_RDMA=m
|
||||
CONFIG_STAGING_RDMA=m
|
||||
CONFIG_INFINIBAND_HFI1=m
|
||||
# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set
|
||||
CONFIG_HFI1_VERBS_31BIT_PSN=y
|
||||
# CONFIG_SDMA_VERBOSITY is not set
|
||||
CONFIG_LNET_XPRT_IB=m
|
||||
CONFIG_SUNRPC_XPRT_RDMA=m
|
||||
CONFIG_ARCNET=m
|
||||
CONFIG_ARCNET_1201=m
|
||||
CONFIG_ARCNET_1051=m
|
||||
CONFIG_ARCNET_RAW=m
|
||||
CONFIG_ARCNET_CAP=m
|
||||
CONFIG_ARCNET_COM90xx=m
|
||||
CONFIG_ARCNET_COM90xxIO=m
|
||||
CONFIG_ARCNET_RIM_I=m
|
||||
CONFIG_ARCNET_COM20020=m
|
||||
CONFIG_ARCNET_COM20020_PCI=m
|
||||
CONFIG_ARCNET_COM20020_CS=m
|
||||
CONFIG_ATM_DRIVERS=y
|
||||
# CONFIG_ATM_DUMMY is not set
|
||||
CONFIG_ATM_TCP=m
|
||||
CONFIG_ATM_LANAI=m
|
||||
CONFIG_ATM_ENI=m
|
||||
# CONFIG_ATM_ENI_DEBUG is not set
|
||||
# CONFIG_ATM_ENI_TUNE_BURST is not set
|
||||
CONFIG_ATM_FIRESTREAM=m
|
||||
CONFIG_ATM_ZATM=m
|
||||
# CONFIG_ATM_ZATM_DEBUG is not set
|
||||
# CONFIG_ATM_NICSTAR is not set
|
||||
CONFIG_ATM_IDT77252=m
|
||||
# CONFIG_ATM_IDT77252_DEBUG is not set
|
||||
# CONFIG_ATM_IDT77252_RCV_ALL is not set
|
||||
CONFIG_ATM_IDT77252_USE_SUNI=y
|
||||
CONFIG_ATM_AMBASSADOR=m
|
||||
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
|
||||
CONFIG_ATM_HORIZON=m
|
||||
# CONFIG_ATM_HORIZON_DEBUG is not set
|
||||
CONFIG_ATM_IA=m
|
||||
# CONFIG_ATM_IA_DEBUG is not set
|
||||
CONFIG_ATM_FORE200E=m
|
||||
CONFIG_ATM_FORE200E_USE_TASKLET=y
|
||||
CONFIG_ATM_FORE200E_TX_RETRY=16
|
||||
CONFIG_ATM_FORE200E_DEBUG=0
|
||||
CONFIG_ATM_HE=m
|
||||
CONFIG_ATM_HE_USE_SUNI=y
|
||||
CONFIG_ATM_SOLOS=m
|
||||
CONFIG_BLK_DEV_DRBD=m
|
||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||
CONFIG_FUSION=y
|
||||
CONFIG_FUSION_SPI=m
|
||||
CONFIG_FUSION_FC=m
|
||||
CONFIG_FUSION_SAS=m
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
CONFIG_FUSION_CTL=m
|
||||
CONFIG_FUSION_LAN=m
|
||||
CONFIG_FUSION_LOGGING=y
|
||||
CONFIG_FDDI=y
|
||||
CONFIG_DEFXX=m
|
||||
# CONFIG_DEFXX_MMIO is not set
|
||||
CONFIG_SKFP=m
|
||||
CONFIG_WAN=y
|
||||
CONFIG_LANMEDIA=m
|
||||
CONFIG_HDLC=m
|
||||
CONFIG_HDLC_RAW=m
|
||||
CONFIG_HDLC_RAW_ETH=m
|
||||
CONFIG_HDLC_CISCO=m
|
||||
CONFIG_HDLC_FR=m
|
||||
CONFIG_HDLC_PPP=m
|
||||
CONFIG_HDLC_X25=m
|
||||
CONFIG_PCI200SYN=m
|
||||
CONFIG_WANXL=m
|
||||
CONFIG_PC300TOO=m
|
||||
CONFIG_FARSYNC=m
|
||||
CONFIG_DSCC4=m
|
||||
# CONFIG_DSCC4_PCISYNC is not set
|
||||
# CONFIG_DSCC4_PCI_RST is not set
|
||||
CONFIG_DLCI=m
|
||||
CONFIG_DLCI_MAX=8
|
||||
CONFIG_LAPBETHER=m
|
||||
CONFIG_X25_ASY=m
|
||||
CONFIG_SBNI=m
|
||||
CONFIG_SBNI_MULTILINE=y
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
CONFIG_CAPI_EICON=y
|
||||
CONFIG_ISDN_DIVAS=m
|
||||
CONFIG_ISDN_DIVAS_BRIPCI=y
|
||||
CONFIG_ISDN_DIVAS_PRIPCI=y
|
||||
CONFIG_ISDN_DIVAS_DIVACAPI=m
|
||||
CONFIG_ISDN_DIVAS_USERIDI=m
|
||||
CONFIG_ISDN_DIVAS_MAINT=m
|
||||
# CONFIG_MLX5_INFINIBAND is not set
|
13
kernel-nrj-laptop-i586.config
Normal file
13
kernel-nrj-laptop-i586.config
Normal file
|
@ -0,0 +1,13 @@
|
|||
CONFIG_HZ_300=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=300
|
||||
# CONFIG_BLK_DEV_DRBD is not set
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_ATM_DRIVERS is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_CAPI_AVM is not set
|
||||
# CONFIG_CAPI_EICON is not set
|
||||
# CONFIG_INFINIBAND is not set
|
13
kernel-nrj-laptop-x86_64.config
Normal file
13
kernel-nrj-laptop-x86_64.config
Normal file
|
@ -0,0 +1,13 @@
|
|||
CONFIG_NR_CPUS=32
|
||||
CONFIG_HZ_300=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=300
|
||||
# CONFIG_INFINIBAND is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_ATM_DRIVERS is not set
|
||||
# CONFIG_BLK_DEV_DRBD is not set
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_CAPI_AVM is not set
|
||||
# CONFIG_CAPI_EICON is not set
|
8219
kernel-x86_64.config
Normal file
8219
kernel-x86_64.config
Normal file
File diff suppressed because it is too large
Load diff
1038
kernel.spec
1038
kernel.spec
File diff suppressed because it is too large
Load diff
20
perf-python-ext-link-with-dl.patch
Normal file
20
perf-python-ext-link-with-dl.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- linux-3.14/tools/perf/util/setup.py 2014-07-11 18:40:34.927029845 +0400
|
||||
+++ linux-3.14/tools/perf/util/setup.py.new 2014-07-11 18:38:50.000000000 +0400
|
||||
@@ -22,6 +22,9 @@ cflags = getenv('CFLAGS', '').split()
|
||||
# switch off several checks (need to be at the end of cflags list)
|
||||
cflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter' ]
|
||||
|
||||
+libs = getenv('LIBS', '').split()
|
||||
+libs += ['dl']
|
||||
+
|
||||
build_lib = getenv('PYTHON_EXTBUILD_LIB')
|
||||
build_tmp = getenv('PYTHON_EXTBUILD_TMP')
|
||||
libtraceevent = getenv('LIBTRACEEVENT')
|
||||
@@ -35,6 +38,7 @@ perf = Extension('perf',
|
||||
include_dirs = ['util/include'],
|
||||
extra_compile_args = cflags,
|
||||
extra_objects = [libtraceevent, libapikfs],
|
||||
+ libraries = libs,
|
||||
)
|
||||
|
||||
setup(name='perf',
|
13
perf-xmlto-skip-validation.patch
Normal file
13
perf-xmlto-skip-validation.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/tools/perf/Documentation/Makefile b/tools/perf/Documentation/Makefile
|
||||
index 3ba1c0b..2f5070f 100644
|
||||
--- a/tools/perf/Documentation/Makefile
|
||||
+++ b/tools/perf/Documentation/Makefile
|
||||
@@ -49,7 +49,7 @@ man7dir=$(mandir)/man7
|
||||
ASCIIDOC=asciidoc
|
||||
ASCIIDOC_EXTRA = --unsafe
|
||||
MANPAGE_XSL = manpage-normal.xsl
|
||||
-XMLTO_EXTRA =
|
||||
+XMLTO_EXTRA = --skip-validation
|
||||
INSTALL?=install
|
||||
RM ?= rm -f
|
||||
DOC_REF = origin/man
|
453
sanitize-memory.patch
Normal file
453
sanitize-memory.patch
Normal file
|
@ -0,0 +1,453 @@
|
|||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index bfcb1a6..002d1e3 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -2601,6 +2601,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
the specified number of seconds. This is to be used if
|
||||
your oopses keep scrolling off the screen.
|
||||
|
||||
+ pax_sanitize_slab=
|
||||
+ 0/1 to disable/enable slab object sanitization (disabled by
|
||||
+ default).
|
||||
+
|
||||
+ pax_sanitize_pages=
|
||||
+ 0/1 to disable/enable page sanitization (disabled by
|
||||
+ default).
|
||||
+
|
||||
pcbit= [HW,ISDN]
|
||||
|
||||
pcd. [PARIDE]
|
||||
diff --git a/fs/buffer.c b/fs/buffer.c
|
||||
index 20805db..2e8fc69 100644
|
||||
--- a/fs/buffer.c
|
||||
+++ b/fs/buffer.c
|
||||
@@ -3417,7 +3417,7 @@ void __init buffer_init(void)
|
||||
bh_cachep = kmem_cache_create("buffer_head",
|
||||
sizeof(struct buffer_head), 0,
|
||||
(SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
|
||||
- SLAB_MEM_SPREAD),
|
||||
+ SLAB_MEM_SPREAD|SLAB_NO_SANITIZE),
|
||||
NULL);
|
||||
|
||||
/*
|
||||
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||
index c71e373..142b095 100644
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -3427,7 +3427,8 @@ void __init vfs_caches_init(unsigned long mempages)
|
||||
mempages -= reserve;
|
||||
|
||||
names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
|
||||
- SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
|
||||
+ SLAB_HWCACHE_ALIGN|SLAB_PANIC|
|
||||
+ SLAB_NO_SANITIZE, NULL);
|
||||
|
||||
dcache_init();
|
||||
inode_init();
|
||||
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
|
||||
index 9286a46..373f27f 100644
|
||||
--- a/include/linux/highmem.h
|
||||
+++ b/include/linux/highmem.h
|
||||
@@ -189,6 +189,18 @@ static inline void clear_highpage(struct page *page)
|
||||
kunmap_atomic(kaddr);
|
||||
}
|
||||
|
||||
+static inline void sanitize_highpage(struct page *page)
|
||||
+{
|
||||
+ void *kaddr;
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ local_irq_save(flags);
|
||||
+ kaddr = kmap_atomic(page);
|
||||
+ clear_page(kaddr);
|
||||
+ kunmap_atomic(kaddr);
|
||||
+ local_irq_restore(flags);
|
||||
+}
|
||||
+
|
||||
static inline void zero_user_segments(struct page *page,
|
||||
unsigned start1, unsigned end1,
|
||||
unsigned start2, unsigned end2)
|
||||
diff --git a/include/linux/slab.h b/include/linux/slab.h
|
||||
index 76f1fee..ecd9588 100644
|
||||
--- a/include/linux/slab.h
|
||||
+++ b/include/linux/slab.h
|
||||
@@ -23,6 +23,13 @@
|
||||
#define SLAB_DEBUG_FREE 0x00000100UL /* DEBUG: Perform (expensive) checks on free */
|
||||
#define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */
|
||||
#define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */
|
||||
+
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+#define SLAB_NO_SANITIZE 0x00001000UL /* PaX: Do not sanitize objs on free */
|
||||
+#else
|
||||
+#define SLAB_NO_SANITIZE 0x00000000UL
|
||||
+#endif
|
||||
+
|
||||
#define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */
|
||||
#define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */
|
||||
#define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */
|
||||
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
|
||||
index 33d0490..922e4b6 100644
|
||||
--- a/include/linux/slab_def.h
|
||||
+++ b/include/linux/slab_def.h
|
||||
@@ -60,6 +60,10 @@ struct kmem_cache {
|
||||
atomic_t allocmiss;
|
||||
atomic_t freehit;
|
||||
atomic_t freemiss;
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ atomic_t sanitized;
|
||||
+ atomic_t not_sanitized;
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* If debugging is enabled, then the allocator can add additional
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index cf65139..593c24e 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -1792,7 +1792,7 @@ void __init proc_caches_init(void)
|
||||
mm_cachep = kmem_cache_create("mm_struct",
|
||||
sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,
|
||||
SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
|
||||
- vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC);
|
||||
+ vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC | SLAB_NO_SANITIZE);
|
||||
mmap_init();
|
||||
nsproxy_cache_init();
|
||||
}
|
||||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||
index 40e2942..72da026 100644
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -245,6 +245,20 @@ void set_pageblock_migratetype(struct page *page, int migratetype)
|
||||
PB_migrate, PB_migrate_end);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+bool pax_sanitize_pages = false;
|
||||
+static int __init pax_sanitize_pages_setup(char *str)
|
||||
+{
|
||||
+ if (!str)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ pax_sanitize_pages = !!simple_strtol(str, NULL, 0);
|
||||
+ pr_info("%sabled PaX pages sanitization\n", pax_sanitize_pages ? "En" : "Dis");
|
||||
+ return 0;
|
||||
+}
|
||||
+early_param("pax_sanitize_pages", pax_sanitize_pages_setup);
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_DEBUG_VM
|
||||
static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
|
||||
{
|
||||
@@ -783,6 +797,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
|
||||
bool compound = PageCompound(page);
|
||||
int i, bad = 0;
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ unsigned long index = 1UL << order;
|
||||
+#endif
|
||||
+
|
||||
VM_BUG_ON_PAGE(PageTail(page), page);
|
||||
VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);
|
||||
|
||||
@@ -809,6 +827,13 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
|
||||
debug_check_no_obj_freed(page_address(page),
|
||||
PAGE_SIZE << order);
|
||||
}
|
||||
+
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ if (pax_sanitize_pages)
|
||||
+ for (; index; --index)
|
||||
+ sanitize_highpage(page + index - 1);
|
||||
+#endif
|
||||
+
|
||||
arch_free_page(page, order);
|
||||
kernel_map_pages(page, 1 << order, 0);
|
||||
|
||||
diff --git a/mm/rmap.c b/mm/rmap.c
|
||||
index c161a14..afed659 100644
|
||||
--- a/mm/rmap.c
|
||||
+++ b/mm/rmap.c
|
||||
@@ -423,8 +423,10 @@ static void anon_vma_ctor(void *data)
|
||||
void __init anon_vma_init(void)
|
||||
{
|
||||
anon_vma_cachep = kmem_cache_create("anon_vma", sizeof(struct anon_vma),
|
||||
- 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC, anon_vma_ctor);
|
||||
- anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain, SLAB_PANIC);
|
||||
+ 0, SLAB_DESTROY_BY_RCU|SLAB_PANIC|SLAB_NO_SANITIZE,
|
||||
+ anon_vma_ctor);
|
||||
+ anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain,
|
||||
+ SLAB_PANIC|SLAB_NO_SANITIZE);
|
||||
}
|
||||
|
||||
/*
|
||||
diff --git a/mm/slab.c b/mm/slab.c
|
||||
index c4b89ea..b359378 100644
|
||||
--- a/mm/slab.c
|
||||
+++ b/mm/slab.c
|
||||
@@ -318,6 +318,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
|
||||
#define STATS_INC_ALLOCMISS(x) atomic_inc(&(x)->allocmiss)
|
||||
#define STATS_INC_FREEHIT(x) atomic_inc(&(x)->freehit)
|
||||
#define STATS_INC_FREEMISS(x) atomic_inc(&(x)->freemiss)
|
||||
+#define STATS_INC_SANITIZED(x) atomic_inc(&(x)->sanitized)
|
||||
+#define STATS_INC_NOT_SANITIZED(x) atomic_inc(&(x)->not_sanitized)
|
||||
#else
|
||||
#define STATS_INC_ACTIVE(x) do { } while (0)
|
||||
#define STATS_DEC_ACTIVE(x) do { } while (0)
|
||||
@@ -334,6 +336,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
|
||||
#define STATS_INC_ALLOCMISS(x) do { } while (0)
|
||||
#define STATS_INC_FREEHIT(x) do { } while (0)
|
||||
#define STATS_INC_FREEMISS(x) do { } while (0)
|
||||
+#define STATS_INC_SANITIZED(x) do { } while (0)
|
||||
+#define STATS_INC_NOT_SANITIZED(x) do { } while (0)
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
@@ -3357,6 +3361,21 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
|
||||
struct array_cache *ac = cpu_cache_get(cachep);
|
||||
|
||||
check_irq_off();
|
||||
+
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ if (pax_sanitize_slab) {
|
||||
+ if (cachep->flags & (SLAB_POISON | SLAB_NO_SANITIZE))
|
||||
+ STATS_INC_NOT_SANITIZED(cachep);
|
||||
+ else {
|
||||
+ memset(objp, PAX_MEMORY_SANITIZE_VALUE, cachep->object_size);
|
||||
+ if (cachep->ctor)
|
||||
+ cachep->ctor(objp);
|
||||
+
|
||||
+ STATS_INC_SANITIZED(cachep);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
kmemleak_free_recursive(objp, cachep->flags);
|
||||
objp = cache_free_debugcheck(cachep, objp, caller);
|
||||
|
||||
@@ -3989,6 +4008,14 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
|
||||
seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
|
||||
allochit, allocmiss, freehit, freemiss);
|
||||
}
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ {
|
||||
+ unsigned long sanitized = atomic_read(&cachep->sanitized);
|
||||
+ unsigned long not_sanitized = atomic_read(&cachep->not_sanitized);
|
||||
+
|
||||
+ seq_printf(m, " : pax %6lu %6lu", sanitized, not_sanitized);
|
||||
+ }
|
||||
+#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
diff --git a/mm/slab.h b/mm/slab.h
|
||||
index 4c3ac12..948bcb5 100644
|
||||
--- a/mm/slab.h
|
||||
+++ b/mm/slab.h
|
||||
@@ -66,6 +66,15 @@ extern struct list_head slab_caches;
|
||||
/* The slab cache that manages slab cache information */
|
||||
extern struct kmem_cache *kmem_cache;
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+#ifdef CONFIG_X86_64
|
||||
+#define PAX_MEMORY_SANITIZE_VALUE '\xfe'
|
||||
+#else
|
||||
+#define PAX_MEMORY_SANITIZE_VALUE '\xff'
|
||||
+#endif
|
||||
+extern bool pax_sanitize_slab;
|
||||
+#endif
|
||||
+
|
||||
unsigned long calculate_alignment(unsigned long flags,
|
||||
unsigned long align, unsigned long size);
|
||||
|
||||
diff --git a/mm/slab_common.c b/mm/slab_common.c
|
||||
index 999bb34..12d9da6 100644
|
||||
--- a/mm/slab_common.c
|
||||
+++ b/mm/slab_common.c
|
||||
@@ -44,7 +44,11 @@ struct kmem_cache *kmem_cache;
|
||||
* Merge control. If this is set then no merging of slab caches will occur.
|
||||
* (Could be removed. This was introduced to pacify the merge skeptics.)
|
||||
*/
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+static int slab_nomerge = 1;
|
||||
+#else
|
||||
static int slab_nomerge;
|
||||
+#endif
|
||||
|
||||
static int __init setup_slab_nomerge(char *str)
|
||||
{
|
||||
@@ -67,6 +71,20 @@ unsigned int kmem_cache_size(struct kmem_cache *s)
|
||||
}
|
||||
EXPORT_SYMBOL(kmem_cache_size);
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+bool pax_sanitize_slab = false;
|
||||
+static int __init pax_sanitize_slab_setup(char *str)
|
||||
+{
|
||||
+ if (!str)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ pax_sanitize_slab = !!simple_strtol(str, NULL, 0);
|
||||
+ pr_info("%sabled PaX slab sanitization\n", pax_sanitize_slab ? "En" : "Dis");
|
||||
+ return 0;
|
||||
+}
|
||||
+early_param("pax_sanitize_slab", pax_sanitize_slab_setup);
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_DEBUG_VM
|
||||
static int kmem_cache_sanity_check(const char *name, size_t size)
|
||||
{
|
||||
@@ -205,7 +223,11 @@ static inline void destroy_memcg_params(struct kmem_cache *s)
|
||||
*/
|
||||
int slab_unmergeable(struct kmem_cache *s)
|
||||
{
|
||||
- if (slab_nomerge || (s->flags & SLAB_NEVER_MERGE))
|
||||
+ if (slab_nomerge || (s->flags & SLAB_NEVER_MERGE)
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ || pax_sanitize_slab
|
||||
+#endif
|
||||
+ )
|
||||
return 1;
|
||||
|
||||
if (!is_root_cache(s))
|
||||
@@ -228,7 +250,11 @@ struct kmem_cache *find_mergeable(size_t size, size_t align,
|
||||
{
|
||||
struct kmem_cache *s;
|
||||
|
||||
- if (slab_nomerge || (flags & SLAB_NEVER_MERGE))
|
||||
+ if (slab_nomerge || (flags & SLAB_NEVER_MERGE)
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ || pax_sanitize_slab
|
||||
+#endif
|
||||
+ )
|
||||
return NULL;
|
||||
|
||||
if (ctor)
|
||||
@@ -385,6 +411,11 @@ kmem_cache_create(const char *name, size_t size, size_t align,
|
||||
* passed flags.
|
||||
*/
|
||||
flags &= CACHE_CREATE_MASK;
|
||||
+
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ if (flags & SLAB_DESTROY_BY_RCU)
|
||||
+ flags |= SLAB_NO_SANITIZE;
|
||||
+#endif
|
||||
|
||||
s = __kmem_cache_alias(name, size, align, flags, ctor);
|
||||
if (s)
|
||||
diff --git a/mm/slob.c b/mm/slob.c
|
||||
index 94a7fed..48304c3 100644
|
||||
--- a/mm/slob.c
|
||||
+++ b/mm/slob.c
|
||||
@@ -365,6 +365,11 @@ static void slob_free(void *block, int size)
|
||||
return;
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ if (pax_sanitize_slab && !(c && (c->flags & SLAB_NO_SANITIZE)))
|
||||
+ memset(block, PAX_MEMORY_SANITIZE_VALUE, size);
|
||||
+#endif
|
||||
+
|
||||
if (!slob_page_free(sp)) {
|
||||
/* This slob page is about to become partially free. Easy! */
|
||||
sp->units = units;
|
||||
diff --git a/mm/slub.c b/mm/slub.c
|
||||
index 82c4737..b6b4ac0 100644
|
||||
--- a/mm/slub.c
|
||||
+++ b/mm/slub.c
|
||||
@@ -2709,6 +2709,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
|
||||
|
||||
slab_free_hook(s, x);
|
||||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ if (pax_sanitize_slab && !(s->flags & SLAB_NO_SANITIZE)) {
|
||||
+ memset(x, PAX_MEMORY_SANITIZE_VALUE, s->object_size);
|
||||
+ if (s->ctor)
|
||||
+ s->ctor(x);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
redo:
|
||||
/*
|
||||
* Determine the currently cpus per cpu slab.
|
||||
@@ -3050,6 +3058,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
|
||||
s->inuse = size;
|
||||
|
||||
if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
|
||||
+#ifdef CONFIG_PAX_MEMORY_SANITIZE
|
||||
+ (pax_sanitize_slab && !(flags & SLAB_NO_SANITIZE)) ||
|
||||
+#endif
|
||||
s->ctor)) {
|
||||
/*
|
||||
* Relocate free pointer after the object if it is not
|
||||
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
|
||||
index 8e4ac97..5362030 100644
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -3361,12 +3361,14 @@ void __init skb_init(void)
|
||||
skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
|
||||
sizeof(struct sk_buff),
|
||||
0,
|
||||
- SLAB_HWCACHE_ALIGN|SLAB_PANIC,
|
||||
+ SLAB_HWCACHE_ALIGN|SLAB_PANIC|
|
||||
+ SLAB_NO_SANITIZE,
|
||||
NULL);
|
||||
skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache",
|
||||
sizeof(struct sk_buff_fclones),
|
||||
0,
|
||||
- SLAB_HWCACHE_ALIGN|SLAB_PANIC,
|
||||
+ SLAB_HWCACHE_ALIGN|SLAB_PANIC|
|
||||
+ SLAB_NO_SANITIZE,
|
||||
NULL);
|
||||
}
|
||||
|
||||
diff --git a/security/Kconfig b/security/Kconfig
|
||||
index beb86b5..f512247 100644
|
||||
--- a/security/Kconfig
|
||||
+++ b/security/Kconfig
|
||||
@@ -6,6 +6,46 @@ menu "Security options"
|
||||
|
||||
source security/keys/Kconfig
|
||||
|
||||
+menu "Miscellaneous hardening features"
|
||||
+
|
||||
+config PAX_MEMORY_SANITIZE
|
||||
+ bool "Sanitize the freed memory"
|
||||
+ default y
|
||||
+ help
|
||||
+ By saying Y here the kernel will erase memory pages and slab objects
|
||||
+ as soon as they are freed. This in turn reduces the lifetime of data
|
||||
+ stored in them, making it less likely that sensitive information such
|
||||
+ as passwords, cryptographic secrets, etc stay in memory for too long.
|
||||
+
|
||||
+ This is especially useful for programs whose runtime is short, long
|
||||
+ lived processes and the kernel itself benefit from this as long as
|
||||
+ they ensure timely freeing of memory that may hold sensitive
|
||||
+ information.
|
||||
+
|
||||
+ A nice side effect of the sanitization of slab objects is the
|
||||
+ reduction of possible info leaks caused by padding bytes within the
|
||||
+ leaky structures. Use-after-free bugs for structures containing
|
||||
+ pointers can also be detected as dereferencing the sanitized pointer
|
||||
+ will generate an access violation.
|
||||
+
|
||||
+ The tradeoff is performance impact, on a single CPU system kernel
|
||||
+ compilation sees a 3% slowdown, other systems and workloads may vary
|
||||
+ and you are advised to test this feature on your expected workload
|
||||
+ before deploying it.
|
||||
+
|
||||
+ To reduce the performance penalty by sanitizing pages only, albeit
|
||||
+ limiting the effectiveness of this feature at the same time, slab
|
||||
+ sanitization can be disabled with the kernel commandline parameter
|
||||
+ "pax_sanitize_slab=0".
|
||||
+
|
||||
+ Sanitizing pages can be disabled with the kernel commandline
|
||||
+ parameter "pax_sanitize_pages=0".
|
||||
+
|
||||
+ Note that this feature does not protect data stored in live pages,
|
||||
+ e.g., process memory swapped to disk may stay there for a long time.
|
||||
+
|
||||
+endmenu
|
||||
+
|
||||
config SECURITY_DMESG_RESTRICT
|
||||
bool "Restrict unprivileged access to the kernel syslog"
|
||||
default n
|
|
@ -0,0 +1,28 @@
|
|||
From 2db91ae7c0862bc83c1fe8b8bd14b8de3e2c02b8 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Sat, 30 Apr 2011 17:09:04 +0300
|
||||
Subject: [PATCH] x86: increase default minimum vmalloc area by 64MB to 192MB
|
||||
|
||||
This fixes issues like https://bugs.mageia.org/show_bug.cgi?id=904.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
---
|
||||
arch/x86/mm/pgtable_32.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
|
||||
index cac7184..5801fb7 100644
|
||||
--- a/arch/x86/mm/pgtable_32.c
|
||||
+++ b/arch/x86/mm/pgtable_32.c
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
-unsigned int __VMALLOC_RESERVE = 128 << 20;
|
||||
+unsigned int __VMALLOC_RESERVE = 192 << 20;
|
||||
|
||||
/*
|
||||
* Associate a virtual page frame with a given physical page frame
|
||||
--
|
||||
1.7.3
|
||||
|
Loading…
Add table
Reference in a new issue