Rebase to Linux 3.9
merged: silence-empty-ipi-mask-warning.patch merged: quiet-apm.patch merged: Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch merged: Input-add-support-for-Cypress-PS2-Trackpads.patch merged: Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch merged: alps-v2.patch merged: userns-avoid-recursion-in-put_user_ns.patch merged: amd64_edac_fix_rank_count.patch merged: team-net-next-update-20130307.patch merged: uvcvideo-suspend-fix.patch merged: cfg80211-mac80211-disconnect-on-suspend.patch merged: mac80211_fixes_for_ieee80211_do_stop_while_suspend_v3.8.patch merged: mac80211-Dont-restart-sta-timer-if-not-running.patch merged: 0001-bluetooth-Add-support-for-atheros-04ca-3004-device-t.patch TODO: secure-boot TODO: ARM configs.
This commit is contained in:
parent
a7a3b25626
commit
2123b28761
@ -1,62 +0,0 @@
|
|||||||
From 017de1136ff304ab401dbfee4eca2e796c61797f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Josh Boyer <jwboyer@redhat.com>
|
|
||||||
Date: Tue, 19 Feb 2013 11:54:16 -0500
|
|
||||||
Subject: [PATCH] Bluetooth: Add support for atheros 04ca:3004 device to ath3k
|
|
||||||
|
|
||||||
Yet another version of the atheros bluetooth chipset
|
|
||||||
|
|
||||||
T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
|
|
||||||
D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
|
|
||||||
P: Vendor=04ca ProdID=3004 Rev=00.01
|
|
||||||
S: Manufacturer=Atheros Communications
|
|
||||||
S: Product=Bluetooth USB Host Controller
|
|
||||||
S: SerialNumber=Alaska Day 2006
|
|
||||||
C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
|
|
||||||
I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
|
||||||
I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
|
||||||
|
|
||||||
This resolves https://bugzilla.redhat.com/show_bug.cgi?id=844750
|
|
||||||
|
|
||||||
Reported-by: niktr@mail.ru
|
|
||||||
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
|
|
||||||
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
|
|
||||||
---
|
|
||||||
drivers/bluetooth/ath3k.c | 2 ++
|
|
||||||
drivers/bluetooth/btusb.c | 1 +
|
|
||||||
2 files changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
|
|
||||||
index 33c9a44..b9908dd 100644
|
|
||||||
--- a/drivers/bluetooth/ath3k.c
|
|
||||||
+++ b/drivers/bluetooth/ath3k.c
|
|
||||||
@@ -76,6 +76,7 @@ static struct usb_device_id ath3k_table[] = {
|
|
||||||
{ USB_DEVICE(0x0CF3, 0x311D) },
|
|
||||||
{ USB_DEVICE(0x0CF3, 0x817a) },
|
|
||||||
{ USB_DEVICE(0x13d3, 0x3375) },
|
|
||||||
+ { USB_DEVICE(0x04CA, 0x3004) },
|
|
||||||
{ USB_DEVICE(0x04CA, 0x3005) },
|
|
||||||
{ USB_DEVICE(0x04CA, 0x3006) },
|
|
||||||
{ USB_DEVICE(0x04CA, 0x3008) },
|
|
||||||
@@ -108,6 +109,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
|
|
||||||
{ USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x0CF3, 0x817a), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
|
|
||||||
+ { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
|
|
||||||
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
|
|
||||||
index 7e351e3..59cde8e 100644
|
|
||||||
--- a/drivers/bluetooth/btusb.c
|
|
||||||
+++ b/drivers/bluetooth/btusb.c
|
|
||||||
@@ -134,6 +134,7 @@ static struct usb_device_id blacklist_table[] = {
|
|
||||||
{ USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
|
|
||||||
+ { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
|
|
||||||
{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
|
|
||||||
--
|
|
||||||
1.8.1.4
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,71 +0,0 @@
|
|||||||
From 81bb5d31fbf3893a8e041c649dea704dd11d5272 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kamal Mostafa <kamal@canonical.com>
|
|
||||||
Date: Thu, 21 Feb 2013 11:55:05 -0800
|
|
||||||
Subject: [PATCH] Input: cypress_ps2 - fix trackpadi found in Dell XPS12
|
|
||||||
|
|
||||||
Avoid firmware glitch in Cypress PS/2 Trackpad firmware version 11
|
|
||||||
(as observed in Dell XPS12) which prevents driver from recognizing
|
|
||||||
the trackpad.
|
|
||||||
|
|
||||||
BugLink: http://launchpad.net/bugs/1103594
|
|
||||||
|
|
||||||
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
|
|
||||||
Cc: Dudley Du <dudl@cypress.com>
|
|
||||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/input/mouse/cypress_ps2.c | 19 +++++++++++++------
|
|
||||||
1 file changed, 13 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/input/mouse/cypress_ps2.c b/drivers/input/mouse/cypress_ps2.c
|
|
||||||
index 1673dc6..f51765f 100644
|
|
||||||
--- a/drivers/input/mouse/cypress_ps2.c
|
|
||||||
+++ b/drivers/input/mouse/cypress_ps2.c
|
|
||||||
@@ -236,6 +236,13 @@ static int cypress_read_fw_version(struct psmouse *psmouse)
|
|
||||||
cytp->fw_version = param[2] & FW_VERSION_MASX;
|
|
||||||
cytp->tp_metrics_supported = (param[2] & TP_METRICS_MASK) ? 1 : 0;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Trackpad fw_version 11 (in Dell XPS12) yields a bogus response to
|
|
||||||
+ * CYTP_CMD_READ_TP_METRICS so do not try to use it. LP: #1103594.
|
|
||||||
+ */
|
|
||||||
+ if (cytp->fw_version >= 11)
|
|
||||||
+ cytp->tp_metrics_supported = 0;
|
|
||||||
+
|
|
||||||
psmouse_dbg(psmouse, "cytp->fw_version = %d\n", cytp->fw_version);
|
|
||||||
psmouse_dbg(psmouse, "cytp->tp_metrics_supported = %d\n",
|
|
||||||
cytp->tp_metrics_supported);
|
|
||||||
@@ -258,6 +265,9 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse)
|
|
||||||
cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width;
|
|
||||||
cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high;
|
|
||||||
|
|
||||||
+ if (!cytp->tp_metrics_supported)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
memset(param, 0, sizeof(param));
|
|
||||||
if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_TP_METRICS, param) == 0) {
|
|
||||||
/* Update trackpad parameters. */
|
|
||||||
@@ -315,18 +325,15 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse)
|
|
||||||
|
|
||||||
static int cypress_query_hardware(struct psmouse *psmouse)
|
|
||||||
{
|
|
||||||
- struct cytp_data *cytp = psmouse->private;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = cypress_read_fw_version(psmouse);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- if (cytp->tp_metrics_supported) {
|
|
||||||
- ret = cypress_read_tp_metrics(psmouse);
|
|
||||||
- if (ret)
|
|
||||||
- return ret;
|
|
||||||
- }
|
|
||||||
+ ret = cypress_read_tp_metrics(psmouse);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.1.2
|
|
||||||
|
|
2494
alps-v2.patch
2494
alps-v2.patch
File diff suppressed because it is too large
Load Diff
@ -1,182 +0,0 @@
|
|||||||
From 56ba4c93d909ef9dfab4f1101a8c3bf75bc4cdab Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
||||||
Date: Mon, 11 Mar 2013 08:19:52 -0400
|
|
||||||
Subject: [PATCH EDAC] edac: merge mci.mem_is_per_rank with mci.csbased
|
|
||||||
|
|
||||||
Both mci.mem_is_per_rank and mci.csbased have the same meaning:
|
|
||||||
the memory controller is csrows based. Merge both fields into one.
|
|
||||||
|
|
||||||
There's no need for the driver to actually fill it, as the core
|
|
||||||
detectsi it by checking if one of the layes has the csrows type
|
|
||||||
as part of the memory hierarchy:
|
|
||||||
|
|
||||||
if (layers[i].type == EDAC_MC_LAYER_CHIP_SELECT)
|
|
||||||
per_rank = true;
|
|
||||||
...
|
|
||||||
mci->csbased = per_rank;
|
|
||||||
|
|
||||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
||||||
|
|
||||||
From 2b6018dbd206e4af16edcfb80497b73105e97803 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
||||||
Date: Mon, 11 Mar 2013 08:18:24 -0400
|
|
||||||
Subject: [PATCH EDAC] amd64_edac: Correct dimm sizes
|
|
||||||
|
|
||||||
We were filling the csrow size with a wrong value. 16a528ee3975 ("EDAC:
|
|
||||||
Fix csrow size reported in sysfs") tried to address the issue. It fixed
|
|
||||||
the report with the old API but not with the new one. Correct it for the
|
|
||||||
new API too.
|
|
||||||
|
|
||||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
||||||
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
||||||
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
|
|
||||||
index ad8bf2a..10ed0c7 100644
|
|
||||||
--- a/drivers/edac/amd64_edac.c
|
|
||||||
+++ b/drivers/edac/amd64_edac.c
|
|
||||||
@@ -2148,12 +2148,18 @@ static int init_csrows(struct mem_ctl_info *mci)
|
|
||||||
edac_dbg(1, "MC node: %d, csrow: %d\n",
|
|
||||||
pvt->mc_node_id, i);
|
|
||||||
|
|
||||||
- if (row_dct0)
|
|
||||||
+ if (row_dct0) {
|
|
||||||
nr_pages = amd64_csrow_nr_pages(pvt, 0, i);
|
|
||||||
+ csrow->channels[0]->dimm->nr_pages = nr_pages;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* K8 has only one DCT */
|
|
||||||
- if (boot_cpu_data.x86 != 0xf && row_dct1)
|
|
||||||
- nr_pages += amd64_csrow_nr_pages(pvt, 1, i);
|
|
||||||
+ if (boot_cpu_data.x86 != 0xf && row_dct1) {
|
|
||||||
+ int row_dct1_pages = amd64_csrow_nr_pages(pvt, 1, i);
|
|
||||||
+
|
|
||||||
+ csrow->channels[1]->dimm->nr_pages = row_dct1_pages;
|
|
||||||
+ nr_pages += row_dct1_pages;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mtype = amd64_determine_memory_type(pvt, i);
|
|
||||||
|
|
||||||
@@ -2172,9 +2178,7 @@ static int init_csrows(struct mem_ctl_info *mci)
|
|
||||||
dimm = csrow->channels[j]->dimm;
|
|
||||||
dimm->mtype = mtype;
|
|
||||||
dimm->edac_mode = edac_mode;
|
|
||||||
- dimm->nr_pages = nr_pages;
|
|
||||||
}
|
|
||||||
- csrow->nr_pages = nr_pages;
|
|
||||||
}
|
|
||||||
|
|
||||||
return empty;
|
|
||||||
@@ -2519,7 +2523,6 @@ static int amd64_init_one_instance(struct pci_dev *F2)
|
|
||||||
|
|
||||||
mci->pvt_info = pvt;
|
|
||||||
mci->pdev = &pvt->F2->dev;
|
|
||||||
- mci->csbased = 1;
|
|
||||||
|
|
||||||
setup_mci_misc_attrs(mci, fam_type);
|
|
||||||
|
|
||||||
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
|
|
||||||
index cdb81aa..27e86d9 100644
|
|
||||||
--- a/drivers/edac/edac_mc.c
|
|
||||||
+++ b/drivers/edac/edac_mc.c
|
|
||||||
@@ -86,7 +86,7 @@ static void edac_mc_dump_dimm(struct dimm_info *dimm, int number)
|
|
||||||
edac_dimm_info_location(dimm, location, sizeof(location));
|
|
||||||
|
|
||||||
edac_dbg(4, "%s%i: %smapped as virtual row %d, chan %d\n",
|
|
||||||
- dimm->mci->mem_is_per_rank ? "rank" : "dimm",
|
|
||||||
+ dimm->mci->csbased ? "rank" : "dimm",
|
|
||||||
number, location, dimm->csrow, dimm->cschannel);
|
|
||||||
edac_dbg(4, " dimm = %p\n", dimm);
|
|
||||||
edac_dbg(4, " dimm->label = '%s'\n", dimm->label);
|
|
||||||
@@ -341,7 +341,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
|
|
||||||
memcpy(mci->layers, layers, sizeof(*layer) * n_layers);
|
|
||||||
mci->nr_csrows = tot_csrows;
|
|
||||||
mci->num_cschannel = tot_channels;
|
|
||||||
- mci->mem_is_per_rank = per_rank;
|
|
||||||
+ mci->csbased = per_rank;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Alocate and fill the csrow/channels structs
|
|
||||||
@@ -1235,7 +1235,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
|
|
||||||
* incrementing the compat API counters
|
|
||||||
*/
|
|
||||||
edac_dbg(4, "%s csrows map: (%d,%d)\n",
|
|
||||||
- mci->mem_is_per_rank ? "rank" : "dimm",
|
|
||||||
+ mci->csbased ? "rank" : "dimm",
|
|
||||||
dimm->csrow, dimm->cschannel);
|
|
||||||
if (row == -1)
|
|
||||||
row = dimm->csrow;
|
|
||||||
diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
|
|
||||||
index 4f4b613..6ab4a50 100644
|
|
||||||
--- a/drivers/edac/edac_mc_sysfs.c
|
|
||||||
+++ b/drivers/edac/edac_mc_sysfs.c
|
|
||||||
@@ -180,9 +180,6 @@ static ssize_t csrow_size_show(struct device *dev,
|
|
||||||
int i;
|
|
||||||
u32 nr_pages = 0;
|
|
||||||
|
|
||||||
- if (csrow->mci->csbased)
|
|
||||||
- return sprintf(data, "%u\n", PAGES_TO_MiB(csrow->nr_pages));
|
|
||||||
-
|
|
||||||
for (i = 0; i < csrow->nr_channels; i++)
|
|
||||||
nr_pages += csrow->channels[i]->dimm->nr_pages;
|
|
||||||
return sprintf(data, "%u\n", PAGES_TO_MiB(nr_pages));
|
|
||||||
@@ -612,7 +609,7 @@ static int edac_create_dimm_object(struct mem_ctl_info *mci,
|
|
||||||
device_initialize(&dimm->dev);
|
|
||||||
|
|
||||||
dimm->dev.parent = &mci->dev;
|
|
||||||
- if (mci->mem_is_per_rank)
|
|
||||||
+ if (mci->csbased)
|
|
||||||
dev_set_name(&dimm->dev, "rank%d", index);
|
|
||||||
else
|
|
||||||
dev_set_name(&dimm->dev, "dimm%d", index);
|
|
||||||
@@ -778,14 +775,10 @@ static ssize_t mci_size_mb_show(struct device *dev,
|
|
||||||
for (csrow_idx = 0; csrow_idx < mci->nr_csrows; csrow_idx++) {
|
|
||||||
struct csrow_info *csrow = mci->csrows[csrow_idx];
|
|
||||||
|
|
||||||
- if (csrow->mci->csbased) {
|
|
||||||
- total_pages += csrow->nr_pages;
|
|
||||||
- } else {
|
|
||||||
- for (j = 0; j < csrow->nr_channels; j++) {
|
|
||||||
- struct dimm_info *dimm = csrow->channels[j]->dimm;
|
|
||||||
+ for (j = 0; j < csrow->nr_channels; j++) {
|
|
||||||
+ struct dimm_info *dimm = csrow->channels[j]->dimm;
|
|
||||||
|
|
||||||
- total_pages += dimm->nr_pages;
|
|
||||||
- }
|
|
||||||
+ total_pages += dimm->nr_pages;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/include/linux/edac.h b/include/linux/edac.h
|
|
||||||
index 4fd4999..0b76327 100644
|
|
||||||
--- a/include/linux/edac.h
|
|
||||||
+++ b/include/linux/edac.h
|
|
||||||
@@ -561,7 +561,6 @@ struct csrow_info {
|
|
||||||
|
|
||||||
u32 ue_count; /* Uncorrectable Errors for this csrow */
|
|
||||||
u32 ce_count; /* Correctable Errors for this csrow */
|
|
||||||
- u32 nr_pages; /* combined pages count of all channels */
|
|
||||||
|
|
||||||
struct mem_ctl_info *mci; /* the parent */
|
|
||||||
|
|
||||||
@@ -676,11 +675,11 @@ struct mem_ctl_info {
|
|
||||||
* sees memory sticks ("dimms"), and the ones that sees memory ranks.
|
|
||||||
* All old memory controllers enumerate memories per rank, but most
|
|
||||||
* of the recent drivers enumerate memories per DIMM, instead.
|
|
||||||
- * When the memory controller is per rank, mem_is_per_rank is true.
|
|
||||||
+ * When the memory controller is per rank, csbased is true.
|
|
||||||
*/
|
|
||||||
unsigned n_layers;
|
|
||||||
struct edac_mc_layer *layers;
|
|
||||||
- bool mem_is_per_rank;
|
|
||||||
+ bool csbased;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DIMM info. Will eventually remove the entire csrows_info some day
|
|
||||||
@@ -741,8 +740,6 @@ struct mem_ctl_info {
|
|
||||||
u32 fake_inject_ue;
|
|
||||||
u16 fake_inject_count;
|
|
||||||
#endif
|
|
||||||
- __u8 csbased : 1, /* csrow-based memory controller */
|
|
||||||
- __resv : 7;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,227 +0,0 @@
|
|||||||
From ad3a7b84092599eef931bce4de54e18e47612f9f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
||||||
Date: Thu, 28 Feb 2013 09:55:25 +0000
|
|
||||||
Subject: [PATCH] cfg80211/mac80211: disconnect on suspend
|
|
||||||
|
|
||||||
If possible that after suspend, cfg80211 will receive request to
|
|
||||||
disconnect what require action on interface that was removed during
|
|
||||||
suspend.
|
|
||||||
|
|
||||||
Problem can manifest itself by various warnings similar to below one:
|
|
||||||
|
|
||||||
WARNING: at net/mac80211/driver-ops.h:12 ieee80211_bss_info_change_notify+0x2f9/0x300 [mac80211]()
|
|
||||||
wlan0: Failed check-sdata-in-driver check, flags: 0x4
|
|
||||||
Call Trace:
|
|
||||||
[<c043e0b3>] warn_slowpath_fmt+0x33/0x40
|
|
||||||
[<f83707c9>] ieee80211_bss_info_change_notify+0x2f9/0x300 [mac80211]
|
|
||||||
[<f83a660a>] ieee80211_recalc_ps_vif+0x2a/0x30 [mac80211]
|
|
||||||
[<f83a6706>] ieee80211_set_disassoc+0xf6/0x500 [mac80211]
|
|
||||||
[<f83a9441>] ieee80211_mgd_deauth+0x1f1/0x280 [mac80211]
|
|
||||||
[<f8381b36>] ieee80211_deauth+0x16/0x20 [mac80211]
|
|
||||||
[<f8261e70>] cfg80211_mlme_down+0x70/0xc0 [cfg80211]
|
|
||||||
[<f8264de1>] __cfg80211_disconnect+0x1b1/0x1d0 [cfg80211]
|
|
||||||
|
|
||||||
To fix the problem disconnect from any associated network before
|
|
||||||
suspend. User space is responsible to establish connection again
|
|
||||||
after resume. This basically need to be done by user space anyway,
|
|
||||||
because associated stations can go away during suspend (for example
|
|
||||||
NetworkManager disconnects on suspend and connect on resume by default).
|
|
||||||
|
|
||||||
Patch also handle situation when driver refuse to suspend with wowlan
|
|
||||||
configured and try to suspend again without it.
|
|
||||||
|
|
||||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
||||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
||||||
---
|
|
||||||
net/mac80211/pm.c | 2 +-
|
|
||||||
net/wireless/core.c | 73 +++++++++++++++++++++++++++----------------------
|
|
||||||
net/wireless/core.h | 3 ++
|
|
||||||
net/wireless/rdev-ops.h | 7 +++--
|
|
||||||
net/wireless/sysfs.c | 25 +++++++++++++----
|
|
||||||
5 files changed, 69 insertions(+), 41 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
|
|
||||||
index 79a48f3..ce4f973 100644
|
|
||||||
--- a/net/mac80211/pm.c
|
|
||||||
+++ b/net/mac80211/pm.c
|
|
||||||
@@ -92,7 +92,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
|
|
||||||
return err;
|
|
||||||
} else if (err > 0) {
|
|
||||||
WARN_ON(err != 1);
|
|
||||||
- local->wowlan = false;
|
|
||||||
+ return err;
|
|
||||||
} else {
|
|
||||||
list_for_each_entry(sdata, &local->interfaces, list) {
|
|
||||||
cancel_work_sync(&sdata->work);
|
|
||||||
diff --git a/net/wireless/core.c b/net/wireless/core.c
|
|
||||||
index b677eab..66cc98d 100644
|
|
||||||
--- a/net/wireless/core.c
|
|
||||||
+++ b/net/wireless/core.c
|
|
||||||
@@ -806,6 +806,46 @@ void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev,
|
|
||||||
rdev->num_running_monitor_ifaces += num;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void cfg80211_leave(struct cfg80211_registered_device *rdev,
|
|
||||||
+ struct wireless_dev *wdev)
|
|
||||||
+{
|
|
||||||
+ struct net_device *dev = wdev->netdev;
|
|
||||||
+
|
|
||||||
+ switch (wdev->iftype) {
|
|
||||||
+ case NL80211_IFTYPE_ADHOC:
|
|
||||||
+ cfg80211_leave_ibss(rdev, dev, true);
|
|
||||||
+ break;
|
|
||||||
+ case NL80211_IFTYPE_P2P_CLIENT:
|
|
||||||
+ case NL80211_IFTYPE_STATION:
|
|
||||||
+ mutex_lock(&rdev->sched_scan_mtx);
|
|
||||||
+ __cfg80211_stop_sched_scan(rdev, false);
|
|
||||||
+ mutex_unlock(&rdev->sched_scan_mtx);
|
|
||||||
+
|
|
||||||
+ wdev_lock(wdev);
|
|
||||||
+#ifdef CONFIG_CFG80211_WEXT
|
|
||||||
+ kfree(wdev->wext.ie);
|
|
||||||
+ wdev->wext.ie = NULL;
|
|
||||||
+ wdev->wext.ie_len = 0;
|
|
||||||
+ wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
|
|
||||||
+#endif
|
|
||||||
+ __cfg80211_disconnect(rdev, dev,
|
|
||||||
+ WLAN_REASON_DEAUTH_LEAVING, true);
|
|
||||||
+ cfg80211_mlme_down(rdev, dev);
|
|
||||||
+ wdev_unlock(wdev);
|
|
||||||
+ break;
|
|
||||||
+ case NL80211_IFTYPE_MESH_POINT:
|
|
||||||
+ cfg80211_leave_mesh(rdev, dev);
|
|
||||||
+ break;
|
|
||||||
+ case NL80211_IFTYPE_AP:
|
|
||||||
+ cfg80211_stop_ap(rdev, dev);
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ wdev->beacon_interval = 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
|
||||||
unsigned long state,
|
|
||||||
void *ndev)
|
|
||||||
@@ -874,38 +914,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
|
||||||
dev->priv_flags |= IFF_DONT_BRIDGE;
|
|
||||||
break;
|
|
||||||
case NETDEV_GOING_DOWN:
|
|
||||||
- switch (wdev->iftype) {
|
|
||||||
- case NL80211_IFTYPE_ADHOC:
|
|
||||||
- cfg80211_leave_ibss(rdev, dev, true);
|
|
||||||
- break;
|
|
||||||
- case NL80211_IFTYPE_P2P_CLIENT:
|
|
||||||
- case NL80211_IFTYPE_STATION:
|
|
||||||
- mutex_lock(&rdev->sched_scan_mtx);
|
|
||||||
- __cfg80211_stop_sched_scan(rdev, false);
|
|
||||||
- mutex_unlock(&rdev->sched_scan_mtx);
|
|
||||||
-
|
|
||||||
- wdev_lock(wdev);
|
|
||||||
-#ifdef CONFIG_CFG80211_WEXT
|
|
||||||
- kfree(wdev->wext.ie);
|
|
||||||
- wdev->wext.ie = NULL;
|
|
||||||
- wdev->wext.ie_len = 0;
|
|
||||||
- wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
|
|
||||||
-#endif
|
|
||||||
- __cfg80211_disconnect(rdev, dev,
|
|
||||||
- WLAN_REASON_DEAUTH_LEAVING, true);
|
|
||||||
- cfg80211_mlme_down(rdev, dev);
|
|
||||||
- wdev_unlock(wdev);
|
|
||||||
- break;
|
|
||||||
- case NL80211_IFTYPE_MESH_POINT:
|
|
||||||
- cfg80211_leave_mesh(rdev, dev);
|
|
||||||
- break;
|
|
||||||
- case NL80211_IFTYPE_AP:
|
|
||||||
- cfg80211_stop_ap(rdev, dev);
|
|
||||||
- break;
|
|
||||||
- default:
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- wdev->beacon_interval = 0;
|
|
||||||
+ cfg80211_leave(rdev, wdev);
|
|
||||||
break;
|
|
||||||
case NETDEV_DOWN:
|
|
||||||
cfg80211_update_iface_num(rdev, wdev->iftype, -1);
|
|
||||||
diff --git a/net/wireless/core.h b/net/wireless/core.h
|
|
||||||
index 3563097..49d79d9 100644
|
|
||||||
--- a/net/wireless/core.h
|
|
||||||
+++ b/net/wireless/core.h
|
|
||||||
@@ -481,6 +481,9 @@ int cfg80211_validate_beacon_int(struct cfg80211_registered_device *rdev,
|
|
||||||
void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev,
|
|
||||||
enum nl80211_iftype iftype, int num);
|
|
||||||
|
|
||||||
+void cfg80211_leave(struct cfg80211_registered_device *rdev,
|
|
||||||
+ struct wireless_dev *wdev);
|
|
||||||
+
|
|
||||||
#define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10
|
|
||||||
|
|
||||||
#ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS
|
|
||||||
diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h
|
|
||||||
index 6c0c819..08e4145 100644
|
|
||||||
--- a/net/wireless/rdev-ops.h
|
|
||||||
+++ b/net/wireless/rdev-ops.h
|
|
||||||
@@ -6,11 +6,12 @@
|
|
||||||
#include "core.h"
|
|
||||||
#include "trace.h"
|
|
||||||
|
|
||||||
-static inline int rdev_suspend(struct cfg80211_registered_device *rdev)
|
|
||||||
+static inline int rdev_suspend(struct cfg80211_registered_device *rdev,
|
|
||||||
+ struct cfg80211_wowlan *wowlan)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
- trace_rdev_suspend(&rdev->wiphy, rdev->wowlan);
|
|
||||||
- ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan);
|
|
||||||
+ trace_rdev_suspend(&rdev->wiphy, wowlan);
|
|
||||||
+ ret = rdev->ops->suspend(&rdev->wiphy, wowlan);
|
|
||||||
trace_rdev_return_int(&rdev->wiphy, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
diff --git a/net/wireless/sysfs.c b/net/wireless/sysfs.c
|
|
||||||
index 1f6f01e..a6a108b 100644
|
|
||||||
--- a/net/wireless/sysfs.c
|
|
||||||
+++ b/net/wireless/sysfs.c
|
|
||||||
@@ -83,6 +83,14 @@ static int wiphy_uevent(struct device *dev, struct kobj_uevent_env *env)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void cfg80211_leave_all(struct cfg80211_registered_device *rdev)
|
|
||||||
+{
|
|
||||||
+ struct wireless_dev *wdev;
|
|
||||||
+
|
|
||||||
+ list_for_each_entry(wdev, &rdev->wdev_list, list)
|
|
||||||
+ cfg80211_leave(rdev, wdev);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int wiphy_suspend(struct device *dev, pm_message_t state)
|
|
||||||
{
|
|
||||||
struct cfg80211_registered_device *rdev = dev_to_rdev(dev);
|
|
||||||
@@ -90,12 +98,19 @@ static int wiphy_suspend(struct device *dev, pm_message_t state)
|
|
||||||
|
|
||||||
rdev->suspend_at = get_seconds();
|
|
||||||
|
|
||||||
- if (rdev->ops->suspend) {
|
|
||||||
- rtnl_lock();
|
|
||||||
- if (rdev->wiphy.registered)
|
|
||||||
- ret = rdev_suspend(rdev);
|
|
||||||
- rtnl_unlock();
|
|
||||||
+ rtnl_lock();
|
|
||||||
+ if (rdev->wiphy.registered) {
|
|
||||||
+ if (!rdev->wowlan)
|
|
||||||
+ cfg80211_leave_all(rdev);
|
|
||||||
+ if (rdev->ops->suspend)
|
|
||||||
+ ret = rdev_suspend(rdev, rdev->wowlan);
|
|
||||||
+ if (ret == 1) {
|
|
||||||
+ /* Driver refuse to configure wowlan */
|
|
||||||
+ cfg80211_leave_all(rdev);
|
|
||||||
+ ret = rdev_suspend(rdev, NULL);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
+ rtnl_unlock();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.1.2
|
|
||||||
|
|
@ -96,6 +96,7 @@ CONFIG_PCI_DEFAULT_USE_CRS=y
|
|||||||
|
|
||||||
CONFIG_KGDB_KDB=y
|
CONFIG_KGDB_KDB=y
|
||||||
CONFIG_KDB_KEYBOARD=y
|
CONFIG_KDB_KEYBOARD=y
|
||||||
|
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||||
|
|
||||||
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
||||||
CONFIG_TEST_LIST_SORT=y
|
CONFIG_TEST_LIST_SORT=y
|
||||||
|
107
config-generic
107
config-generic
@ -188,6 +188,8 @@ CONFIG_FW_LOADER=y
|
|||||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||||
CONFIG_EXTRA_FIRMWARE=""
|
CONFIG_EXTRA_FIRMWARE=""
|
||||||
|
|
||||||
|
# CONFIG_FW_LOADER_USER_HELPER is not set
|
||||||
|
|
||||||
# CONFIG_CMA is not set
|
# CONFIG_CMA is not set
|
||||||
|
|
||||||
# CONFIG_SPI is not set
|
# CONFIG_SPI is not set
|
||||||
@ -199,6 +201,7 @@ CONFIG_MTD=m
|
|||||||
# CONFIG_MTD_TESTS is not set
|
# CONFIG_MTD_TESTS is not set
|
||||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||||
# CONFIG_MTD_AR7_PARTS is not set
|
# CONFIG_MTD_AR7_PARTS is not set
|
||||||
|
# CONFIG_MTD_CMDLINE_PARTS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# User Modules And Translation Layers
|
# User Modules And Translation Layers
|
||||||
@ -320,6 +323,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
|||||||
# CONFIG_IDE is not set
|
# CONFIG_IDE is not set
|
||||||
|
|
||||||
# CONFIG_BLK_DEV_HD is not set
|
# CONFIG_BLK_DEV_HD is not set
|
||||||
|
# CONFIG_BLK_DEV_RSXX is not set
|
||||||
|
|
||||||
CONFIG_SCSI_VIRTIO=m
|
CONFIG_SCSI_VIRTIO=m
|
||||||
CONFIG_VIRTIO_BLK=m
|
CONFIG_VIRTIO_BLK=m
|
||||||
@ -328,7 +332,6 @@ CONFIG_VIRTIO_BALLOON=m
|
|||||||
CONFIG_VIRTIO_MMIO=m
|
CONFIG_VIRTIO_MMIO=m
|
||||||
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
|
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
|
||||||
CONFIG_VIRTIO_NET=m
|
CONFIG_VIRTIO_NET=m
|
||||||
CONFIG_VMXNET3=m
|
|
||||||
CONFIG_HW_RANDOM_VIRTIO=m
|
CONFIG_HW_RANDOM_VIRTIO=m
|
||||||
CONFIG_VIRTIO_CONSOLE=y
|
CONFIG_VIRTIO_CONSOLE=y
|
||||||
CONFIG_VHOST_NET=m
|
CONFIG_VHOST_NET=m
|
||||||
@ -394,7 +397,8 @@ CONFIG_SCSI_3W_9XXX=m
|
|||||||
CONFIG_SCSI_ACARD=m
|
CONFIG_SCSI_ACARD=m
|
||||||
CONFIG_SCSI_AACRAID=m
|
CONFIG_SCSI_AACRAID=m
|
||||||
CONFIG_SCSI_AIC7XXX=m
|
CONFIG_SCSI_AIC7XXX=m
|
||||||
CONFIG_SCSI_AIC7XXX_OLD=m
|
# http://lists.fedoraproject.org/pipermail/kernel/2013-February/004102.html
|
||||||
|
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||||
CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
|
CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
|
||||||
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
|
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
|
||||||
# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
|
# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
|
||||||
@ -428,6 +432,7 @@ CONFIG_SCSI_MPT3SAS_MAX_SGE=128
|
|||||||
CONFIG_SCSI_MPT3SAS_LOGGING=y
|
CONFIG_SCSI_MPT3SAS_LOGGING=y
|
||||||
|
|
||||||
CONFIG_SCSI_UFSHCD=m
|
CONFIG_SCSI_UFSHCD=m
|
||||||
|
CONFIG_SCSI_UFSHCD_PCI=m
|
||||||
|
|
||||||
CONFIG_SCSI_MVUMI=m
|
CONFIG_SCSI_MVUMI=m
|
||||||
|
|
||||||
@ -437,6 +442,7 @@ CONFIG_SCSI_OSD_DPRINT_SENSE=1
|
|||||||
# CONFIG_SCSI_OSD_DEBUG is not set
|
# CONFIG_SCSI_OSD_DEBUG is not set
|
||||||
|
|
||||||
CONFIG_SCSI_BNX2_ISCSI=m
|
CONFIG_SCSI_BNX2_ISCSI=m
|
||||||
|
CONFIG_SCSI_BNX2X_FCOE=m
|
||||||
CONFIG_BE2ISCSI=m
|
CONFIG_BE2ISCSI=m
|
||||||
CONFIG_SCSI_PMCRAID=m
|
CONFIG_SCSI_PMCRAID=m
|
||||||
|
|
||||||
@ -476,7 +482,9 @@ CONFIG_SCSI_DC390T=m
|
|||||||
CONFIG_SCSI_QLA_FC=m
|
CONFIG_SCSI_QLA_FC=m
|
||||||
CONFIG_TCM_QLA2XXX=m
|
CONFIG_TCM_QLA2XXX=m
|
||||||
CONFIG_SCSI_QLA_ISCSI=m
|
CONFIG_SCSI_QLA_ISCSI=m
|
||||||
# CONFIG_SCSI_IPR is not set
|
CONFIG_SCSI_IPR=m
|
||||||
|
CONFIG_SCSI_IPR_TRACE=y
|
||||||
|
CONFIG_SCSI_IPR_DUMP=y
|
||||||
# CONFIG_SCSI_DPT_I2O is not set
|
# CONFIG_SCSI_DPT_I2O is not set
|
||||||
CONFIG_SCSI_LPFC=m
|
CONFIG_SCSI_LPFC=m
|
||||||
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
|
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
|
||||||
@ -509,6 +517,7 @@ CONFIG_SATA_SX4=m
|
|||||||
CONFIG_SATA_ULI=m
|
CONFIG_SATA_ULI=m
|
||||||
CONFIG_SATA_VIA=m
|
CONFIG_SATA_VIA=m
|
||||||
CONFIG_SATA_VITESSE=m
|
CONFIG_SATA_VITESSE=m
|
||||||
|
# CONFIG_SATA_ZPODD is not set
|
||||||
CONFIG_SATA_ACARD_AHCI=m
|
CONFIG_SATA_ACARD_AHCI=m
|
||||||
|
|
||||||
# CONFIG_PATA_LEGACY is not set
|
# CONFIG_PATA_LEGACY is not set
|
||||||
@ -580,11 +589,14 @@ CONFIG_ASYNC_RAID6_TEST=m
|
|||||||
CONFIG_BLK_DEV_DM=y
|
CONFIG_BLK_DEV_DM=y
|
||||||
CONFIG_DM_CRYPT=m
|
CONFIG_DM_CRYPT=m
|
||||||
CONFIG_DM_DEBUG=y
|
CONFIG_DM_DEBUG=y
|
||||||
# CONFIG_DM_DELAY is not set
|
CONFIG_DM_DELAY=m
|
||||||
CONFIG_DM_MIRROR=y
|
CONFIG_DM_MIRROR=y
|
||||||
CONFIG_DM_MULTIPATH=m
|
CONFIG_DM_MULTIPATH=m
|
||||||
CONFIG_DM_SNAPSHOT=y
|
CONFIG_DM_SNAPSHOT=y
|
||||||
CONFIG_DM_THIN_PROVISIONING=m
|
CONFIG_DM_THIN_PROVISIONING=m
|
||||||
|
CONFIG_DM_CACHE=m
|
||||||
|
CONFIG_DM_CACHE_MQ=m
|
||||||
|
CONFIG_DM_CACHE_CLEANER=m
|
||||||
# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
|
# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
|
||||||
# CONFIG_DM_DEBUG_SPACE_MAPS is not set
|
# CONFIG_DM_DEBUG_SPACE_MAPS is not set
|
||||||
CONFIG_DM_UEVENT=y
|
CONFIG_DM_UEVENT=y
|
||||||
@ -661,7 +673,7 @@ CONFIG_TCP_MD5SIG=y
|
|||||||
# Networking options
|
# Networking options
|
||||||
#
|
#
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
# CONFIG_PACKET_DIAG is not set
|
CONFIG_PACKET_DIAG=m
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
CONFIG_UNIX_DIAG=m
|
CONFIG_UNIX_DIAG=m
|
||||||
CONFIG_NET_KEY=m
|
CONFIG_NET_KEY=m
|
||||||
@ -761,6 +773,7 @@ CONFIG_NET_9P_RDMA=m
|
|||||||
# CONFIG_DECNET is not set
|
# CONFIG_DECNET is not set
|
||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||||
|
CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||||
|
|
||||||
# PHY timestamping adds overhead
|
# PHY timestamping adds overhead
|
||||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||||
@ -803,10 +816,12 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
|
|||||||
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
||||||
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
||||||
|
CONFIG_NETFILTER_XT_MATCH_BPF=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
|
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
|
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
|
||||||
|
CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
|
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||||
@ -996,6 +1011,7 @@ CONFIG_SCTP_COOKIE_HMAC_SHA1=y
|
|||||||
CONFIG_ATM=m
|
CONFIG_ATM=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
CONFIG_VLAN_8021Q_GVRP=y
|
||||||
|
CONFIG_VLAN_8021Q_MVRP=y
|
||||||
CONFIG_LLC=m
|
CONFIG_LLC=m
|
||||||
# CONFIG_LLC2 is not set
|
# CONFIG_LLC2 is not set
|
||||||
CONFIG_IPX=m
|
CONFIG_IPX=m
|
||||||
@ -1020,7 +1036,8 @@ CONFIG_IP_DCCP_CCID3=y
|
|||||||
#
|
#
|
||||||
# TIPC Configuration (EXPERIMENTAL)
|
# TIPC Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
# CONFIG_TIPC is not set
|
CONFIG_TIPC=m
|
||||||
|
CONFIG_TIPC_PORTS=8192
|
||||||
# CONFIG_TIPC_ADVANCED is not set
|
# CONFIG_TIPC_ADVANCED is not set
|
||||||
# CONFIG_TIPC_DEBUG is not set
|
# CONFIG_TIPC_DEBUG is not set
|
||||||
|
|
||||||
@ -1093,6 +1110,7 @@ CONFIG_BATMAN_ADV_BLA=y
|
|||||||
CONFIG_BATMAN_ADV_DAT=y
|
CONFIG_BATMAN_ADV_DAT=y
|
||||||
# CONFIG_BATMAN_ADV_DEBUG is not set
|
# CONFIG_BATMAN_ADV_DEBUG is not set
|
||||||
CONFIG_OPENVSWITCH=m
|
CONFIG_OPENVSWITCH=m
|
||||||
|
CONFIG_VSOCKETS=m
|
||||||
CONFIG_NETPRIO_CGROUP=m
|
CONFIG_NETPRIO_CGROUP=m
|
||||||
|
|
||||||
|
|
||||||
@ -1260,6 +1278,7 @@ CONFIG_E100=m
|
|||||||
CONFIG_E1000=m
|
CONFIG_E1000=m
|
||||||
CONFIG_E1000E=m
|
CONFIG_E1000E=m
|
||||||
CONFIG_IGB=m
|
CONFIG_IGB=m
|
||||||
|
CONFIG_IGB_HWMON=y
|
||||||
CONFIG_IGB_DCA=y
|
CONFIG_IGB_DCA=y
|
||||||
CONFIG_IGB_PTP=y
|
CONFIG_IGB_PTP=y
|
||||||
CONFIG_IGBVF=m
|
CONFIG_IGBVF=m
|
||||||
@ -1412,6 +1431,8 @@ CONFIG_NET_PCI=y
|
|||||||
CONFIG_B44=m
|
CONFIG_B44=m
|
||||||
CONFIG_B44_PCI=y
|
CONFIG_B44_PCI=y
|
||||||
CONFIG_BNX2=m
|
CONFIG_BNX2=m
|
||||||
|
CONFIG_BNX2X=m
|
||||||
|
CONFIG_BNX2X_SRIOV=y
|
||||||
CONFIG_CNIC=m
|
CONFIG_CNIC=m
|
||||||
CONFIG_FEALNX=m
|
CONFIG_FEALNX=m
|
||||||
CONFIG_NET_POCKET=y
|
CONFIG_NET_POCKET=y
|
||||||
@ -1428,7 +1449,6 @@ CONFIG_JME=m
|
|||||||
#
|
#
|
||||||
# CONFIG_IP1000 is not set
|
# CONFIG_IP1000 is not set
|
||||||
# CONFIG_MLX4_EN is not set
|
# CONFIG_MLX4_EN is not set
|
||||||
# CONFIG_MLX4_DEBUG is not set
|
|
||||||
# CONFIG_SFC is not set
|
# CONFIG_SFC is not set
|
||||||
|
|
||||||
# CONFIG_FDDI is not set
|
# CONFIG_FDDI is not set
|
||||||
@ -1573,6 +1593,8 @@ CONFIG_LIBERTAS_SDIO=m
|
|||||||
# CONFIG_LIBERTAS_THINFIRM is not set
|
# CONFIG_LIBERTAS_THINFIRM is not set
|
||||||
CONFIG_LIBERTAS_MESH=y
|
CONFIG_LIBERTAS_MESH=y
|
||||||
CONFIG_IWLWIFI=m
|
CONFIG_IWLWIFI=m
|
||||||
|
CONFIG_IWLDVM=m
|
||||||
|
CONFIG_IWLMVM=m
|
||||||
CONFIG_IWLWIFI_DEBUG=y
|
CONFIG_IWLWIFI_DEBUG=y
|
||||||
CONFIG_IWLWIFI_DEBUGFS=y
|
CONFIG_IWLWIFI_DEBUGFS=y
|
||||||
CONFIG_IWLWIFI_DEVICE_SVTOOL=y
|
CONFIG_IWLWIFI_DEVICE_SVTOOL=y
|
||||||
@ -1614,7 +1636,6 @@ CONFIG_RT2800PCI_RT53XX=y
|
|||||||
CONFIG_RT73USB=m
|
CONFIG_RT73USB=m
|
||||||
CONFIG_RTL8180=m
|
CONFIG_RTL8180=m
|
||||||
CONFIG_RTL8187=m
|
CONFIG_RTL8187=m
|
||||||
# CONFIG_RTLWIFI_DEBUG is not set
|
|
||||||
# CONFIG_USB_ZD1201 is not set
|
# CONFIG_USB_ZD1201 is not set
|
||||||
CONFIG_USB_NET_RNDIS_WLAN=m
|
CONFIG_USB_NET_RNDIS_WLAN=m
|
||||||
CONFIG_USB_NET_KALMIA=m
|
CONFIG_USB_NET_KALMIA=m
|
||||||
@ -1635,6 +1656,8 @@ CONFIG_WL1251=m
|
|||||||
CONFIG_WL1251_SPI=m
|
CONFIG_WL1251_SPI=m
|
||||||
CONFIG_WL1251_SDIO=m
|
CONFIG_WL1251_SDIO=m
|
||||||
|
|
||||||
|
CONFIG_RTLWIFI=m
|
||||||
|
# CONFIG_RTLWIFI_DEBUG is not set
|
||||||
CONFIG_RTL8192CE=m
|
CONFIG_RTL8192CE=m
|
||||||
CONFIG_RTL8192SE=m
|
CONFIG_RTL8192SE=m
|
||||||
CONFIG_RTL8192CU=m
|
CONFIG_RTL8192CU=m
|
||||||
@ -1695,9 +1718,11 @@ CONFIG_NFC_LLCP=y
|
|||||||
#
|
#
|
||||||
# Near Field Communication (NFC) devices
|
# Near Field Communication (NFC) devices
|
||||||
#
|
#
|
||||||
CONFIG_PN544_NFC=m
|
CONFIG_NFC_PN544=m
|
||||||
CONFIG_PN544_HCI_NFC=m
|
CONFIG_NFC_PN544_I2C=m
|
||||||
CONFIG_NFC_PN533=m
|
CONFIG_NFC_PN533=m
|
||||||
|
CONFIG_NFC_MICROREAD=m
|
||||||
|
CONFIG_NFC_MICROREAD_I2C=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# IrDA (infrared) support
|
# IrDA (infrared) support
|
||||||
@ -1992,6 +2017,7 @@ CONFIG_MOUSE_APPLETOUCH=m
|
|||||||
CONFIG_MOUSE_BCM5974=m
|
CONFIG_MOUSE_BCM5974=m
|
||||||
CONFIG_MOUSE_SYNAPTICS_I2C=m
|
CONFIG_MOUSE_SYNAPTICS_I2C=m
|
||||||
CONFIG_MOUSE_SYNAPTICS_USB=m
|
CONFIG_MOUSE_SYNAPTICS_USB=m
|
||||||
|
CONFIG_MOUSE_CYAPA=m
|
||||||
CONFIG_INPUT_JOYSTICK=y
|
CONFIG_INPUT_JOYSTICK=y
|
||||||
CONFIG_JOYSTICK_ANALOG=m
|
CONFIG_JOYSTICK_ANALOG=m
|
||||||
CONFIG_JOYSTICK_A3D=m
|
CONFIG_JOYSTICK_A3D=m
|
||||||
@ -2112,12 +2138,14 @@ CONFIG_TCG_TIS=m
|
|||||||
CONFIG_TCG_NSC=m
|
CONFIG_TCG_NSC=m
|
||||||
CONFIG_TCG_ATMEL=m
|
CONFIG_TCG_ATMEL=m
|
||||||
# CONFIG_TCG_INFINEON is not set
|
# CONFIG_TCG_INFINEON is not set
|
||||||
|
# CONFIG_TCG_ST33_I2C is not set
|
||||||
CONFIG_TELCLOCK=m
|
CONFIG_TELCLOCK=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# Serial drivers
|
# Serial drivers
|
||||||
#
|
#
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
|
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_CS=m
|
CONFIG_SERIAL_8250_CS=m
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
@ -2279,6 +2307,7 @@ CONFIG_SENSORS_LM93=m
|
|||||||
CONFIG_SENSORS_LTC4245=m
|
CONFIG_SENSORS_LTC4245=m
|
||||||
CONFIG_SENSORS_MAX1619=m
|
CONFIG_SENSORS_MAX1619=m
|
||||||
CONFIG_SENSORS_MAX6650=m
|
CONFIG_SENSORS_MAX6650=m
|
||||||
|
CONFIG_SENSORS_MAX6697=m
|
||||||
CONFIG_SENSORS_MCP3021=m
|
CONFIG_SENSORS_MCP3021=m
|
||||||
CONFIG_SENSORS_NTC_THERMISTOR=m
|
CONFIG_SENSORS_NTC_THERMISTOR=m
|
||||||
CONFIG_SENSORS_PC87360=m
|
CONFIG_SENSORS_PC87360=m
|
||||||
@ -2319,6 +2348,7 @@ CONFIG_SENSORS_WM831X=m
|
|||||||
CONFIG_SENSORS_LM73=m
|
CONFIG_SENSORS_LM73=m
|
||||||
CONFIG_SENSORS_AMC6821=m
|
CONFIG_SENSORS_AMC6821=m
|
||||||
CONFIG_SENSORS_INA2XX=m
|
CONFIG_SENSORS_INA2XX=m
|
||||||
|
CONFIG_SENSORS_INA209=m
|
||||||
CONFIG_SENSORS_ADT7411=m
|
CONFIG_SENSORS_ADT7411=m
|
||||||
CONFIG_SENSORS_ASC7621=m
|
CONFIG_SENSORS_ASC7621=m
|
||||||
CONFIG_SENSORS_EMC1403=m
|
CONFIG_SENSORS_EMC1403=m
|
||||||
@ -2365,6 +2395,7 @@ CONFIG_SENSORS_MAX197=m
|
|||||||
# CONFIG_USB_SWITCH_FSA9480 is not set
|
# CONFIG_USB_SWITCH_FSA9480 is not set
|
||||||
CONFIG_SERIAL_ARC=m
|
CONFIG_SERIAL_ARC=m
|
||||||
CONFIG_SERIAL_ARC_NR_PORTS=1
|
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||||
|
# CONFIG_SERIAL_RP2 is not set
|
||||||
|
|
||||||
CONFIG_W1=m
|
CONFIG_W1=m
|
||||||
CONFIG_W1_CON=y
|
CONFIG_W1_CON=y
|
||||||
@ -2376,6 +2407,7 @@ CONFIG_W1_MASTER_DS1WM=m
|
|||||||
CONFIG_W1_SLAVE_THERM=m
|
CONFIG_W1_SLAVE_THERM=m
|
||||||
CONFIG_W1_SLAVE_SMEM=m
|
CONFIG_W1_SLAVE_SMEM=m
|
||||||
CONFIG_W1_SLAVE_DS2408=m
|
CONFIG_W1_SLAVE_DS2408=m
|
||||||
|
CONFIG_W1_SLAVE_DS2413=m
|
||||||
CONFIG_W1_SLAVE_DS2423=m
|
CONFIG_W1_SLAVE_DS2423=m
|
||||||
CONFIG_W1_SLAVE_DS2431=m
|
CONFIG_W1_SLAVE_DS2431=m
|
||||||
CONFIG_W1_SLAVE_DS2433=m
|
CONFIG_W1_SLAVE_DS2433=m
|
||||||
@ -2451,6 +2483,7 @@ CONFIG_HW_RANDOM_TPM=m
|
|||||||
# CONFIG_GEN_RTC is not set
|
# CONFIG_GEN_RTC is not set
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_HCTOSYS=y
|
CONFIG_RTC_HCTOSYS=y
|
||||||
|
# CONFIG_RTC_SYSTOHC is not set
|
||||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||||
CONFIG_RTC_INTF_SYSFS=y
|
CONFIG_RTC_INTF_SYSFS=y
|
||||||
CONFIG_RTC_INTF_PROC=y
|
CONFIG_RTC_INTF_PROC=y
|
||||||
@ -2495,6 +2528,10 @@ CONFIG_RTC_DRV_MSM6242=m
|
|||||||
CONFIG_RTC_DRV_RP5C01=m
|
CONFIG_RTC_DRV_RP5C01=m
|
||||||
CONFIG_RTC_DRV_EM3027=m
|
CONFIG_RTC_DRV_EM3027=m
|
||||||
CONFIG_RTC_DRV_RV3029C2=m
|
CONFIG_RTC_DRV_RV3029C2=m
|
||||||
|
CONFIG_RTC_DRV_PCF50633=m
|
||||||
|
CONFIG_RTC_DRV_DS3232=m
|
||||||
|
CONFIG_RTC_DRV_ISL12022=m
|
||||||
|
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
|
||||||
|
|
||||||
CONFIG_R3964=m
|
CONFIG_R3964=m
|
||||||
# CONFIG_APPLICOM is not set
|
# CONFIG_APPLICOM is not set
|
||||||
@ -2528,6 +2565,7 @@ CONFIG_DRM_CIRRUS_QEMU=m # do not enable on f17 or older
|
|||||||
# CONFIG_DRM_R128 is not set
|
# CONFIG_DRM_R128 is not set
|
||||||
CONFIG_DRM_RADEON=m
|
CONFIG_DRM_RADEON=m
|
||||||
CONFIG_DRM_RADEON_KMS=y
|
CONFIG_DRM_RADEON_KMS=y
|
||||||
|
# CONFIG_DRM_RADEON_UMS is not set
|
||||||
# CONFIG_DRM_I810 is not set
|
# CONFIG_DRM_I810 is not set
|
||||||
# CONFIG_DRM_MGA is not set
|
# CONFIG_DRM_MGA is not set
|
||||||
CONFIG_DRM_MGAG200=m # do not enable on f17 or older
|
CONFIG_DRM_MGAG200=m # do not enable on f17 or older
|
||||||
@ -2544,10 +2582,12 @@ CONFIG_DRM_NOUVEAU_DEBUG=y
|
|||||||
# CONFIG_DRM_PSB is not set
|
# CONFIG_DRM_PSB is not set
|
||||||
CONFIG_DRM_I2C_CH7006=m
|
CONFIG_DRM_I2C_CH7006=m
|
||||||
CONFIG_DRM_I2C_SIL164=m
|
CONFIG_DRM_I2C_SIL164=m
|
||||||
|
CONFIG_DRM_I2C_NXP_TDA998X=m
|
||||||
CONFIG_DRM_UDL=m
|
CONFIG_DRM_UDL=m
|
||||||
CONFIG_DRM_VMWGFX=m
|
CONFIG_DRM_VMWGFX=m
|
||||||
CONFIG_DRM_VMWGFX_FBCON=y
|
CONFIG_DRM_VMWGFX_FBCON=y
|
||||||
CONFIG_DRM_VGEM=m
|
CONFIG_DRM_VGEM=m
|
||||||
|
CONFIG_DRM_QXL=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# PCMCIA character devices
|
# PCMCIA character devices
|
||||||
@ -2578,6 +2618,7 @@ CONFIG_VIDEO_DEV=m
|
|||||||
# CONFIG_VIDEO_ADV_DEBUG is not set
|
# CONFIG_VIDEO_ADV_DEBUG is not set
|
||||||
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
|
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
|
||||||
CONFIG_VIDEO_V4L2=y
|
CONFIG_VIDEO_V4L2=y
|
||||||
|
# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
|
||||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||||
# CONFIG_VIDEO_VIVI is not set
|
# CONFIG_VIDEO_VIVI is not set
|
||||||
|
|
||||||
@ -2592,6 +2633,7 @@ CONFIG_V4L_USB_DRIVERS=y
|
|||||||
CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
CONFIG_VIDEO_CAPTURE_DRIVERS=y
|
||||||
CONFIG_V4L_PCI_DRIVERS=y
|
CONFIG_V4L_PCI_DRIVERS=y
|
||||||
CONFIG_VIDEO_AU0828=m
|
CONFIG_VIDEO_AU0828=m
|
||||||
|
CONFIG_VIDEO_AU0828_V4L2=y
|
||||||
CONFIG_VIDEO_BT848=m
|
CONFIG_VIDEO_BT848=m
|
||||||
CONFIG_VIDEO_BT848_DVB=y
|
CONFIG_VIDEO_BT848_DVB=y
|
||||||
CONFIG_VIDEO_BWQCAM=m
|
CONFIG_VIDEO_BWQCAM=m
|
||||||
@ -2810,6 +2852,7 @@ CONFIG_IR_GPIO_CIR=m
|
|||||||
|
|
||||||
CONFIG_V4L_MEM2MEM_DRIVERS=y
|
CONFIG_V4L_MEM2MEM_DRIVERS=y
|
||||||
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
|
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
|
||||||
|
# CONFIG_VIDEO_SH_VEU is not set
|
||||||
# CONFIG_V4L_TEST_DRIVERS is not set
|
# CONFIG_V4L_TEST_DRIVERS is not set
|
||||||
|
|
||||||
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
|
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
|
||||||
@ -2895,6 +2938,7 @@ CONFIG_FB_EFI=y
|
|||||||
# CONFIG_FB_TMIO is not set
|
# CONFIG_FB_TMIO is not set
|
||||||
# CONFIG_FB_BROADSHEET is not set
|
# CONFIG_FB_BROADSHEET is not set
|
||||||
# CONFIG_FB_UDL is not set
|
# CONFIG_FB_UDL is not set
|
||||||
|
# CONFIG_FB_GOLDFISH is not set
|
||||||
|
|
||||||
# CONFIG_FIRMWARE_EDID is not set
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
|
|
||||||
@ -3018,6 +3062,7 @@ CONFIG_SND_HDA_CODEC_CMEDIA=y
|
|||||||
CONFIG_SND_HDA_CODEC_SI3054=y
|
CONFIG_SND_HDA_CODEC_SI3054=y
|
||||||
CONFIG_SND_HDA_CODEC_HDMI=y
|
CONFIG_SND_HDA_CODEC_HDMI=y
|
||||||
CONFIG_SND_HDA_CODEC_CA0132=y
|
CONFIG_SND_HDA_CODEC_CA0132=y
|
||||||
|
CONFIG_SND_HDA_CODEC_CA0132_DSP=y
|
||||||
CONFIG_SND_HDA_GENERIC=y
|
CONFIG_SND_HDA_GENERIC=y
|
||||||
CONFIG_SND_HDA_POWER_SAVE=y
|
CONFIG_SND_HDA_POWER_SAVE=y
|
||||||
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
|
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
|
||||||
@ -3202,9 +3247,11 @@ CONFIG_HID_ROCCAT_KONE=m
|
|||||||
CONFIG_HID_SAMSUNG=m
|
CONFIG_HID_SAMSUNG=m
|
||||||
CONFIG_HID_SONY=m
|
CONFIG_HID_SONY=m
|
||||||
CONFIG_HID_SUNPLUS=m
|
CONFIG_HID_SUNPLUS=m
|
||||||
|
CONFIG_HID_STEELSERIES=m
|
||||||
CONFIG_HID_GREENASIA=m
|
CONFIG_HID_GREENASIA=m
|
||||||
CONFIG_HID_SMARTJOYPLUS=m
|
CONFIG_HID_SMARTJOYPLUS=m
|
||||||
CONFIG_HID_TOPSEED=m
|
CONFIG_HID_TOPSEED=m
|
||||||
|
CONFIG_HID_THINGM=m
|
||||||
CONFIG_HID_THRUSTMASTER=m
|
CONFIG_HID_THRUSTMASTER=m
|
||||||
CONFIG_HID_ZEROPLUS=m
|
CONFIG_HID_ZEROPLUS=m
|
||||||
CONFIG_HID_ZYDACRON=m
|
CONFIG_HID_ZYDACRON=m
|
||||||
@ -3313,6 +3360,7 @@ CONFIG_USB_RTL8150=m
|
|||||||
CONFIG_USB_USBNET=m
|
CONFIG_USB_USBNET=m
|
||||||
CONFIG_USB_SPEEDTOUCH=m
|
CONFIG_USB_SPEEDTOUCH=m
|
||||||
CONFIG_USB_NET_AX8817X=m
|
CONFIG_USB_NET_AX8817X=m
|
||||||
|
CONFIG_USB_NET_AX88179_178A=m
|
||||||
CONFIG_USB_NET_DM9601=m
|
CONFIG_USB_NET_DM9601=m
|
||||||
CONFIG_USB_NET_SMSC95XX=m
|
CONFIG_USB_NET_SMSC95XX=m
|
||||||
CONFIG_USB_NET_GL620A=m
|
CONFIG_USB_NET_GL620A=m
|
||||||
@ -3422,6 +3470,7 @@ CONFIG_USB_SERIAL_WHITEHEAT=m
|
|||||||
CONFIG_USB_SERIAL_XIRCOM=m
|
CONFIG_USB_SERIAL_XIRCOM=m
|
||||||
CONFIG_USB_SERIAL_QCAUX=m
|
CONFIG_USB_SERIAL_QCAUX=m
|
||||||
CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
|
CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
|
||||||
|
CONFIG_USB_SERIAL_XSENS_MT=m
|
||||||
CONFIG_USB_SERIAL_DEBUG=m
|
CONFIG_USB_SERIAL_DEBUG=m
|
||||||
CONFIG_USB_SERIAL_SSU100=m
|
CONFIG_USB_SERIAL_SSU100=m
|
||||||
CONFIG_USB_SERIAL_QT2=m
|
CONFIG_USB_SERIAL_QT2=m
|
||||||
@ -3443,6 +3492,8 @@ CONFIG_USB_SEVSEG=m
|
|||||||
CONFIG_USB_ALI_M5632=y
|
CONFIG_USB_ALI_M5632=y
|
||||||
CONFIG_USB_APPLEDISPLAY=m
|
CONFIG_USB_APPLEDISPLAY=m
|
||||||
# CONFIG_OMAP_USB2 is not set
|
# CONFIG_OMAP_USB2 is not set
|
||||||
|
# CONFIG_OMAP_USB3 is not set
|
||||||
|
# CONFIG_OMAP_CONTROL_USB is not set
|
||||||
CONFIG_USB_RCAR_PHY=m
|
CONFIG_USB_RCAR_PHY=m
|
||||||
CONFIG_USB_ATM=m
|
CONFIG_USB_ATM=m
|
||||||
CONFIG_USB_CXACRU=m
|
CONFIG_USB_CXACRU=m
|
||||||
@ -3463,6 +3514,7 @@ CONFIG_USB_IOWARRIOR=m
|
|||||||
CONFIG_USB_ISIGHTFW=m
|
CONFIG_USB_ISIGHTFW=m
|
||||||
CONFIG_USB_YUREX=m
|
CONFIG_USB_YUREX=m
|
||||||
CONFIG_USB_EZUSB_FX2=m
|
CONFIG_USB_EZUSB_FX2=m
|
||||||
|
CONFIG_USB_HSIC_USB3503=m
|
||||||
CONFIG_USB_LCD=m
|
CONFIG_USB_LCD=m
|
||||||
CONFIG_USB_LD=m
|
CONFIG_USB_LD=m
|
||||||
CONFIG_USB_LEGOTOWER=m
|
CONFIG_USB_LEGOTOWER=m
|
||||||
@ -3475,6 +3527,7 @@ CONFIG_USB_SISUSBVGA=m
|
|||||||
CONFIG_USB_SISUSBVGA_CON=y
|
CONFIG_USB_SISUSBVGA_CON=y
|
||||||
CONFIG_RADIO_SI470X=y
|
CONFIG_RADIO_SI470X=y
|
||||||
CONFIG_USB_KEENE=m
|
CONFIG_USB_KEENE=m
|
||||||
|
CONFIG_USB_MA901=m
|
||||||
CONFIG_USB_SI470X=m
|
CONFIG_USB_SI470X=m
|
||||||
CONFIG_I2C_SI470X=m
|
CONFIG_I2C_SI470X=m
|
||||||
CONFIG_RADIO_SI4713=m
|
CONFIG_RADIO_SI4713=m
|
||||||
@ -3513,9 +3566,6 @@ CONFIG_PCF50633_GPIO=m
|
|||||||
# CONFIG_AB3100_CORE is not set
|
# CONFIG_AB3100_CORE is not set
|
||||||
CONFIG_INPUT_PCF50633_PMU=m
|
CONFIG_INPUT_PCF50633_PMU=m
|
||||||
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
|
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
|
||||||
CONFIG_RTC_DRV_PCF50633=m
|
|
||||||
CONFIG_RTC_DRV_DS3232=m
|
|
||||||
CONFIG_RTC_DRV_ISL12022=m
|
|
||||||
|
|
||||||
CONFIG_MFD_SUPPORT=y
|
CONFIG_MFD_SUPPORT=y
|
||||||
CONFIG_MFD_VX855=m
|
CONFIG_MFD_VX855=m
|
||||||
@ -3656,6 +3706,7 @@ CONFIG_DEBUG_FS=y
|
|||||||
# CONFIG_ADFS_FS is not set
|
# CONFIG_ADFS_FS is not set
|
||||||
CONFIG_AFFS_FS=m
|
CONFIG_AFFS_FS=m
|
||||||
CONFIG_ECRYPT_FS=m
|
CONFIG_ECRYPT_FS=m
|
||||||
|
# CONFIG_ECRYPT_FS_MESSAGING is not set
|
||||||
CONFIG_HFS_FS=m
|
CONFIG_HFS_FS=m
|
||||||
CONFIG_HFSPLUS_FS=m
|
CONFIG_HFSPLUS_FS=m
|
||||||
CONFIG_BEFS_FS=m
|
CONFIG_BEFS_FS=m
|
||||||
@ -3899,6 +3950,7 @@ CONFIG_LOCKUP_DETECTOR=y
|
|||||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||||
# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
|
# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
|
||||||
|
# CONFIG_PANIC_ON_OOPS is not set
|
||||||
CONFIG_ATOMIC64_SELFTEST=y
|
CONFIG_ATOMIC64_SELFTEST=y
|
||||||
CONFIG_MEMORY_FAILURE=y
|
CONFIG_MEMORY_FAILURE=y
|
||||||
CONFIG_HWPOISON_INJECT=m
|
CONFIG_HWPOISON_INJECT=m
|
||||||
@ -3973,6 +4025,7 @@ CONFIG_CRYPTO_CAST6=m
|
|||||||
CONFIG_CRYPTO_CBC=y
|
CONFIG_CRYPTO_CBC=y
|
||||||
CONFIG_CRYPTO_CCM=m
|
CONFIG_CRYPTO_CCM=m
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
|
CONFIG_CRYPTO_CRC32=m
|
||||||
CONFIG_CRYPTO_CTR=y
|
CONFIG_CRYPTO_CTR=y
|
||||||
CONFIG_CRYPTO_CTS=m
|
CONFIG_CRYPTO_CTS=m
|
||||||
CONFIG_CRYPTO_DEFLATE=m
|
CONFIG_CRYPTO_DEFLATE=m
|
||||||
@ -4112,9 +4165,10 @@ CONFIG_HWMON=y
|
|||||||
CONFIG_THERMAL_HWMON=y
|
CONFIG_THERMAL_HWMON=y
|
||||||
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
|
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
|
||||||
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
|
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
|
||||||
CONFIG_FAIR_SHARE=y
|
CONFIG_THERMAL_GOV_FAIR_SHARE=y
|
||||||
CONFIG_STEP_WISE=y
|
# CONFIG_THERMAL_GOV_USER_SPACE is not set
|
||||||
# CONFIG_USER_SPACE is not set
|
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||||
|
# CONFIG_THERMAL_EMULATION is not set
|
||||||
# CONFIG_CPU_THERMAL is not set
|
# CONFIG_CPU_THERMAL is not set
|
||||||
|
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_INOTIFY=y
|
||||||
@ -4209,6 +4263,7 @@ CONFIG_LEDS_DELL_NETBOOKS=m
|
|||||||
# CONFIG_LEDS_TCA6507 is not set
|
# CONFIG_LEDS_TCA6507 is not set
|
||||||
# CONFIG_LEDS_LM355x is not set
|
# CONFIG_LEDS_LM355x is not set
|
||||||
# CONFIG_LEDS_OT200 is not set
|
# CONFIG_LEDS_OT200 is not set
|
||||||
|
# CONFIG_LEDS_PWM is not set
|
||||||
CONFIG_LEDS_TRIGGERS=y
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||||
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
||||||
@ -4237,6 +4292,7 @@ CONFIG_LEDS_WM831X_STATUS=m
|
|||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
CONFIG_DMA_ENGINE=y
|
CONFIG_DMA_ENGINE=y
|
||||||
CONFIG_DW_DMAC=m
|
CONFIG_DW_DMAC=m
|
||||||
|
# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
|
||||||
# CONFIG_TIMB_DMA is not set
|
# CONFIG_TIMB_DMA is not set
|
||||||
# CONFIG_DMATEST is not set
|
# CONFIG_DMATEST is not set
|
||||||
CONFIG_ASYNC_TX_DMA=y
|
CONFIG_ASYNC_TX_DMA=y
|
||||||
@ -4250,6 +4306,7 @@ CONFIG_DYNAMIC_FTRACE=y
|
|||||||
# CONFIG_IRQSOFF_TRACER is not set
|
# CONFIG_IRQSOFF_TRACER is not set
|
||||||
CONFIG_SCHED_TRACER=y
|
CONFIG_SCHED_TRACER=y
|
||||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||||
|
CONFIG_TRACER_SNAPSHOT=y
|
||||||
CONFIG_FTRACE_SYSCALLS=y
|
CONFIG_FTRACE_SYSCALLS=y
|
||||||
CONFIG_FTRACE_MCOUNT_RECORD=y
|
CONFIG_FTRACE_MCOUNT_RECORD=y
|
||||||
# CONFIG_FTRACE_STARTUP_TEST is not set
|
# CONFIG_FTRACE_STARTUP_TEST is not set
|
||||||
@ -4297,6 +4354,7 @@ CONFIG_APM_POWER=m
|
|||||||
# CONFIG_BATTERY_BQ27x00 is not set
|
# CONFIG_BATTERY_BQ27x00 is not set
|
||||||
# CONFIG_BATTERY_MAX17040 is not set
|
# CONFIG_BATTERY_MAX17040 is not set
|
||||||
# CONFIG_BATTERY_MAX17042 is not set
|
# CONFIG_BATTERY_MAX17042 is not set
|
||||||
|
# CONFIG_BATTERY_GOLDFISH is not set
|
||||||
|
|
||||||
# CONFIG_CHARGER_ISP1704 is not set
|
# CONFIG_CHARGER_ISP1704 is not set
|
||||||
# CONFIG_CHARGER_MAX8903 is not set
|
# CONFIG_CHARGER_MAX8903 is not set
|
||||||
@ -4342,9 +4400,6 @@ CONFIG_LIRC_TTUSBIR=m
|
|||||||
|
|
||||||
# CONFIG_DEVKMEM is not set
|
# CONFIG_DEVKMEM is not set
|
||||||
|
|
||||||
CONFIG_BNX2X=m
|
|
||||||
CONFIG_SCSI_BNX2X_FCOE=m
|
|
||||||
|
|
||||||
CONFIG_NOZOMI=m
|
CONFIG_NOZOMI=m
|
||||||
# CONFIG_TPS65010 is not set
|
# CONFIG_TPS65010 is not set
|
||||||
|
|
||||||
@ -4390,6 +4445,7 @@ CONFIG_NET_DSA_MV88E6123_61_65=m
|
|||||||
# CONFIG_PHONET is not set
|
# CONFIG_PHONET is not set
|
||||||
|
|
||||||
# CONFIG_ICS932S401 is not set
|
# CONFIG_ICS932S401 is not set
|
||||||
|
# CONFIG_ATMEL_SSC is not set
|
||||||
|
|
||||||
# CONFIG_C2PORT is not set
|
# CONFIG_C2PORT is not set
|
||||||
|
|
||||||
@ -4414,7 +4470,6 @@ CONFIG_UWB_WHCI=m
|
|||||||
CONFIG_UWB_I1480U=m
|
CONFIG_UWB_I1480U=m
|
||||||
|
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
# CONFIG_RTLLIB is not set
|
|
||||||
# CONFIG_ANDROID is not set
|
# CONFIG_ANDROID is not set
|
||||||
CONFIG_STAGING_MEDIA=y
|
CONFIG_STAGING_MEDIA=y
|
||||||
# CONFIG_DVB_AS102 is not set
|
# CONFIG_DVB_AS102 is not set
|
||||||
@ -4599,6 +4654,13 @@ CONFIG_GPIO_VIPERBOARD=m
|
|||||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||||
|
|
||||||
CONFIG_TEST_KSTRTOX=y
|
CONFIG_TEST_KSTRTOX=y
|
||||||
|
CONFIG_XZ_DEC=y
|
||||||
|
# CONFIG_XZ_DEC_X86 is not set
|
||||||
|
# CONFIG_XZ_DEC_POWERPC is not set
|
||||||
|
# CONFIG_XZ_DEC_IA64 is not set
|
||||||
|
# CONFIG_XZ_DEC_ARM is not set
|
||||||
|
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
||||||
|
# CONFIG_XZ_DEC_SPARC is not set
|
||||||
# CONFIG_XZ_DEC_TEST is not set
|
# CONFIG_XZ_DEC_TEST is not set
|
||||||
|
|
||||||
# CONFIG_POWER_AVS is not set
|
# CONFIG_POWER_AVS is not set
|
||||||
@ -4621,6 +4683,7 @@ CONFIG_PSTORE_RAM=m
|
|||||||
|
|
||||||
|
|
||||||
# CONFIG_AVERAGE is not set
|
# CONFIG_AVERAGE is not set
|
||||||
|
# CONFIG_VMXNET3 is not set
|
||||||
|
|
||||||
# CONFIG_SIGMA is not set
|
# CONFIG_SIGMA is not set
|
||||||
|
|
||||||
@ -4638,10 +4701,14 @@ CONFIG_BCMA_DRIVER_GPIO=y
|
|||||||
# CONFIG_INTEL_MID_PTI is not set
|
# CONFIG_INTEL_MID_PTI is not set
|
||||||
CONFIG_IOMMU_SUPPORT=y
|
CONFIG_IOMMU_SUPPORT=y
|
||||||
|
|
||||||
|
# CONFIG_MAILBOX is not set
|
||||||
|
|
||||||
# CONFIG_HSI is not set
|
# CONFIG_HSI is not set
|
||||||
|
|
||||||
# CONFIG_PM_DEVFREQ is not set
|
# CONFIG_PM_DEVFREQ is not set
|
||||||
# CONFIG_MODULE_SIG is not set
|
# CONFIG_MODULE_SIG is not set
|
||||||
|
# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
|
||||||
|
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
|
||||||
# CONFIG_MODULE_VERIFY_ELF is not set
|
# CONFIG_MODULE_VERIFY_ELF is not set
|
||||||
# CONFIG_CRYPTO_KEY_TYPE is not set
|
# CONFIG_CRYPTO_KEY_TYPE is not set
|
||||||
# CONFIG_PGP_LIBRARY is not set
|
# CONFIG_PGP_LIBRARY is not set
|
||||||
|
@ -96,6 +96,7 @@ CONFIG_PCI_DEFAULT_USE_CRS=y
|
|||||||
|
|
||||||
CONFIG_KGDB_KDB=y
|
CONFIG_KGDB_KDB=y
|
||||||
CONFIG_KDB_KEYBOARD=y
|
CONFIG_KDB_KEYBOARD=y
|
||||||
|
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
|
||||||
|
|
||||||
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
|
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
|
||||||
# CONFIG_TEST_LIST_SORT is not set
|
# CONFIG_TEST_LIST_SORT is not set
|
||||||
|
@ -346,6 +346,7 @@ CONFIG_I2C_MPC=m
|
|||||||
CONFIG_RFKILL_GPIO=m
|
CONFIG_RFKILL_GPIO=m
|
||||||
|
|
||||||
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
|
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
|
||||||
|
# CONFIG_CRYPTO_SHA1_PPC is not set
|
||||||
|
|
||||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||||
# CONFIG_GPIO_MCP23S08 is not set
|
# CONFIG_GPIO_MCP23S08 is not set
|
||||||
@ -381,8 +382,13 @@ CONFIG_RCU_FANOUT_LEAF=16
|
|||||||
# CONFIG_RTC_DRV_SNVS is not set
|
# CONFIG_RTC_DRV_SNVS is not set
|
||||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||||
|
|
||||||
|
# CONFIG_OF_DISPLAY_TIMING is not set
|
||||||
|
# CONFIG_OF_VIDEOMODE is not set
|
||||||
|
|
||||||
CONFIG_POWER_RESET_GPIO=y
|
CONFIG_POWER_RESET_GPIO=y
|
||||||
CONFIG_FB_SSD1307=m
|
CONFIG_FB_SSD1307=m
|
||||||
CONFIG_INPUT_PWM_BEEPER=m
|
CONFIG_INPUT_PWM_BEEPER=m
|
||||||
CONFIG_BACKLIGHT_PWM=m
|
CONFIG_BACKLIGHT_PWM=m
|
||||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
|
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
|
||||||
|
|
||||||
|
CONFIG_XZ_DEC_POWERPC=y
|
||||||
|
@ -178,4 +178,6 @@ CONFIG_BPF_JIT=y
|
|||||||
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
||||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||||
# CONFIG_PCIEPORTBUS is not set
|
# CONFIG_PCIEPORTBUS is not set
|
||||||
|
# CONFIG_PPC_TRANSACTIONAL_MEM is not set
|
||||||
|
# CONFIG_SND_HDA_INTEL is not set
|
||||||
|
CONFIG_BLK_DEV_RSXX=m
|
||||||
|
@ -169,4 +169,5 @@ CONFIG_BPF_JIT=y
|
|||||||
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
||||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||||
# CONFIG_PCIEPORTBUS is not set
|
# CONFIG_PCIEPORTBUS is not set
|
||||||
|
# CONFIG_SND_HDA_INTEL is not set
|
||||||
|
CONFIG_BLK_DEV_RSXX=m
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
CONFIG_X86_32_NON_STANDARD=y
|
CONFIG_X86_32_NON_STANDARD=y
|
||||||
|
|
||||||
# CONFIG_X86_ELAN is not set
|
# CONFIG_X86_ELAN is not set
|
||||||
|
# CONFIG_X86_GOLDFISH is not set
|
||||||
# CONFIG_X86_NUMAQ is not set
|
# CONFIG_X86_NUMAQ is not set
|
||||||
# CONFIG_X86_SUMMIT is not set
|
# CONFIG_X86_SUMMIT is not set
|
||||||
CONFIG_X86_BIGSMP=y
|
CONFIG_X86_BIGSMP=y
|
||||||
@ -227,3 +228,5 @@ CONFIG_BACKLIGHT_PWM=m
|
|||||||
# CONFIG_GPIO_ADNP is not set
|
# CONFIG_GPIO_ADNP is not set
|
||||||
# CONFIG_BACKLIGHT_OT200 is not set
|
# CONFIG_BACKLIGHT_OT200 is not set
|
||||||
# CONFIG_RTC_DRV_SNVS is not set
|
# CONFIG_RTC_DRV_SNVS is not set
|
||||||
|
# CONFIG_OF_DISPLAY_TIMING is not set
|
||||||
|
# CONFIG_OF_VIDEOMODE is not set
|
||||||
|
@ -14,6 +14,7 @@ CONFIG_I8K=m
|
|||||||
CONFIG_SONYPI_COMPAT=y
|
CONFIG_SONYPI_COMPAT=y
|
||||||
CONFIG_MICROCODE=m
|
CONFIG_MICROCODE=m
|
||||||
CONFIG_MICROCODE_INTEL=y
|
CONFIG_MICROCODE_INTEL=y
|
||||||
|
CONFIG_MICROCODE_INTEL_EARLY=y
|
||||||
CONFIG_MICROCODE_AMD=y
|
CONFIG_MICROCODE_AMD=y
|
||||||
|
|
||||||
CONFIG_X86_MSR=y
|
CONFIG_X86_MSR=y
|
||||||
@ -37,7 +38,7 @@ CONFIG_EFI=y
|
|||||||
CONFIG_EFI_STUB=y
|
CONFIG_EFI_STUB=y
|
||||||
CONFIG_EFI_VARS=y
|
CONFIG_EFI_VARS=y
|
||||||
CONFIG_EFI_VARS_PSTORE=y
|
CONFIG_EFI_VARS_PSTORE=y
|
||||||
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
|
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
|
||||||
CONFIG_EFI_PCDP=y
|
CONFIG_EFI_PCDP=y
|
||||||
CONFIG_FB_EFI=y
|
CONFIG_FB_EFI=y
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ CONFIG_ACPI_AC=y
|
|||||||
# CONFIG_ACPI_ASUS is not set
|
# CONFIG_ACPI_ASUS is not set
|
||||||
CONFIG_ACPI_BATTERY=y
|
CONFIG_ACPI_BATTERY=y
|
||||||
CONFIG_ACPI_BUTTON=y
|
CONFIG_ACPI_BUTTON=y
|
||||||
CONFIG_ACPI_CONTAINER=m
|
CONFIG_ACPI_CONTAINER=y
|
||||||
CONFIG_ACPI_DOCK=y
|
CONFIG_ACPI_DOCK=y
|
||||||
CONFIG_ACPI_FAN=y
|
CONFIG_ACPI_FAN=y
|
||||||
CONFIG_ACPI_NUMA=y
|
CONFIG_ACPI_NUMA=y
|
||||||
@ -96,11 +97,12 @@ CONFIG_ACPI_IPMI=m
|
|||||||
CONFIG_ACPI_CUSTOM_METHOD=m
|
CONFIG_ACPI_CUSTOM_METHOD=m
|
||||||
CONFIG_ACPI_BGRT=y
|
CONFIG_ACPI_BGRT=y
|
||||||
|
|
||||||
CONFIG_X86_ACPI_CPUFREQ=y
|
# CONFIG_X86_INTEL_PSTATE is not set
|
||||||
CONFIG_X86_PCC_CPUFREQ=y
|
CONFIG_X86_ACPI_CPUFREQ=m
|
||||||
|
CONFIG_X86_PCC_CPUFREQ=m
|
||||||
CONFIG_X86_ACPI_CPUFREQ_CPB=y
|
CONFIG_X86_ACPI_CPUFREQ_CPB=y
|
||||||
CONFIG_X86_POWERNOW_K8=y
|
CONFIG_X86_POWERNOW_K8=m
|
||||||
CONFIG_X86_P4_CLOCKMOD=y
|
CONFIG_X86_P4_CLOCKMOD=m
|
||||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -144,6 +146,7 @@ CONFIG_I2C_AMD756_S4882=m
|
|||||||
CONFIG_I2C_AMD8111=m
|
CONFIG_I2C_AMD8111=m
|
||||||
CONFIG_I2C_I801=m
|
CONFIG_I2C_I801=m
|
||||||
CONFIG_I2C_ISCH=m
|
CONFIG_I2C_ISCH=m
|
||||||
|
CONFIG_I2C_ISMT=m
|
||||||
CONFIG_I2C_NFORCE2=m
|
CONFIG_I2C_NFORCE2=m
|
||||||
CONFIG_I2C_NFORCE2_S4985=m
|
CONFIG_I2C_NFORCE2_S4985=m
|
||||||
CONFIG_I2C_PIIX4=m
|
CONFIG_I2C_PIIX4=m
|
||||||
@ -196,6 +199,7 @@ CONFIG_AMILO_RFKILL=m
|
|||||||
CONFIG_ASUS_LAPTOP=m
|
CONFIG_ASUS_LAPTOP=m
|
||||||
CONFIG_COMPAL_LAPTOP=m
|
CONFIG_COMPAL_LAPTOP=m
|
||||||
CONFIG_DELL_LAPTOP=m
|
CONFIG_DELL_LAPTOP=m
|
||||||
|
CONFIG_CHROMEOS_LAPTOP=m
|
||||||
CONFIG_EEEPC_LAPTOP=m
|
CONFIG_EEEPC_LAPTOP=m
|
||||||
CONFIG_FUJITSU_TABLET=m
|
CONFIG_FUJITSU_TABLET=m
|
||||||
CONFIG_FUJITSU_LAPTOP=m
|
CONFIG_FUJITSU_LAPTOP=m
|
||||||
@ -366,6 +370,7 @@ CONFIG_LPC_SCH=m
|
|||||||
CONFIG_LPC_ICH=m
|
CONFIG_LPC_ICH=m
|
||||||
|
|
||||||
CONFIG_GPIO_ICH=m
|
CONFIG_GPIO_ICH=m
|
||||||
|
# CONFIG_GPIO_LYNXPOINT is not set
|
||||||
|
|
||||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
CONFIG_PCI_CNB20LE_QUIRK=y
|
||||||
|
|
||||||
@ -396,6 +401,7 @@ CONFIG_PCH_PHUB=m
|
|||||||
|
|
||||||
CONFIG_CRYPTO_AES_NI_INTEL=y
|
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||||
CONFIG_CRYPTO_SERPENT_SSE2_586=m
|
CONFIG_CRYPTO_SERPENT_SSE2_586=m
|
||||||
|
CONFIG_CRYPTO_CRC32_PCLMUL=m
|
||||||
|
|
||||||
CONFIG_HP_ACCEL=m
|
CONFIG_HP_ACCEL=m
|
||||||
|
|
||||||
@ -425,14 +431,31 @@ CONFIG_DRM_GMA3600=y
|
|||||||
CONFIG_RCU_FANOUT_LEAF=16
|
CONFIG_RCU_FANOUT_LEAF=16
|
||||||
|
|
||||||
CONFIG_INTEL_MEI=m
|
CONFIG_INTEL_MEI=m
|
||||||
|
CONFIG_INTEL_MEI_ME=y
|
||||||
|
|
||||||
# Maybe enable in debug kernels?
|
# Maybe enable in debug kernels?
|
||||||
# CONFIG_DEBUG_NMI_SELFTEST is not set
|
# CONFIG_DEBUG_NMI_SELFTEST is not set
|
||||||
|
|
||||||
|
# CONFIG_X86_INTEL_LPSS is not set
|
||||||
|
|
||||||
|
# CONFIG_INTEL_POWERCLAMP is not set
|
||||||
|
|
||||||
|
CONFIG_VMWARE_VMCI=m
|
||||||
|
CONFIG_VMWARE_VMCI_VSOCKETS=m
|
||||||
|
|
||||||
|
CONFIG_XZ_DEC_X86=y
|
||||||
|
|
||||||
CONFIG_MPILIB=y
|
CONFIG_MPILIB=y
|
||||||
|
CONFIG_PKCS7_MESSAGE_PARSER=y
|
||||||
|
CONFIG_PE_FILE_PARSER=y
|
||||||
CONFIG_MODULE_SIG=y
|
CONFIG_MODULE_SIG=y
|
||||||
|
CONFIG_MODULE_SIG_ALL=y
|
||||||
# CONFIG_MODULE_SIG_SHA1 is not set
|
# CONFIG_MODULE_SIG_SHA1 is not set
|
||||||
CONFIG_MODULE_SIG_SHA256=y
|
CONFIG_MODULE_SIG_SHA256=y
|
||||||
# CONFIG_MODULE_SIG_FORCE is not set
|
# CONFIG_MODULE_SIG_FORCE is not set
|
||||||
CONFIG_MODULE_SIG_BLACKLIST=y
|
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
|
||||||
|
|
||||||
CONFIG_MODULE_SIG_UEFI=y
|
CONFIG_MODULE_SIG_UEFI=y
|
||||||
|
|
||||||
|
CONFIG_VMXNET3=m
|
||||||
|
CONFIG_VFIO_PCI_VGA=y
|
||||||
|
@ -130,6 +130,9 @@ CONFIG_BPF_JIT=y
|
|||||||
# Should be 32bit only, but lacks KConfig depends
|
# Should be 32bit only, but lacks KConfig depends
|
||||||
# CONFIG_XO15_EBOOK is not set
|
# CONFIG_XO15_EBOOK is not set
|
||||||
|
|
||||||
|
CONFIG_NTB=m
|
||||||
|
CONFIG_NTB_NETDEV=m
|
||||||
|
|
||||||
# 10GigE
|
# 10GigE
|
||||||
#
|
#
|
||||||
CONFIG_IP1000=m
|
CONFIG_IP1000=m
|
||||||
|
@ -9,13 +9,13 @@ diff -durpN '--exclude-from=/home/davej/.exclude' /home/davej/src/kernel/git-tre
|
|||||||
#include <linux/migrate.h>
|
#include <linux/migrate.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
|
||||||
--- linux-3.8.6-104.fc17.noarch/mm/memory.c~ 2013-04-11 11:48:54.024470277 -0400
|
--- linux-3.9.0-200.fc18.x86_64/mm/memory.c~ 2013-05-06 15:04:30.324416922 -0400
|
||||||
+++ linux-3.8.6-104.fc17.noarch/mm/memory.c 2013-04-11 11:49:15.770425274 -0400
|
+++ linux-3.9.0-200.fc18.x86_64/mm/memory.c 2013-05-06 15:04:43.933398227 -0400
|
||||||
@@ -718,6 +718,7 @@ static void print_bad_pte(struct vm_area
|
@@ -723,6 +723,7 @@ static void print_bad_pte(struct vm_area
|
||||||
if (vma->vm_file && vma->vm_file->f_op)
|
if (vma->vm_file && vma->vm_file->f_op)
|
||||||
print_symbol(KERN_ALERT "vma->vm_file->f_op->mmap: %s\n",
|
print_symbol(KERN_ALERT "vma->vm_file->f_op->mmap: %s\n",
|
||||||
(unsigned long)vma->vm_file->f_op->mmap);
|
(unsigned long)vma->vm_file->f_op->mmap);
|
||||||
+ print_modules();
|
+ print_modules();
|
||||||
dump_stack();
|
dump_stack();
|
||||||
add_taint(TAINT_BAD_PAGE);
|
add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
|
||||||
}
|
}
|
||||||
|
@ -11,15 +11,15 @@ index 296cfc2..516e1e2 100644
|
|||||||
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
||||||
I915_READ(PCH_PP_STATUS),
|
I915_READ(PCH_PP_STATUS),
|
||||||
I915_READ(PCH_PP_CONTROL));
|
I915_READ(PCH_PP_CONTROL));
|
||||||
@@ -400,7 +400,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
|
@@ -447,7 +447,7 @@ intel_dp_aux_ch(struct intel_dp *intel_d
|
||||||
}
|
}
|
||||||
|
|
||||||
if (try == 3) {
|
if (try == 3) {
|
||||||
- WARN(1, "dp_aux_ch not started status 0x%08x\n",
|
- WARN(1, "dp_aux_ch not started status 0x%08x\n",
|
||||||
+ DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
|
+ DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
|
||||||
I915_READ(ch_ctl));
|
I915_READ(ch_ctl));
|
||||||
return -EBUSY;
|
ret = -EBUSY;
|
||||||
}
|
goto out;
|
||||||
@@ -1024,8 +1024,8 @@ static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
@@ -1024,8 +1024,8 @@ static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||||
return;
|
return;
|
||||||
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
||||||
|
96
kernel.spec
96
kernel.spec
@ -68,13 +68,13 @@ Summary: The Linux kernel
|
|||||||
# base_sublevel is the kernel version we're starting with and patching
|
# base_sublevel is the kernel version we're starting with and patching
|
||||||
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
|
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
|
||||||
# which yields a base_sublevel of 0.
|
# which yields a base_sublevel of 0.
|
||||||
%define base_sublevel 8
|
%define base_sublevel 9
|
||||||
|
|
||||||
## If this is a released kernel ##
|
## If this is a released kernel ##
|
||||||
%if 0%{?released_kernel}
|
%if 0%{?released_kernel}
|
||||||
|
|
||||||
# Do we have a -stable update to apply?
|
# Do we have a -stable update to apply?
|
||||||
%define stable_update 11
|
%define stable_update 0
|
||||||
# Is it a -stable RC?
|
# Is it a -stable RC?
|
||||||
%define stable_rc 0
|
%define stable_rc 0
|
||||||
# Set rpm version accordingly
|
# Set rpm version accordingly
|
||||||
@ -666,9 +666,7 @@ Patch460: serial-460800.patch
|
|||||||
Patch470: die-floppy-die.patch
|
Patch470: die-floppy-die.patch
|
||||||
|
|
||||||
Patch510: silence-noise.patch
|
Patch510: silence-noise.patch
|
||||||
Patch520: quiet-apm.patch
|
|
||||||
Patch530: silence-fbcon-logo.patch
|
Patch530: silence-fbcon-logo.patch
|
||||||
Patch540: silence-empty-ipi-mask-warning.patch
|
|
||||||
|
|
||||||
Patch800: crash-driver.patch
|
Patch800: crash-driver.patch
|
||||||
|
|
||||||
@ -713,8 +711,6 @@ Patch14000: hibernate-freeze-filesystems.patch
|
|||||||
|
|
||||||
Patch14010: lis3-improve-handling-of-null-rate.patch
|
Patch14010: lis3-improve-handling-of-null-rate.patch
|
||||||
|
|
||||||
Patch14011: team-net-next-update-20130307.patch
|
|
||||||
|
|
||||||
|
|
||||||
Patch20000: 0001-efifb-Skip-DMI-checks-if-the-bootloader-knows-what-i.patch
|
Patch20000: 0001-efifb-Skip-DMI-checks-if-the-bootloader-knows-what-i.patch
|
||||||
Patch20001: 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch
|
Patch20001: 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch
|
||||||
@ -735,13 +731,6 @@ Patch22001: selinux-apply-different-permission-to-ptrace-child.patch
|
|||||||
#rhbz 859485
|
#rhbz 859485
|
||||||
Patch22226: vt-Drop-K_OFF-for-VC_MUTE.patch
|
Patch22226: vt-Drop-K_OFF-for-VC_MUTE.patch
|
||||||
|
|
||||||
#rhbz 799564
|
|
||||||
Patch22240: Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch
|
|
||||||
Patch22241: Input-add-support-for-Cypress-PS2-Trackpads.patch
|
|
||||||
|
|
||||||
#rhbz 912166
|
|
||||||
Patch22243: Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch
|
|
||||||
|
|
||||||
#rhbz 892811
|
#rhbz 892811
|
||||||
Patch22247: ath9k_rx_dma_stop_check.patch
|
Patch22247: ath9k_rx_dma_stop_check.patch
|
||||||
|
|
||||||
@ -751,36 +740,15 @@ Patch22261: 0001-kmsg-Honor-dmesg_restrict-sysctl-on-dev-kmsg.patch
|
|||||||
#rhbz 916544
|
#rhbz 916544
|
||||||
Patch22263: 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
Patch22263: 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
||||||
|
|
||||||
#rhbz 812111
|
|
||||||
Patch24000: alps-v2.patch
|
|
||||||
|
|
||||||
Patch24100: userns-avoid-recursion-in-put_user_ns.patch
|
|
||||||
|
|
||||||
#rhbz 879462
|
|
||||||
Patch24107: uvcvideo-suspend-fix.patch
|
|
||||||
|
|
||||||
#rhbz 856863 892599
|
|
||||||
Patch24111: cfg80211-mac80211-disconnect-on-suspend.patch
|
|
||||||
Patch24112: mac80211_fixes_for_ieee80211_do_stop_while_suspend_v3.8.patch
|
|
||||||
|
|
||||||
#rhbz 859282
|
#rhbz 859282
|
||||||
Patch24113: VMX-x86-handle-host-TSC-calibration-failure.patch
|
Patch24113: VMX-x86-handle-host-TSC-calibration-failure.patch
|
||||||
|
|
||||||
#rhbz 920586
|
|
||||||
Patch25000: amd64_edac_fix_rank_count.patch
|
|
||||||
|
|
||||||
#rhbz 921500
|
#rhbz 921500
|
||||||
Patch25001: i7300_edac_single_mode_fixup.patch
|
Patch25001: i7300_edac_single_mode_fixup.patch
|
||||||
|
|
||||||
#rhbz 920218
|
|
||||||
Patch25006: mac80211-Dont-restart-sta-timer-if-not-running.patch
|
|
||||||
|
|
||||||
#rhbz 927469
|
#rhbz 927469
|
||||||
Patch25007: fix-child-thread-introspection.patch
|
Patch25007: fix-child-thread-introspection.patch
|
||||||
|
|
||||||
#rhbz 844750
|
|
||||||
Patch25008: 0001-bluetooth-Add-support-for-atheros-04ca-3004-device-t.patch
|
|
||||||
|
|
||||||
#rhbz 919176
|
#rhbz 919176
|
||||||
Patch25010: wireless-regulatory-fix-channel-disabling-race-condition.patch
|
Patch25010: wireless-regulatory-fix-channel-disabling-race-condition.patch
|
||||||
|
|
||||||
@ -1409,9 +1377,6 @@ ApplyPatch silence-noise.patch
|
|||||||
# Make fbcon not show the penguins with 'quiet'
|
# Make fbcon not show the penguins with 'quiet'
|
||||||
ApplyPatch silence-fbcon-logo.patch
|
ApplyPatch silence-fbcon-logo.patch
|
||||||
|
|
||||||
# no-one cares about these warnings.
|
|
||||||
ApplyPatch silence-empty-ipi-mask-warning.patch
|
|
||||||
|
|
||||||
# Changes to upstream defaults.
|
# Changes to upstream defaults.
|
||||||
|
|
||||||
|
|
||||||
@ -1419,7 +1384,7 @@ ApplyPatch silence-empty-ipi-mask-warning.patch
|
|||||||
ApplyPatch crash-driver.patch
|
ApplyPatch crash-driver.patch
|
||||||
|
|
||||||
# secure boot
|
# secure boot
|
||||||
ApplyPatch secure-boot-20130409.patch
|
#ApplyPatch secure-boot-20130409.patch
|
||||||
|
|
||||||
# Assorted Virt Fixes
|
# Assorted Virt Fixes
|
||||||
|
|
||||||
@ -1436,7 +1401,6 @@ ApplyPatch drm-i915-tv-detect-hush.patch
|
|||||||
|
|
||||||
# silence the ACPI blacklist code
|
# silence the ACPI blacklist code
|
||||||
ApplyPatch silence-acpi-blacklist.patch
|
ApplyPatch silence-acpi-blacklist.patch
|
||||||
ApplyPatch quiet-apm.patch
|
|
||||||
|
|
||||||
# V4L/DVB updates/fixes/experimental drivers
|
# V4L/DVB updates/fixes/experimental drivers
|
||||||
# apply if non-empty
|
# apply if non-empty
|
||||||
@ -1470,54 +1434,24 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
|
|||||||
#rhbz 859485
|
#rhbz 859485
|
||||||
ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch
|
ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch
|
||||||
|
|
||||||
#rhbz 799564
|
|
||||||
ApplyPatch Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch
|
|
||||||
ApplyPatch Input-add-support-for-Cypress-PS2-Trackpads.patch
|
|
||||||
|
|
||||||
#rhbz 912166
|
|
||||||
ApplyPatch Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch
|
|
||||||
|
|
||||||
#rhbz 892811
|
#rhbz 892811
|
||||||
ApplyPatch ath9k_rx_dma_stop_check.patch
|
ApplyPatch ath9k_rx_dma_stop_check.patch
|
||||||
|
|
||||||
#rhbz 812111
|
|
||||||
ApplyPatch alps-v2.patch
|
|
||||||
|
|
||||||
#rhbz 903192
|
#rhbz 903192
|
||||||
ApplyPatch 0001-kmsg-Honor-dmesg_restrict-sysctl-on-dev-kmsg.patch
|
ApplyPatch 0001-kmsg-Honor-dmesg_restrict-sysctl-on-dev-kmsg.patch
|
||||||
|
|
||||||
#rhbz 916544
|
#rhbz 916544
|
||||||
ApplyPatch 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
ApplyPatch 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
||||||
|
|
||||||
ApplyPatch userns-avoid-recursion-in-put_user_ns.patch
|
|
||||||
|
|
||||||
#rhbz 920586
|
|
||||||
ApplyPatch amd64_edac_fix_rank_count.patch
|
|
||||||
|
|
||||||
#rhbz 921500
|
#rhbz 921500
|
||||||
ApplyPatch i7300_edac_single_mode_fixup.patch
|
ApplyPatch i7300_edac_single_mode_fixup.patch
|
||||||
|
|
||||||
#Team Driver update
|
|
||||||
ApplyPatch team-net-next-update-20130307.patch
|
|
||||||
|
|
||||||
#rhbz 879462
|
|
||||||
ApplyPatch uvcvideo-suspend-fix.patch
|
|
||||||
|
|
||||||
#rhbz 856863 892599
|
|
||||||
ApplyPatch cfg80211-mac80211-disconnect-on-suspend.patch
|
|
||||||
ApplyPatch mac80211_fixes_for_ieee80211_do_stop_while_suspend_v3.8.patch
|
|
||||||
|
|
||||||
#rhbz 859282
|
#rhbz 859282
|
||||||
ApplyPatch VMX-x86-handle-host-TSC-calibration-failure.patch
|
ApplyPatch VMX-x86-handle-host-TSC-calibration-failure.patch
|
||||||
|
|
||||||
#rhbz 920218
|
|
||||||
ApplyPatch mac80211-Dont-restart-sta-timer-if-not-running.patch
|
|
||||||
|
|
||||||
#rhbz 927469
|
#rhbz 927469
|
||||||
ApplyPatch fix-child-thread-introspection.patch
|
ApplyPatch fix-child-thread-introspection.patch
|
||||||
|
|
||||||
ApplyPatch 0001-bluetooth-Add-support-for-atheros-04ca-3004-device-t.patch
|
|
||||||
|
|
||||||
#rhbz 919176
|
#rhbz 919176
|
||||||
ApplyPatch wireless-regulatory-fix-channel-disabling-race-condition.patch
|
ApplyPatch wireless-regulatory-fix-channel-disabling-race-condition.patch
|
||||||
|
|
||||||
@ -1544,6 +1478,11 @@ mkdir configs
|
|||||||
rm -f kernel-%{version}-*debug.config
|
rm -f kernel-%{version}-*debug.config
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
|
# FIXME: ARM config broken on 3.9 rebase
|
||||||
|
rm -f kernel-%{version}-arm*.config
|
||||||
|
|
||||||
|
|
||||||
# now run oldconfig over all the config files
|
# now run oldconfig over all the config files
|
||||||
for i in *.config
|
for i in *.config
|
||||||
do
|
do
|
||||||
@ -2381,6 +2320,25 @@ fi
|
|||||||
# ||----w |
|
# ||----w |
|
||||||
# || ||
|
# || ||
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon May 06 2013 Dave Jones <davej@redhat.com> - 3.9.0-200
|
||||||
|
- Rebase to Linux 3.9
|
||||||
|
merged: silence-empty-ipi-mask-warning.patch
|
||||||
|
merged: quiet-apm.patch
|
||||||
|
merged: Input-increase-struct-ps2dev-cmdbuf-to-8-bytes.patch
|
||||||
|
merged: Input-add-support-for-Cypress-PS2-Trackpads.patch
|
||||||
|
merged: Input-cypress_ps2-fix-trackpadi-found-in-Dell-XPS12.patch
|
||||||
|
merged: alps-v2.patch
|
||||||
|
merged: userns-avoid-recursion-in-put_user_ns.patch
|
||||||
|
merged: amd64_edac_fix_rank_count.patch
|
||||||
|
merged: team-net-next-update-20130307.patch
|
||||||
|
merged: uvcvideo-suspend-fix.patch
|
||||||
|
merged: cfg80211-mac80211-disconnect-on-suspend.patch
|
||||||
|
merged: mac80211_fixes_for_ieee80211_do_stop_while_suspend_v3.8.patch
|
||||||
|
merged: mac80211-Dont-restart-sta-timer-if-not-running.patch
|
||||||
|
merged: 0001-bluetooth-Add-support-for-atheros-04ca-3004-device-t.patch
|
||||||
|
TODO: secure-boot
|
||||||
|
TODO: ARM configs.
|
||||||
|
|
||||||
* Wed May 01 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.11-200
|
* Wed May 01 2013 Justin M. Forbes <jforbes@redhat.com> - 3.8.11-200
|
||||||
- Linux v3.8.11
|
- Linux v3.8.11
|
||||||
|
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
From: Ben Greear <greearb@candelatech.com>
|
|
||||||
|
|
||||||
I found another crash when deleting lots of virtual stations
|
|
||||||
in a congested environment. I think the problem is that
|
|
||||||
the ieee80211_mlme_notify_scan_completed could call
|
|
||||||
ieee80211_restart_sta_timer for a stopped interface
|
|
||||||
that was about to be deleted. Fix similar problem for
|
|
||||||
mesh interfaces as well.
|
|
||||||
|
|
||||||
Signed-off-by: Ben Greear <greearb@candelatech.com>
|
|
||||||
---
|
|
||||||
v4: Fix up mesh as well, add check in calling code instead of
|
|
||||||
in the methods that mucks iwth the timers.
|
|
||||||
|
|
||||||
:100644 100644 67fcfdf... 02e3d75... M net/mac80211/mesh.c
|
|
||||||
:100644 100644 aec786d... 1d237e9... M net/mac80211/mlme.c
|
|
||||||
net/mac80211/mesh.c | 3 ++-
|
|
||||||
net/mac80211/mlme.c | 3 ++-
|
|
||||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
|
|
||||||
index 67fcfdf..02e3d75 100644
|
|
||||||
--- a/net/mac80211/mesh.c
|
|
||||||
+++ b/net/mac80211/mesh.c
|
|
||||||
@@ -779,7 +779,8 @@ void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local)
|
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
list_for_each_entry_rcu(sdata, &local->interfaces, list)
|
|
||||||
- if (ieee80211_vif_is_mesh(&sdata->vif))
|
|
||||||
+ if (ieee80211_sdata_running(sdata)
|
|
||||||
+ && ieee80211_vif_is_mesh(&sdata->vif))
|
|
||||||
ieee80211_queue_work(&local->hw, &sdata->work);
|
|
||||||
rcu_read_unlock();
|
|
||||||
}
|
|
||||||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
|
|
||||||
index aec786d..1d237e9 100644
|
|
||||||
--- a/net/mac80211/mlme.c
|
|
||||||
+++ b/net/mac80211/mlme.c
|
|
||||||
@@ -3054,7 +3054,8 @@ void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local)
|
|
||||||
/* Restart STA timers */
|
|
||||||
rcu_read_lock();
|
|
||||||
list_for_each_entry_rcu(sdata, &local->interfaces, list)
|
|
||||||
- ieee80211_restart_sta_timer(sdata);
|
|
||||||
+ if (ieee80211_sdata_running(sdata))
|
|
||||||
+ ieee80211_restart_sta_timer(sdata);
|
|
||||||
rcu_read_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.3.4
|
|
||||||
|
|
||||||
--
|
|
||||||
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
|
||||||
the body of a message to majordomo@vger.kernel.org
|
|
||||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -1,71 +0,0 @@
|
|||||||
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
|
|
||||||
index 8be854e..6d2bab7 100644
|
|
||||||
--- a/net/mac80211/iface.c
|
|
||||||
+++ b/net/mac80211/iface.c
|
|
||||||
@@ -605,7 +605,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
|
|
||||||
}
|
|
||||||
|
|
||||||
ieee80211_adjust_monitor_flags(sdata, 1);
|
|
||||||
- ieee80211_configure_filter(local);
|
|
||||||
+ /* tell driver latter (if not suspended) */
|
|
||||||
|
|
||||||
netif_carrier_on(dev);
|
|
||||||
break;
|
|
||||||
@@ -804,8 +804,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
||||||
sdata->dev->addr_len);
|
|
||||||
spin_unlock_bh(&local->filter_lock);
|
|
||||||
netif_addr_unlock_bh(sdata->dev);
|
|
||||||
-
|
|
||||||
- ieee80211_configure_filter(local);
|
|
||||||
+ /* configure filter latter (if not suspended) */
|
|
||||||
}
|
|
||||||
|
|
||||||
del_timer_sync(&local->dynamic_ps_timer);
|
|
||||||
@@ -872,32 +871,30 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
||||||
*/
|
|
||||||
ieee80211_free_keys(sdata);
|
|
||||||
|
|
||||||
- if (going_down)
|
|
||||||
+ if (going_down && !local->suspended)
|
|
||||||
drv_remove_interface(local, sdata);
|
|
||||||
}
|
|
||||||
|
|
||||||
sdata->bss = NULL;
|
|
||||||
|
|
||||||
- mutex_lock(&local->mtx);
|
|
||||||
- hw_reconf_flags |= __ieee80211_recalc_idle(local);
|
|
||||||
- mutex_unlock(&local->mtx);
|
|
||||||
-
|
|
||||||
- ieee80211_recalc_ps(local, -1);
|
|
||||||
+ if (!local->suspended) {
|
|
||||||
+ if (local->open_count == 0) {
|
|
||||||
+ if (local->ops->napi_poll)
|
|
||||||
+ napi_disable(&local->napi);
|
|
||||||
+ ieee80211_clear_tx_pending(local);
|
|
||||||
+ ieee80211_stop_device(local);
|
|
||||||
+ } else {
|
|
||||||
+ ieee80211_recalc_ps(local, -1);
|
|
||||||
|
|
||||||
- if (local->open_count == 0) {
|
|
||||||
- if (local->ops->napi_poll)
|
|
||||||
- napi_disable(&local->napi);
|
|
||||||
- ieee80211_clear_tx_pending(local);
|
|
||||||
- ieee80211_stop_device(local);
|
|
||||||
+ mutex_lock(&local->mtx);
|
|
||||||
+ hw_reconf_flags |= __ieee80211_recalc_idle(local);
|
|
||||||
+ mutex_unlock(&local->mtx);
|
|
||||||
|
|
||||||
- /* no reconfiguring after stop! */
|
|
||||||
- hw_reconf_flags = 0;
|
|
||||||
+ if (hw_reconf_flags)
|
|
||||||
+ ieee80211_hw_config(local, hw_reconf_flags);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* do after stop to avoid reconfiguring when we stop anyway */
|
|
||||||
- if (hw_reconf_flags)
|
|
||||||
- ieee80211_hw_config(local, hw_reconf_flags);
|
|
||||||
-
|
|
||||||
spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
|
|
||||||
for (i = 0; i < IEEE80211_MAX_QUEUES; i++) {
|
|
||||||
skb_queue_walk_safe(&local->pending[i], skb, tmp) {
|
|
@ -1,13 +0,0 @@
|
|||||||
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
|
|
||||||
index a46bd38..416dd12 100644
|
|
||||||
--- a/arch/x86/kernel/apm_32.c
|
|
||||||
+++ b/arch/x86/kernel/apm_32.c
|
|
||||||
@@ -903,7 +903,7 @@ static void apm_cpu_idle(void)
|
|
||||||
unsigned int jiffies_since_last_check = jiffies - last_jiffies;
|
|
||||||
unsigned int bucket;
|
|
||||||
|
|
||||||
- WARN_ONCE(1, "deprecated apm_cpu_idle will be deleted in 2012");
|
|
||||||
+ printk_once(KERN_INFO "deprecated apm_cpu_idle will be deleted in 2012");
|
|
||||||
recalc:
|
|
||||||
if (jiffies_since_last_check > IDLE_CALC_LIMIT) {
|
|
||||||
use_apm_idle = 0;
|
|
@ -1,7 +1,7 @@
|
|||||||
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
|
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
|
||||||
index 2209620..659c1bb 100644
|
index 2209620..659c1bb 100644
|
||||||
--- a/drivers/tty/serial/8250/8250.c
|
--- a/drivers/tty/serial/8250/8250_core.c
|
||||||
+++ b/drivers/tty/serial/8250/8250.c
|
+++ b/drivers/tty/serial/8250/8250_core.c
|
||||||
@@ -7,6 +7,9 @@
|
@@ -7,6 +7,9 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001 Russell King.
|
* Copyright (C) 2001 Russell King.
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
--- linux-3.6.noarch/arch/x86/kernel/apic/ipi.c~ 2013-01-23 10:48:14.716069615 -0500
|
|
||||||
+++ linux-3.6.noarch/arch/x86/kernel/apic/ipi.c 2013-01-23 10:48:26.217046545 -0500
|
|
||||||
@@ -106,7 +106,7 @@ void default_send_IPI_mask_logical(const
|
|
||||||
unsigned long mask = cpumask_bits(cpumask)[0];
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
- if (WARN_ONCE(!mask, "empty IPI mask"))
|
|
||||||
+ if (!mask)
|
|
||||||
return;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
3
sources
3
sources
@ -1,2 +1 @@
|
|||||||
1c738edfc54e7c65faeb90c436104e2f linux-3.8.tar.xz
|
4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz
|
||||||
76ec67882ad94b8ab43c70a46befca13 patch-3.8.11.xz
|
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
diff --git a/kernel/module.c b/kernel/module.c
|
--- linux-3.9.0-200.fc18.x86_64/kernel/module.c~ 2013-05-06 15:01:57.589631369 -0400
|
||||||
index 04379f92..d26c9a3 100644
|
+++ linux-3.9.0-200.fc18.x86_64/kernel/module.c 2013-05-06 15:02:30.635583966 -0400
|
||||||
--- a/kernel/module.c
|
@@ -2873,6 +2873,10 @@ static int check_module_license_and_vers
|
||||||
+++ b/kernel/module.c
|
|
||||||
@@ -2653,6 +2653,10 @@ static int check_module_license_and_versions(struct module *mod)
|
|
||||||
if (strcmp(mod->name, "ndiswrapper") == 0)
|
if (strcmp(mod->name, "ndiswrapper") == 0)
|
||||||
add_taint(TAINT_PROPRIETARY_MODULE);
|
add_taint(TAINT_PROPRIETARY_MODULE, LOCKDEP_NOW_UNRELIABLE);
|
||||||
|
|
||||||
+ /* vbox is garbage. */
|
+ /* vbox is garbage. */
|
||||||
+ if (strcmp(mod->name, "vboxdrv") == 0)
|
+ if (strcmp(mod->name, "vboxdrv") == 0)
|
||||||
+ add_taint(TAINT_CRAP);
|
+ add_taint(TAINT_CRAP, LOCKDEP_NOW_UNRELIABLE);
|
||||||
+
|
+
|
||||||
/* driverloader was caught wrongly pretending to be under GPL */
|
/* driverloader was caught wrongly pretending to be under GPL */
|
||||||
if (strcmp(mod->name, "driverloader") == 0)
|
if (strcmp(mod->name, "driverloader") == 0)
|
||||||
add_taint_module(mod, TAINT_PROPRIETARY_MODULE);
|
add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
|
||||||
|
@ -1,608 +0,0 @@
|
|||||||
Update team driver to 3.9-rc1.
|
|
||||||
|
|
||||||
Split patches available here:
|
|
||||||
http://people.redhat.com/jpirko/f18_team_update_4/
|
|
||||||
|
|
||||||
Flavio Leitner (5):
|
|
||||||
team: implement carrier change
|
|
||||||
team: add ethtool support
|
|
||||||
team: update master carrier state
|
|
||||||
team: use strlcpy with ethtool_drvinfo fields
|
|
||||||
team: allow userspace to take control over carrier
|
|
||||||
|
|
||||||
Jiri Pirko (5):
|
|
||||||
rtnl: expose carrier value with possibility to set it
|
|
||||||
net: add change_carrier netdev op
|
|
||||||
team: handle sending port list in the same way option list is sent
|
|
||||||
team: move netlink event notifiers after team_port_leave()
|
|
||||||
team: ab: set active port option as changed when port is leaving
|
|
||||||
|
|
||||||
Documentation/networking/operstates.txt | 4 +
|
|
||||||
drivers/net/team/team.c | 246 +++++++++++++++++++-----------
|
|
||||||
drivers/net/team/team_mode_activebackup.c | 13 +-
|
|
||||||
include/linux/if_team.h | 1 +
|
|
||||||
include/linux/netdevice.h | 12 ++
|
|
||||||
include/uapi/linux/if_link.h | 1 +
|
|
||||||
net/core/dev.c | 19 +++
|
|
||||||
net/core/rtnetlink.c | 10 ++
|
|
||||||
8 files changed, 215 insertions(+), 91 deletions(-)
|
|
||||||
|
|
||||||
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
|
|
||||||
|
|
||||||
diff --git a/Documentation/networking/operstates.txt b/Documentation/networking/operstates.txt
|
|
||||||
index 1a77a3c..9769457 100644
|
|
||||||
--- a/Documentation/networking/operstates.txt
|
|
||||||
+++ b/Documentation/networking/operstates.txt
|
|
||||||
@@ -88,6 +88,10 @@ set this flag. On netif_carrier_off(), the scheduler stops sending
|
|
||||||
packets. The name 'carrier' and the inversion are historical, think of
|
|
||||||
it as lower layer.
|
|
||||||
|
|
||||||
+Note that for certain kind of soft-devices, which are not managing any
|
|
||||||
+real hardware, there is possible to set this bit from userpsace.
|
|
||||||
+One should use TVL IFLA_CARRIER to do so.
|
|
||||||
+
|
|
||||||
netif_carrier_ok() can be used to query that bit.
|
|
||||||
|
|
||||||
__LINK_STATE_DORMANT, maps to IFF_DORMANT:
|
|
||||||
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
|
|
||||||
index ad86660..9e68014 100644
|
|
||||||
--- a/drivers/net/team/team.c
|
|
||||||
+++ b/drivers/net/team/team.c
|
|
||||||
@@ -28,6 +28,7 @@
|
|
||||||
#include <net/genetlink.h>
|
|
||||||
#include <net/netlink.h>
|
|
||||||
#include <net/sch_generic.h>
|
|
||||||
+#include <generated/utsrelease.h>
|
|
||||||
#include <linux/if_team.h>
|
|
||||||
|
|
||||||
#define DRV_NAME "team"
|
|
||||||
@@ -507,6 +508,7 @@ static bool team_is_mode_set(struct team *team)
|
|
||||||
|
|
||||||
static void team_set_no_mode(struct team *team)
|
|
||||||
{
|
|
||||||
+ team->user_carrier_enabled = false;
|
|
||||||
team->mode = &__team_no_mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1129,10 +1131,6 @@ static int team_port_del(struct team *team, struct net_device *port_dev)
|
|
||||||
return -ENOENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
- __team_option_inst_mark_removed_port(team, port);
|
|
||||||
- __team_options_change_check(team);
|
|
||||||
- __team_option_inst_del_port(team, port);
|
|
||||||
- __team_port_change_port_removed(port);
|
|
||||||
team_port_disable(team, port);
|
|
||||||
list_del_rcu(&port->list);
|
|
||||||
netdev_rx_handler_unregister(port_dev);
|
|
||||||
@@ -1141,6 +1139,12 @@ static int team_port_del(struct team *team, struct net_device *port_dev)
|
|
||||||
vlan_vids_del_by_dev(port_dev, dev);
|
|
||||||
dev_close(port_dev);
|
|
||||||
team_port_leave(team, port);
|
|
||||||
+
|
|
||||||
+ __team_option_inst_mark_removed_port(team, port);
|
|
||||||
+ __team_options_change_check(team);
|
|
||||||
+ __team_option_inst_del_port(team, port);
|
|
||||||
+ __team_port_change_port_removed(port);
|
|
||||||
+
|
|
||||||
team_port_set_orig_dev_addr(port);
|
|
||||||
dev_set_mtu(port_dev, port->orig.mtu);
|
|
||||||
synchronize_rcu();
|
|
||||||
@@ -1399,13 +1403,11 @@ static void team_destructor(struct net_device *dev)
|
|
||||||
|
|
||||||
static int team_open(struct net_device *dev)
|
|
||||||
{
|
|
||||||
- netif_carrier_on(dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int team_close(struct net_device *dev)
|
|
||||||
{
|
|
||||||
- netif_carrier_off(dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1707,6 +1709,19 @@ static netdev_features_t team_fix_features(struct net_device *dev,
|
|
||||||
return features;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int team_change_carrier(struct net_device *dev, bool new_carrier)
|
|
||||||
+{
|
|
||||||
+ struct team *team = netdev_priv(dev);
|
|
||||||
+
|
|
||||||
+ team->user_carrier_enabled = true;
|
|
||||||
+
|
|
||||||
+ if (new_carrier)
|
|
||||||
+ netif_carrier_on(dev);
|
|
||||||
+ else
|
|
||||||
+ netif_carrier_off(dev);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static const struct net_device_ops team_netdev_ops = {
|
|
||||||
.ndo_init = team_init,
|
|
||||||
.ndo_uninit = team_uninit,
|
|
||||||
@@ -1729,8 +1744,24 @@ static const struct net_device_ops team_netdev_ops = {
|
|
||||||
.ndo_add_slave = team_add_slave,
|
|
||||||
.ndo_del_slave = team_del_slave,
|
|
||||||
.ndo_fix_features = team_fix_features,
|
|
||||||
+ .ndo_change_carrier = team_change_carrier,
|
|
||||||
};
|
|
||||||
|
|
||||||
+/***********************
|
|
||||||
+ * ethtool interface
|
|
||||||
+ ***********************/
|
|
||||||
+
|
|
||||||
+static void team_ethtool_get_drvinfo(struct net_device *dev,
|
|
||||||
+ struct ethtool_drvinfo *drvinfo)
|
|
||||||
+{
|
|
||||||
+ strlcpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver));
|
|
||||||
+ strlcpy(drvinfo->version, UTS_RELEASE, sizeof(drvinfo->version));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct ethtool_ops team_ethtool_ops = {
|
|
||||||
+ .get_drvinfo = team_ethtool_get_drvinfo,
|
|
||||||
+ .get_link = ethtool_op_get_link,
|
|
||||||
+};
|
|
||||||
|
|
||||||
/***********************
|
|
||||||
* rt netlink interface
|
|
||||||
@@ -1780,6 +1811,7 @@ static void team_setup(struct net_device *dev)
|
|
||||||
ether_setup(dev);
|
|
||||||
|
|
||||||
dev->netdev_ops = &team_netdev_ops;
|
|
||||||
+ dev->ethtool_ops = &team_ethtool_ops;
|
|
||||||
dev->destructor = team_destructor;
|
|
||||||
dev->tx_queue_len = 0;
|
|
||||||
dev->flags |= IFF_MULTICAST;
|
|
||||||
@@ -1941,30 +1973,6 @@ static void team_nl_team_put(struct team *team)
|
|
||||||
dev_put(team->dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int team_nl_send_generic(struct genl_info *info, struct team *team,
|
|
||||||
- int (*fill_func)(struct sk_buff *skb,
|
|
||||||
- struct genl_info *info,
|
|
||||||
- int flags, struct team *team))
|
|
||||||
-{
|
|
||||||
- struct sk_buff *skb;
|
|
||||||
- int err;
|
|
||||||
-
|
|
||||||
- skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
|
||||||
- if (!skb)
|
|
||||||
- return -ENOMEM;
|
|
||||||
-
|
|
||||||
- err = fill_func(skb, info, NLM_F_ACK, team);
|
|
||||||
- if (err < 0)
|
|
||||||
- goto err_fill;
|
|
||||||
-
|
|
||||||
- err = genlmsg_unicast(genl_info_net(info), skb, info->snd_portid);
|
|
||||||
- return err;
|
|
||||||
-
|
|
||||||
-err_fill:
|
|
||||||
- nlmsg_free(skb);
|
|
||||||
- return err;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
typedef int team_nl_send_func_t(struct sk_buff *skb,
|
|
||||||
struct team *team, u32 portid);
|
|
||||||
|
|
||||||
@@ -2309,16 +2317,57 @@ team_put:
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int team_nl_fill_port_list_get(struct sk_buff *skb,
|
|
||||||
- u32 portid, u32 seq, int flags,
|
|
||||||
- struct team *team,
|
|
||||||
- bool fillall)
|
|
||||||
+static int team_nl_fill_one_port_get(struct sk_buff *skb,
|
|
||||||
+ struct team_port *port)
|
|
||||||
+{
|
|
||||||
+ struct nlattr *port_item;
|
|
||||||
+
|
|
||||||
+ port_item = nla_nest_start(skb, TEAM_ATTR_ITEM_PORT);
|
|
||||||
+ if (!port_item)
|
|
||||||
+ goto nest_cancel;
|
|
||||||
+ if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex))
|
|
||||||
+ goto nest_cancel;
|
|
||||||
+ if (port->changed) {
|
|
||||||
+ if (nla_put_flag(skb, TEAM_ATTR_PORT_CHANGED))
|
|
||||||
+ goto nest_cancel;
|
|
||||||
+ port->changed = false;
|
|
||||||
+ }
|
|
||||||
+ if ((port->removed &&
|
|
||||||
+ nla_put_flag(skb, TEAM_ATTR_PORT_REMOVED)) ||
|
|
||||||
+ (port->state.linkup &&
|
|
||||||
+ nla_put_flag(skb, TEAM_ATTR_PORT_LINKUP)) ||
|
|
||||||
+ nla_put_u32(skb, TEAM_ATTR_PORT_SPEED, port->state.speed) ||
|
|
||||||
+ nla_put_u8(skb, TEAM_ATTR_PORT_DUPLEX, port->state.duplex))
|
|
||||||
+ goto nest_cancel;
|
|
||||||
+ nla_nest_end(skb, port_item);
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+nest_cancel:
|
|
||||||
+ nla_nest_cancel(skb, port_item);
|
|
||||||
+ return -EMSGSIZE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int team_nl_send_port_list_get(struct team *team, u32 portid, u32 seq,
|
|
||||||
+ int flags, team_nl_send_func_t *send_func,
|
|
||||||
+ struct team_port *one_port)
|
|
||||||
{
|
|
||||||
struct nlattr *port_list;
|
|
||||||
+ struct nlmsghdr *nlh;
|
|
||||||
void *hdr;
|
|
||||||
struct team_port *port;
|
|
||||||
+ int err;
|
|
||||||
+ struct sk_buff *skb = NULL;
|
|
||||||
+ bool incomplete;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ port = list_first_entry(&team->port_list, struct team_port, list);
|
|
||||||
|
|
||||||
- hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags,
|
|
||||||
+start_again:
|
|
||||||
+ err = __send_and_alloc_skb(&skb, team, portid, send_func);
|
|
||||||
+ if (err)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags | NLM_F_MULTI,
|
|
||||||
TEAM_CMD_PORT_LIST_GET);
|
|
||||||
if (!hdr)
|
|
||||||
return -EMSGSIZE;
|
|
||||||
@@ -2329,47 +2378,54 @@ static int team_nl_fill_port_list_get(struct sk_buff *skb,
|
|
||||||
if (!port_list)
|
|
||||||
goto nla_put_failure;
|
|
||||||
|
|
||||||
- list_for_each_entry(port, &team->port_list, list) {
|
|
||||||
- struct nlattr *port_item;
|
|
||||||
+ i = 0;
|
|
||||||
+ incomplete = false;
|
|
||||||
|
|
||||||
- /* Include only changed ports if fill all mode is not on */
|
|
||||||
- if (!fillall && !port->changed)
|
|
||||||
- continue;
|
|
||||||
- port_item = nla_nest_start(skb, TEAM_ATTR_ITEM_PORT);
|
|
||||||
- if (!port_item)
|
|
||||||
- goto nla_put_failure;
|
|
||||||
- if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex))
|
|
||||||
- goto nla_put_failure;
|
|
||||||
- if (port->changed) {
|
|
||||||
- if (nla_put_flag(skb, TEAM_ATTR_PORT_CHANGED))
|
|
||||||
- goto nla_put_failure;
|
|
||||||
- port->changed = false;
|
|
||||||
+ /* If one port is selected, called wants to send port list containing
|
|
||||||
+ * only this port. Otherwise go through all listed ports and send all
|
|
||||||
+ */
|
|
||||||
+ if (one_port) {
|
|
||||||
+ err = team_nl_fill_one_port_get(skb, one_port);
|
|
||||||
+ if (err)
|
|
||||||
+ goto errout;
|
|
||||||
+ } else {
|
|
||||||
+ list_for_each_entry(port, &team->port_list, list) {
|
|
||||||
+ err = team_nl_fill_one_port_get(skb, port);
|
|
||||||
+ if (err) {
|
|
||||||
+ if (err == -EMSGSIZE) {
|
|
||||||
+ if (!i)
|
|
||||||
+ goto errout;
|
|
||||||
+ incomplete = true;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ goto errout;
|
|
||||||
+ }
|
|
||||||
+ i++;
|
|
||||||
}
|
|
||||||
- if ((port->removed &&
|
|
||||||
- nla_put_flag(skb, TEAM_ATTR_PORT_REMOVED)) ||
|
|
||||||
- (port->state.linkup &&
|
|
||||||
- nla_put_flag(skb, TEAM_ATTR_PORT_LINKUP)) ||
|
|
||||||
- nla_put_u32(skb, TEAM_ATTR_PORT_SPEED, port->state.speed) ||
|
|
||||||
- nla_put_u8(skb, TEAM_ATTR_PORT_DUPLEX, port->state.duplex))
|
|
||||||
- goto nla_put_failure;
|
|
||||||
- nla_nest_end(skb, port_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
nla_nest_end(skb, port_list);
|
|
||||||
- return genlmsg_end(skb, hdr);
|
|
||||||
+ genlmsg_end(skb, hdr);
|
|
||||||
+ if (incomplete)
|
|
||||||
+ goto start_again;
|
|
||||||
+
|
|
||||||
+send_done:
|
|
||||||
+ nlh = nlmsg_put(skb, portid, seq, NLMSG_DONE, 0, flags | NLM_F_MULTI);
|
|
||||||
+ if (!nlh) {
|
|
||||||
+ err = __send_and_alloc_skb(&skb, team, portid, send_func);
|
|
||||||
+ if (err)
|
|
||||||
+ goto errout;
|
|
||||||
+ goto send_done;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return send_func(skb, team, portid);
|
|
||||||
|
|
||||||
nla_put_failure:
|
|
||||||
+ err = -EMSGSIZE;
|
|
||||||
+errout:
|
|
||||||
genlmsg_cancel(skb, hdr);
|
|
||||||
- return -EMSGSIZE;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int team_nl_fill_port_list_get_all(struct sk_buff *skb,
|
|
||||||
- struct genl_info *info, int flags,
|
|
||||||
- struct team *team)
|
|
||||||
-{
|
|
||||||
- return team_nl_fill_port_list_get(skb, info->snd_portid,
|
|
||||||
- info->snd_seq, NLM_F_ACK,
|
|
||||||
- team, true);
|
|
||||||
+ nlmsg_free(skb);
|
|
||||||
+ return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int team_nl_cmd_port_list_get(struct sk_buff *skb,
|
|
||||||
@@ -2382,7 +2438,8 @@ static int team_nl_cmd_port_list_get(struct sk_buff *skb,
|
|
||||||
if (!team)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
- err = team_nl_send_generic(info, team, team_nl_fill_port_list_get_all);
|
|
||||||
+ err = team_nl_send_port_list_get(team, info->snd_portid, info->snd_seq,
|
|
||||||
+ NLM_F_ACK, team_nl_send_unicast, NULL);
|
|
||||||
|
|
||||||
team_nl_team_put(team);
|
|
||||||
|
|
||||||
@@ -2433,27 +2490,11 @@ static int team_nl_send_event_options_get(struct team *team,
|
|
||||||
sel_opt_inst_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int team_nl_send_event_port_list_get(struct team *team)
|
|
||||||
+static int team_nl_send_event_port_get(struct team *team,
|
|
||||||
+ struct team_port *port)
|
|
||||||
{
|
|
||||||
- struct sk_buff *skb;
|
|
||||||
- int err;
|
|
||||||
- struct net *net = dev_net(team->dev);
|
|
||||||
-
|
|
||||||
- skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
|
||||||
- if (!skb)
|
|
||||||
- return -ENOMEM;
|
|
||||||
-
|
|
||||||
- err = team_nl_fill_port_list_get(skb, 0, 0, 0, team, false);
|
|
||||||
- if (err < 0)
|
|
||||||
- goto err_fill;
|
|
||||||
-
|
|
||||||
- err = genlmsg_multicast_netns(net, skb, 0, team_change_event_mcgrp.id,
|
|
||||||
- GFP_KERNEL);
|
|
||||||
- return err;
|
|
||||||
-
|
|
||||||
-err_fill:
|
|
||||||
- nlmsg_free(skb);
|
|
||||||
- return err;
|
|
||||||
+ return team_nl_send_port_list_get(team, 0, 0, 0, team_nl_send_multicast,
|
|
||||||
+ port);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int team_nl_init(void)
|
|
||||||
@@ -2526,28 +2567,53 @@ static void __team_port_change_send(struct team_port *port, bool linkup)
|
|
||||||
port->state.duplex = 0;
|
|
||||||
|
|
||||||
send_event:
|
|
||||||
- err = team_nl_send_event_port_list_get(port->team);
|
|
||||||
+ err = team_nl_send_event_port_get(port->team, port);
|
|
||||||
if (err && err != -ESRCH)
|
|
||||||
netdev_warn(port->team->dev, "Failed to send port change of device %s via netlink (err %d)\n",
|
|
||||||
port->dev->name, err);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void __team_carrier_check(struct team *team)
|
|
||||||
+{
|
|
||||||
+ struct team_port *port;
|
|
||||||
+ bool team_linkup;
|
|
||||||
+
|
|
||||||
+ if (team->user_carrier_enabled)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ team_linkup = false;
|
|
||||||
+ list_for_each_entry(port, &team->port_list, list) {
|
|
||||||
+ if (port->linkup) {
|
|
||||||
+ team_linkup = true;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (team_linkup)
|
|
||||||
+ netif_carrier_on(team->dev);
|
|
||||||
+ else
|
|
||||||
+ netif_carrier_off(team->dev);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void __team_port_change_check(struct team_port *port, bool linkup)
|
|
||||||
{
|
|
||||||
if (port->state.linkup != linkup)
|
|
||||||
__team_port_change_send(port, linkup);
|
|
||||||
+ __team_carrier_check(port->team);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __team_port_change_port_added(struct team_port *port, bool linkup)
|
|
||||||
{
|
|
||||||
__team_port_change_send(port, linkup);
|
|
||||||
+ __team_carrier_check(port->team);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __team_port_change_port_removed(struct team_port *port)
|
|
||||||
{
|
|
||||||
port->removed = true;
|
|
||||||
__team_port_change_send(port, false);
|
|
||||||
+ __team_carrier_check(port->team);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void team_port_change_check(struct team_port *port, bool linkup)
|
|
||||||
diff --git a/drivers/net/team/team_mode_activebackup.c b/drivers/net/team/team_mode_activebackup.c
|
|
||||||
index 6262b4d..40fd338 100644
|
|
||||||
--- a/drivers/net/team/team_mode_activebackup.c
|
|
||||||
+++ b/drivers/net/team/team_mode_activebackup.c
|
|
||||||
@@ -19,6 +19,7 @@
|
|
||||||
|
|
||||||
struct ab_priv {
|
|
||||||
struct team_port __rcu *active_port;
|
|
||||||
+ struct team_option_inst_info *ap_opt_inst_info;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ab_priv *ab_priv(struct team *team)
|
|
||||||
@@ -54,8 +55,17 @@ drop:
|
|
||||||
|
|
||||||
static void ab_port_leave(struct team *team, struct team_port *port)
|
|
||||||
{
|
|
||||||
- if (ab_priv(team)->active_port == port)
|
|
||||||
+ if (ab_priv(team)->active_port == port) {
|
|
||||||
RCU_INIT_POINTER(ab_priv(team)->active_port, NULL);
|
|
||||||
+ team_option_inst_set_change(ab_priv(team)->ap_opt_inst_info);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int ab_active_port_init(struct team *team,
|
|
||||||
+ struct team_option_inst_info *info)
|
|
||||||
+{
|
|
||||||
+ ab_priv(team)->ap_opt_inst_info = info;
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ab_active_port_get(struct team *team, struct team_gsetter_ctx *ctx)
|
|
||||||
@@ -88,6 +98,7 @@ static const struct team_option ab_options[] = {
|
|
||||||
{
|
|
||||||
.name = "activeport",
|
|
||||||
.type = TEAM_OPTION_TYPE_U32,
|
|
||||||
+ .init = ab_active_port_init,
|
|
||||||
.getter = ab_active_port_get,
|
|
||||||
.setter = ab_active_port_set,
|
|
||||||
},
|
|
||||||
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
|
|
||||||
index 0245def..4648d80 100644
|
|
||||||
--- a/include/linux/if_team.h
|
|
||||||
+++ b/include/linux/if_team.h
|
|
||||||
@@ -186,6 +186,7 @@ struct team {
|
|
||||||
|
|
||||||
const struct team_mode *mode;
|
|
||||||
struct team_mode_ops ops;
|
|
||||||
+ bool user_carrier_enabled;
|
|
||||||
bool queue_override_enabled;
|
|
||||||
struct list_head *qom_lists; /* array of queue override mapping lists */
|
|
||||||
long mode_priv[TEAM_MODE_PRIV_LONGS];
|
|
||||||
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
|
|
||||||
index 9ef07d0..7ebddc7 100644
|
|
||||||
--- a/include/linux/netdevice.h
|
|
||||||
+++ b/include/linux/netdevice.h
|
|
||||||
@@ -894,6 +894,14 @@ struct netdev_fcoe_hbainfo {
|
|
||||||
* int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh)
|
|
||||||
* int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq,
|
|
||||||
* struct net_device *dev)
|
|
||||||
+ *
|
|
||||||
+ * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier);
|
|
||||||
+ * Called to change device carrier. Soft-devices (like dummy, team, etc)
|
|
||||||
+ * which do not represent real hardware may define this to allow their
|
|
||||||
+ * userspace components to manage their virtual carrier state. Devices
|
|
||||||
+ * that determine carrier state from physical hardware properties (eg
|
|
||||||
+ * network cables) or protocol-dependent mechanisms (eg
|
|
||||||
+ * USB_CDC_NOTIFY_NETWORK_CONNECTION) should NOT implement this function.
|
|
||||||
*/
|
|
||||||
struct net_device_ops {
|
|
||||||
int (*ndo_init)(struct net_device *dev);
|
|
||||||
@@ -1011,6 +1019,8 @@ struct net_device_ops {
|
|
||||||
int (*ndo_bridge_getlink)(struct sk_buff *skb,
|
|
||||||
u32 pid, u32 seq,
|
|
||||||
struct net_device *dev);
|
|
||||||
+ int (*ndo_change_carrier)(struct net_device *dev,
|
|
||||||
+ bool new_carrier);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -2197,6 +2207,8 @@ extern int dev_set_mtu(struct net_device *, int);
|
|
||||||
extern void dev_set_group(struct net_device *, int);
|
|
||||||
extern int dev_set_mac_address(struct net_device *,
|
|
||||||
struct sockaddr *);
|
|
||||||
+extern int dev_change_carrier(struct net_device *,
|
|
||||||
+ bool new_carrier);
|
|
||||||
extern int dev_hard_start_xmit(struct sk_buff *skb,
|
|
||||||
struct net_device *dev,
|
|
||||||
struct netdev_queue *txq);
|
|
||||||
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
|
|
||||||
index 60f3b6b..c4edfe1 100644
|
|
||||||
--- a/include/uapi/linux/if_link.h
|
|
||||||
+++ b/include/uapi/linux/if_link.h
|
|
||||||
@@ -142,6 +142,7 @@ enum {
|
|
||||||
#define IFLA_PROMISCUITY IFLA_PROMISCUITY
|
|
||||||
IFLA_NUM_TX_QUEUES,
|
|
||||||
IFLA_NUM_RX_QUEUES,
|
|
||||||
+ IFLA_CARRIER,
|
|
||||||
__IFLA_MAX
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/net/core/dev.c b/net/core/dev.c
|
|
||||||
index f64e439..e0045ba 100644
|
|
||||||
--- a/net/core/dev.c
|
|
||||||
+++ b/net/core/dev.c
|
|
||||||
@@ -5027,6 +5027,25 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(dev_set_mac_address);
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * dev_change_carrier - Change device carrier
|
|
||||||
+ * @dev: device
|
|
||||||
+ * @new_carries: new value
|
|
||||||
+ *
|
|
||||||
+ * Change device carrier
|
|
||||||
+ */
|
|
||||||
+int dev_change_carrier(struct net_device *dev, bool new_carrier)
|
|
||||||
+{
|
|
||||||
+ const struct net_device_ops *ops = dev->netdev_ops;
|
|
||||||
+
|
|
||||||
+ if (!ops->ndo_change_carrier)
|
|
||||||
+ return -EOPNOTSUPP;
|
|
||||||
+ if (!netif_device_present(dev))
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ return ops->ndo_change_carrier(dev, new_carrier);
|
|
||||||
+}
|
|
||||||
+EXPORT_SYMBOL(dev_change_carrier);
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Perform the SIOCxIFxxx calls, inside rcu_read_lock()
|
|
||||||
*/
|
|
||||||
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
|
|
||||||
index 1868625..2ef7a56 100644
|
|
||||||
--- a/net/core/rtnetlink.c
|
|
||||||
+++ b/net/core/rtnetlink.c
|
|
||||||
@@ -780,6 +780,7 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev,
|
|
||||||
+ nla_total_size(4) /* IFLA_MTU */
|
|
||||||
+ nla_total_size(4) /* IFLA_LINK */
|
|
||||||
+ nla_total_size(4) /* IFLA_MASTER */
|
|
||||||
+ + nla_total_size(1) /* IFLA_CARRIER */
|
|
||||||
+ nla_total_size(4) /* IFLA_PROMISCUITY */
|
|
||||||
+ nla_total_size(4) /* IFLA_NUM_TX_QUEUES */
|
|
||||||
+ nla_total_size(4) /* IFLA_NUM_RX_QUEUES */
|
|
||||||
@@ -909,6 +910,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
|
|
||||||
nla_put_u32(skb, IFLA_LINK, dev->iflink)) ||
|
|
||||||
(dev->master &&
|
|
||||||
nla_put_u32(skb, IFLA_MASTER, dev->master->ifindex)) ||
|
|
||||||
+ nla_put_u8(skb, IFLA_CARRIER, netif_carrier_ok(dev)) ||
|
|
||||||
(dev->qdisc &&
|
|
||||||
nla_put_string(skb, IFLA_QDISC, dev->qdisc->ops->id)) ||
|
|
||||||
(dev->ifalias &&
|
|
||||||
@@ -1108,6 +1110,7 @@ const struct nla_policy ifla_policy[IFLA_MAX+1] = {
|
|
||||||
[IFLA_MTU] = { .type = NLA_U32 },
|
|
||||||
[IFLA_LINK] = { .type = NLA_U32 },
|
|
||||||
[IFLA_MASTER] = { .type = NLA_U32 },
|
|
||||||
+ [IFLA_CARRIER] = { .type = NLA_U8 },
|
|
||||||
[IFLA_TXQLEN] = { .type = NLA_U32 },
|
|
||||||
[IFLA_WEIGHT] = { .type = NLA_U32 },
|
|
||||||
[IFLA_OPERSTATE] = { .type = NLA_U8 },
|
|
||||||
@@ -1438,6 +1441,13 @@ static int do_setlink(struct net_device *dev, struct ifinfomsg *ifm,
|
|
||||||
modified = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (tb[IFLA_CARRIER]) {
|
|
||||||
+ err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER]));
|
|
||||||
+ if (err)
|
|
||||||
+ goto errout;
|
|
||||||
+ modified = 1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (tb[IFLA_TXQLEN])
|
|
||||||
dev->tx_queue_len = nla_get_u32(tb[IFLA_TXQLEN]);
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
commit c61a2810a2161986353705b44d9503e6bb079f4f
|
|
||||||
Author: Eric W. Biederman <ebiederm@xmission.com>
|
|
||||||
Date: Fri Dec 28 18:58:39 2012 -0800
|
|
||||||
|
|
||||||
userns: Avoid recursion in put_user_ns
|
|
||||||
|
|
||||||
When freeing a deeply nested user namespace free_user_ns calls
|
|
||||||
put_user_ns on it's parent which may in turn call free_user_ns again.
|
|
||||||
When -fno-optimize-sibling-calls is passed to gcc one stack frame per
|
|
||||||
user namespace is left on the stack, potentially overflowing the
|
|
||||||
kernel stack. CONFIG_FRAME_POINTER forces -fno-optimize-sibling-calls
|
|
||||||
so we can't count on gcc to optimize this code.
|
|
||||||
|
|
||||||
Remove struct kref and use a plain atomic_t. Making the code more
|
|
||||||
flexible and easier to comprehend. Make the loop in free_user_ns
|
|
||||||
explict to guarantee that the stack does not overflow with
|
|
||||||
CONFIG_FRAME_POINTER enabled.
|
|
||||||
|
|
||||||
I have tested this fix with a simple program that uses unshare to
|
|
||||||
create a deeply nested user namespace structure and then calls exit.
|
|
||||||
With 1000 nesteuser namespaces before this change running my test
|
|
||||||
program causes the kernel to die a horrible death. With 10,000,000
|
|
||||||
nested user namespaces after this change my test program runs to
|
|
||||||
completion and causes no harm.
|
|
||||||
|
|
||||||
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
|
|
||||||
Pointed-out-by: Vasily Kulikov <segoon@openwall.com>
|
|
||||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
||||||
|
|
||||||
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
|
|
||||||
index b9bd2e6..4ce0093 100644
|
|
||||||
--- a/include/linux/user_namespace.h
|
|
||||||
+++ b/include/linux/user_namespace.h
|
|
||||||
@@ -21,7 +21,7 @@ struct user_namespace {
|
|
||||||
struct uid_gid_map uid_map;
|
|
||||||
struct uid_gid_map gid_map;
|
|
||||||
struct uid_gid_map projid_map;
|
|
||||||
- struct kref kref;
|
|
||||||
+ atomic_t count;
|
|
||||||
struct user_namespace *parent;
|
|
||||||
kuid_t owner;
|
|
||||||
kgid_t group;
|
|
||||||
@@ -35,18 +35,18 @@ extern struct user_namespace init_user_ns;
|
|
||||||
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
|
|
||||||
{
|
|
||||||
if (ns)
|
|
||||||
- kref_get(&ns->kref);
|
|
||||||
+ atomic_inc(&ns->count);
|
|
||||||
return ns;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern int create_user_ns(struct cred *new);
|
|
||||||
extern int unshare_userns(unsigned long unshare_flags, struct cred **new_cred);
|
|
||||||
-extern void free_user_ns(struct kref *kref);
|
|
||||||
+extern void free_user_ns(struct user_namespace *ns);
|
|
||||||
|
|
||||||
static inline void put_user_ns(struct user_namespace *ns)
|
|
||||||
{
|
|
||||||
- if (ns)
|
|
||||||
- kref_put(&ns->kref, free_user_ns);
|
|
||||||
+ if (ns && atomic_dec_and_test(&ns->count))
|
|
||||||
+ free_user_ns(ns);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct seq_operations;
|
|
||||||
diff --git a/kernel/user.c b/kernel/user.c
|
|
||||||
index 33acb5e..57ebfd4 100644
|
|
||||||
--- a/kernel/user.c
|
|
||||||
+++ b/kernel/user.c
|
|
||||||
@@ -47,9 +47,7 @@ struct user_namespace init_user_ns = {
|
|
||||||
.count = 4294967295U,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
- .kref = {
|
|
||||||
- .refcount = ATOMIC_INIT(3),
|
|
||||||
- },
|
|
||||||
+ .count = ATOMIC_INIT(3),
|
|
||||||
.owner = GLOBAL_ROOT_UID,
|
|
||||||
.group = GLOBAL_ROOT_GID,
|
|
||||||
.proc_inum = PROC_USER_INIT_INO,
|
|
||||||
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
|
|
||||||
index 2b042c4..24f8ec3 100644
|
|
||||||
--- a/kernel/user_namespace.c
|
|
||||||
+++ b/kernel/user_namespace.c
|
|
||||||
@@ -78,7 +78,7 @@ int create_user_ns(struct cred *new)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
- kref_init(&ns->kref);
|
|
||||||
+ atomic_set(&ns->count, 1);
|
|
||||||
/* Leave the new->user_ns reference with the new user namespace. */
|
|
||||||
ns->parent = parent_ns;
|
|
||||||
ns->owner = owner;
|
|
||||||
@@ -104,15 +104,16 @@ int unshare_userns(unsigned long unshare_flags, struct cred **new_cred)
|
|
||||||
return create_user_ns(cred);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void free_user_ns(struct kref *kref)
|
|
||||||
+void free_user_ns(struct user_namespace *ns)
|
|
||||||
{
|
|
||||||
- struct user_namespace *parent, *ns =
|
|
||||||
- container_of(kref, struct user_namespace, kref);
|
|
||||||
+ struct user_namespace *parent;
|
|
||||||
|
|
||||||
- parent = ns->parent;
|
|
||||||
- proc_free_inum(ns->proc_inum);
|
|
||||||
- kmem_cache_free(user_ns_cachep, ns);
|
|
||||||
- put_user_ns(parent);
|
|
||||||
+ do {
|
|
||||||
+ parent = ns->parent;
|
|
||||||
+ proc_free_inum(ns->proc_inum);
|
|
||||||
+ kmem_cache_free(user_ns_cachep, ns);
|
|
||||||
+ ns = parent;
|
|
||||||
+ } while (atomic_dec_and_test(&parent->count));
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(free_user_ns);
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From a82a45f65377b05fe8cd3167c7b0a70c508356b8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Oliver Neukum <oliver@neukum.org>
|
|
||||||
Date: Thu, 10 Jan 2013 07:04:55 -0300
|
|
||||||
Subject: [PATCH] [media] uvcvideo: Fix race of open and suspend in error case
|
|
||||||
|
|
||||||
Ming Lei reported:
|
|
||||||
IMO, there is a minor fault in the error handling path of
|
|
||||||
uvc_status_start() inside uvc_v4l2_open(), and the 'users' count should
|
|
||||||
have been decreased before usb_autopm_put_interface(). In theory, a [URB
|
|
||||||
resubmission] warning can be triggered when the device is opened just
|
|
||||||
between usb_autopm_put_interface() and atomic_dec(&stream->dev->users).
|
|
||||||
The fix is trivial.
|
|
||||||
|
|
||||||
Reported-by: Ming Lei <tom.leiming@gmail.com>
|
|
||||||
Signed-off-by: Oliver Neukum <oneukum@suse.de>
|
|
||||||
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
||||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/media/usb/uvc/uvc_v4l2.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
|
|
||||||
index 97a4ffd..b2dc326 100644
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_v4l2.c
|
|
||||||
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
|
|
||||||
@@ -501,8 +501,8 @@ static int uvc_v4l2_open(struct file *file)
|
|
||||||
if (atomic_inc_return(&stream->dev->users) == 1) {
|
|
||||||
ret = uvc_status_start(stream->dev);
|
|
||||||
if (ret < 0) {
|
|
||||||
- usb_autopm_put_interface(stream->dev->intf);
|
|
||||||
atomic_dec(&stream->dev->users);
|
|
||||||
+ usb_autopm_put_interface(stream->dev->intf);
|
|
||||||
kfree(handle);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.1.2
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user