summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2012-07-16 13:03:52 -0400
committerAnthony G. Basile <blueness@gentoo.org>2012-07-16 13:03:52 -0400
commit75bb877cacf6562099253561a08332e334c40668 (patch)
treea66d480a4140e06d511d438f54dc6c7515eea1dd
parentGrsec/PaX: 2.9.1-{2.6.32.59,3.2.23,3.4.4}-201207122200 (diff)
downloadhardened-patchset-75bb877cacf6562099253561a08332e334c40668.tar.gz
hardened-patchset-75bb877cacf6562099253561a08332e334c40668.tar.bz2
hardened-patchset-75bb877cacf6562099253561a08332e334c40668.zip
Grsec/PaX: 2.9.1-2.6.32.59-201207150915 - fix stop_machine* compile error20120712
-rw-r--r--2.6.32/0000_README2
-rw-r--r--2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207150915.patch (renamed from 2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207122159.patch)122
2 files changed, 70 insertions, 54 deletions
diff --git a/2.6.32/0000_README b/2.6.32/0000_README
index 3cd1e97..4c6a85a 100644
--- a/2.6.32/0000_README
+++ b/2.6.32/0000_README
@@ -30,7 +30,7 @@ Patch: 1058_linux-2.6.32.59.patch
From: http://www.kernel.org
Desc: Linux 2.6.32.59
-Patch: 4420_grsecurity-2.9.1-2.6.32.59-201207122159.patch
+Patch: 4420_grsecurity-2.9.1-2.6.32.59-201207150915.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207122159.patch b/2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207150915.patch
index 614255d..06ab77c 100644
--- a/2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207122159.patch
+++ b/2.6.32/4420_grsecurity-2.9.1-2.6.32.59-201207150915.patch
@@ -48172,7 +48172,7 @@ index a3394b4..f871d8c 100644
+ u32 hdr_cksum;
+};
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
-index 000e377..f501aa3 100644
+index 000e377..709dc47 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1,18 +1,18 @@
@@ -48906,7 +48906,7 @@ index 000e377..f501aa3 100644
be_dws_cpu_to_le(hdr, sizeof(*hdr));
return copied;
-@@ -434,19 +713,70 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
+@@ -434,19 +713,72 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
struct net_device *netdev)
{
struct be_adapter *adapter = netdev_priv(netdev);
@@ -48975,6 +48975,8 @@ index 000e377..f501aa3 100644
+
+ copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb);
if (copied) {
++ int gso_segs = skb_shinfo(skb)->gso_segs;
++
/* record the sent skb in the sent_skb table */
- BUG_ON(tx_obj->sent_skb_list[start]);
- tx_obj->sent_skb_list[start] = skb;
@@ -48983,7 +48985,7 @@ index 000e377..f501aa3 100644
/* Ensure txq has space for the next skb; Else stop the queue
* *BEFORE* ringing the tx doorbell, so that we serialze the
-@@ -454,16 +784,21 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
+@@ -454,16 +786,20 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
*/
if ((BE_MAX_TX_FRAG_COUNT + atomic_read(&txq->used)) >=
txq->len) {
@@ -48995,19 +48997,19 @@ index 000e377..f501aa3 100644
be_txq_notify(adapter, txq->id, wrb_cnt);
- be_tx_stats_update(adapter, wrb_cnt, copied,
+- skb_shinfo(skb)->gso_segs, stopped);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
+ netdev->trans_start = jiffies;
+#endif
+
-+ be_tx_stats_update(txo, wrb_cnt, copied,
- skb_shinfo(skb)->gso_segs, stopped);
++ be_tx_stats_update(txo, wrb_cnt, copied, gso_segs, stopped);
} else {
txq->head = start;
+tx_drop:
dev_kfree_skb_any(skb);
}
return NETDEV_TX_OK;
-@@ -473,10 +808,12 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
+@@ -473,10 +809,12 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
{
struct be_adapter *adapter = netdev_priv(netdev);
if (new_mtu < BE_MIN_MTU ||
@@ -49022,7 +49024,7 @@ index 000e377..f501aa3 100644
return -EINVAL;
}
dev_info(&adapter->pdev->dev, "MTU changed from %d to %d bytes\n",
-@@ -486,17 +823,19 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
+@@ -486,17 +824,19 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
}
/*
@@ -49048,7 +49050,7 @@ index 000e377..f501aa3 100644
/* Construct VLAN Table to give to HW */
for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
if (adapter->vlan_tag[i]) {
-@@ -504,47 +843,46 @@ static int be_vid_config(struct be_adapter *adapter)
+@@ -504,47 +844,46 @@ static int be_vid_config(struct be_adapter *adapter)
ntags++;
}
}
@@ -49111,7 +49113,7 @@ index 000e377..f501aa3 100644
}
static void be_set_multicast_list(struct net_device *netdev)
-@@ -552,7 +890,7 @@ static void be_set_multicast_list(struct net_device *netdev)
+@@ -552,7 +891,7 @@ static void be_set_multicast_list(struct net_device *netdev)
struct be_adapter *adapter = netdev_priv(netdev);
if (netdev->flags & IFF_PROMISC) {
@@ -49120,7 +49122,7 @@ index 000e377..f501aa3 100644
adapter->promiscuous = true;
goto done;
}
-@@ -560,81 +898,244 @@ static void be_set_multicast_list(struct net_device *netdev)
+@@ -560,81 +899,244 @@ static void be_set_multicast_list(struct net_device *netdev)
/* BE was previously in promiscous mode; disable it */
if (adapter->promiscuous) {
adapter->promiscuous = false;
@@ -49405,7 +49407,7 @@ index 000e377..f501aa3 100644
atomic_dec(&rxq->used);
return rx_page_info;
-@@ -642,20 +1143,26 @@ get_rx_page_info(struct be_adapter *adapter, u16 frag_idx)
+@@ -642,20 +1144,26 @@ get_rx_page_info(struct be_adapter *adapter, u16 frag_idx)
/* Throwaway the data in the Rx completion */
static void be_rx_compl_discard(struct be_adapter *adapter,
@@ -49439,7 +49441,7 @@ index 000e377..f501aa3 100644
}
}
-@@ -663,29 +1170,24 @@ static void be_rx_compl_discard(struct be_adapter *adapter,
+@@ -663,29 +1171,24 @@ static void be_rx_compl_discard(struct be_adapter *adapter,
* skb_fill_rx_data forms a complete skb for an ether frame
* indicated by rxcp.
*/
@@ -49477,7 +49479,7 @@ index 000e377..f501aa3 100644
memcpy(skb->data, start, hdr_len);
skb->len = curr_frag_len;
if (curr_frag_len <= BE_HDR_LEN) { /* tiny packet */
-@@ -702,21 +1204,19 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
+@@ -702,21 +1205,19 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
skb->data_len = curr_frag_len - hdr_len;
skb->tail += hdr_len;
}
@@ -49508,7 +49510,7 @@ index 000e377..f501aa3 100644
/* Coalesce all frags from the same physical page in one slot */
if (page_info->page_offset == 0) {
-@@ -735,99 +1235,122 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
+@@ -735,99 +1236,122 @@ static void skb_fill_rx_data(struct be_adapter *adapter,
skb->len += curr_frag_len;
skb->data_len += curr_frag_len;
@@ -49688,7 +49690,7 @@ index 000e377..f501aa3 100644
curr_frag_len = min(remaining, rx_frag_size);
-@@ -845,55 +1368,129 @@ static void be_rx_compl_process_gro(struct be_adapter *adapter,
+@@ -845,55 +1369,129 @@ static void be_rx_compl_process_gro(struct be_adapter *adapter,
skb_shinfo(skb)->frags[j].size += curr_frag_len;
remaining -= curr_frag_len;
@@ -49847,7 +49849,7 @@ index 000e377..f501aa3 100644
static inline struct page *be_alloc_pages(u32 size)
{
gfp_t alloc_flags = GFP_ATOMIC;
-@@ -907,11 +1504,12 @@ static inline struct page *be_alloc_pages(u32 size)
+@@ -907,11 +1505,12 @@ static inline struct page *be_alloc_pages(u32 size)
* Allocate a page, split it to fragments of size rx_frag_size and post as
* receive buffers to BE
*/
@@ -49864,7 +49866,7 @@ index 000e377..f501aa3 100644
struct page *pagep = NULL;
struct be_eth_rx_d *rxd;
u64 page_dmaaddr = 0, frag_dmaaddr;
-@@ -922,7 +1520,7 @@ static void be_post_rx_frags(struct be_adapter *adapter)
+@@ -922,7 +1521,7 @@ static void be_post_rx_frags(struct be_adapter *adapter)
if (!pagep) {
pagep = be_alloc_pages(adapter->big_page_size);
if (unlikely(!pagep)) {
@@ -49873,7 +49875,7 @@ index 000e377..f501aa3 100644
break;
}
page_dmaaddr = pci_map_page(adapter->pdev, pagep, 0,
-@@ -941,7 +1539,6 @@ static void be_post_rx_frags(struct be_adapter *adapter)
+@@ -941,7 +1540,6 @@ static void be_post_rx_frags(struct be_adapter *adapter)
rxd = queue_head_node(rxq);
rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF);
rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr));
@@ -49881,7 +49883,7 @@ index 000e377..f501aa3 100644
/* Any space left in the current big page for another frag? */
if ((page_offset + rx_frag_size + rx_frag_size) >
-@@ -949,17 +1546,24 @@ static void be_post_rx_frags(struct be_adapter *adapter)
+@@ -949,17 +1547,24 @@ static void be_post_rx_frags(struct be_adapter *adapter)
pagep = NULL;
page_info->last_page_user = true;
}
@@ -49908,7 +49910,7 @@ index 000e377..f501aa3 100644
}
return;
-@@ -972,6 +1576,7 @@ static struct be_eth_tx_compl *be_tx_compl_get(struct be_queue_info *tx_cq)
+@@ -972,6 +1577,7 @@ static struct be_eth_tx_compl *be_tx_compl_get(struct be_queue_info *tx_cq)
if (txcp->dw[offsetof(struct amap_eth_tx_compl, valid) / 32] == 0)
return NULL;
@@ -49916,7 +49918,7 @@ index 000e377..f501aa3 100644
be_dws_le_to_cpu(txcp, sizeof(*txcp));
txcp->dw[offsetof(struct amap_eth_tx_compl, valid) / 32] = 0;
-@@ -980,11 +1585,14 @@ static struct be_eth_tx_compl *be_tx_compl_get(struct be_queue_info *tx_cq)
+@@ -980,11 +1586,14 @@ static struct be_eth_tx_compl *be_tx_compl_get(struct be_queue_info *tx_cq)
return txcp;
}
@@ -49934,7 +49936,7 @@ index 000e377..f501aa3 100644
u16 cur_index, num_wrbs = 0;
cur_index = txq->tail;
-@@ -992,15 +1600,31 @@ static void be_tx_compl_process(struct be_adapter *adapter, u16 last_index)
+@@ -992,15 +1601,31 @@ static void be_tx_compl_process(struct be_adapter *adapter, u16 last_index)
BUG_ON(!sent_skb);
sent_skbs[cur_index] = NULL;
@@ -49970,7 +49972,7 @@ index 000e377..f501aa3 100644
}
static inline struct be_eq_entry *event_get(struct be_eq_obj *eq_obj)
-@@ -1010,13 +1634,15 @@ static inline struct be_eq_entry *event_get(struct be_eq_obj *eq_obj)
+@@ -1010,13 +1635,15 @@ static inline struct be_eq_entry *event_get(struct be_eq_obj *eq_obj)
if (!eqe->evt)
return NULL;
@@ -49987,7 +49989,7 @@ index 000e377..f501aa3 100644
{
struct be_eq_entry *eqe;
u16 num = 0;
-@@ -1029,7 +1655,10 @@ static int event_handle(struct be_adapter *adapter,
+@@ -1029,7 +1656,10 @@ static int event_handle(struct be_adapter *adapter,
/* Deal with any spurious interrupts that come
* without events
*/
@@ -49999,7 +50001,7 @@ index 000e377..f501aa3 100644
if (num)
napi_schedule(&eq_obj->napi);
-@@ -1053,49 +1682,55 @@ static void be_eq_clean(struct be_adapter *adapter,
+@@ -1053,49 +1683,55 @@ static void be_eq_clean(struct be_adapter *adapter,
be_eq_notify(adapter, eq_obj->q.id, false, true, num);
}
@@ -50068,7 +50070,7 @@ index 000e377..f501aa3 100644
}
if (atomic_read(&txq->used) == 0 || ++timeo > 200)
-@@ -1107,6 +1742,17 @@ static void be_tx_compl_clean(struct be_adapter *adapter)
+@@ -1107,6 +1743,17 @@ static void be_tx_compl_clean(struct be_adapter *adapter)
if (atomic_read(&txq->used))
dev_err(&adapter->pdev->dev, "%d pending tx-completions\n",
atomic_read(&txq->used));
@@ -50086,7 +50088,7 @@ index 000e377..f501aa3 100644
}
static void be_mcc_queues_destroy(struct be_adapter *adapter)
-@@ -1145,8 +1791,9 @@ static int be_mcc_queues_create(struct be_adapter *adapter)
+@@ -1145,8 +1792,9 @@ static int be_mcc_queues_create(struct be_adapter *adapter)
goto mcc_cq_destroy;
/* Ask BE to create MCC queue */
@@ -50097,7 +50099,7 @@ index 000e377..f501aa3 100644
return 0;
-@@ -1163,16 +1810,20 @@ err:
+@@ -1163,16 +1811,20 @@ err:
static void be_tx_queues_destroy(struct be_adapter *adapter)
{
struct be_queue_info *q;
@@ -50126,7 +50128,7 @@ index 000e377..f501aa3 100644
/* Clear any residual events */
be_eq_clean(adapter, &adapter->tx_eq);
-@@ -1183,168 +1834,210 @@ static void be_tx_queues_destroy(struct be_adapter *adapter)
+@@ -1183,168 +1835,210 @@ static void be_tx_queues_destroy(struct be_adapter *adapter)
be_queue_free(adapter, q);
}
@@ -50439,7 +50441,7 @@ index 000e377..f501aa3 100644
return IRQ_HANDLED;
}
-@@ -1353,48 +2046,72 @@ static irqreturn_t be_msix_tx_mcc(int irq, void *dev)
+@@ -1353,48 +2047,72 @@ static irqreturn_t be_msix_tx_mcc(int irq, void *dev)
{
struct be_adapter *adapter = dev;
@@ -50533,7 +50535,7 @@ index 000e377..f501aa3 100644
/* All consumed */
if (work_done < budget) {
-@@ -1404,40 +2121,13 @@ int be_poll_rx(struct napi_struct *napi, int budget)
+@@ -1404,40 +2122,13 @@ int be_poll_rx(struct napi_struct *napi, int budget)
/* More to be consumed; continue with interrupts disabled */
be_cq_notify(adapter, rx_cq->id, false, work_done);
}
@@ -50578,7 +50580,7 @@ index 000e377..f501aa3 100644
/* As TX and MCC share the same EQ check for both TX and MCC completions.
* For TX/MCC we don't honour budget; consume everything
*/
-@@ -1446,96 +2136,264 @@ static int be_poll_tx_mcc(struct napi_struct *napi, int budget)
+@@ -1446,96 +2137,264 @@ static int be_poll_tx_mcc(struct napi_struct *napi, int budget)
struct be_eq_obj *tx_eq = container_of(napi, struct be_eq_obj, napi);
struct be_adapter *adapter =
container_of(tx_eq, struct be_adapter, tx_eq);
@@ -50879,7 +50881,7 @@ index 000e377..f501aa3 100644
return status;
}
-@@ -1544,10 +2402,13 @@ static int be_irq_register(struct be_adapter *adapter)
+@@ -1544,10 +2403,13 @@ static int be_irq_register(struct be_adapter *adapter)
struct net_device *netdev = adapter->netdev;
int status;
@@ -50894,7 +50896,7 @@ index 000e377..f501aa3 100644
}
/* INTx */
-@@ -1567,87 +2428,363 @@ done:
+@@ -1567,87 +2429,363 @@ done:
static void be_irq_unregister(struct be_adapter *adapter)
{
struct net_device *netdev = adapter->netdev;
@@ -51293,7 +51295,7 @@ index 000e377..f501aa3 100644
status = be_tx_queues_create(adapter);
if (status != 0)
goto if_destroy;
-@@ -1656,10 +2793,15 @@ static int be_setup(struct be_adapter *adapter)
+@@ -1656,10 +2794,15 @@ static int be_setup(struct be_adapter *adapter)
if (status != 0)
goto tx_qs_destroy;
@@ -51309,7 +51311,7 @@ index 000e377..f501aa3 100644
return 0;
rx_qs_destroy:
-@@ -1667,158 +2809,392 @@ rx_qs_destroy:
+@@ -1667,158 +2810,392 @@ rx_qs_destroy:
tx_qs_destroy:
be_tx_queues_destroy(adapter);
if_destroy:
@@ -51803,7 +51805,7 @@ index 000e377..f501aa3 100644
strcpy(fw_file, func);
status = request_firmware(&fw, fw_file, &adapter->pdev->dev);
-@@ -1826,34 +3202,9 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
+@@ -1826,34 +3203,9 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
goto fw_exit;
p = fw->data;
@@ -51839,7 +51841,7 @@ index 000e377..f501aa3 100644
flash_cmd.size = sizeof(struct be_cmd_write_flashrom) + 32*1024;
flash_cmd.va = pci_alloc_consistent(adapter->pdev, flash_cmd.size,
&flash_cmd.dma);
-@@ -1864,12 +3215,25 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
+@@ -1864,12 +3216,25 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
goto fw_exit;
}
@@ -51871,7 +51873,7 @@ index 000e377..f501aa3 100644
}
pci_free_consistent(adapter->pdev, flash_cmd.size, flash_cmd.va,
-@@ -1879,14 +3243,14 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
+@@ -1879,14 +3244,14 @@ int be_load_fw(struct be_adapter *adapter, u8 *func)
goto fw_exit;
}
@@ -51888,7 +51890,7 @@ index 000e377..f501aa3 100644
.ndo_open = be_open,
.ndo_stop = be_close,
.ndo_start_xmit = be_xmit,
-@@ -1898,15 +3262,32 @@ static struct net_device_ops be_netdev_ops = {
+@@ -1898,15 +3263,32 @@ static struct net_device_ops be_netdev_ops = {
.ndo_vlan_rx_register = be_vlan_register,
.ndo_vlan_rx_add_vid = be_vlan_add_vid,
.ndo_vlan_rx_kill_vid = be_vlan_rem_vid,
@@ -51924,7 +51926,7 @@ index 000e377..f501aa3 100644
netdev->flags |= IFF_MULTICAST;
-@@ -1918,17 +3299,30 @@ static void be_netdev_init(struct net_device *netdev)
+@@ -1918,17 +3300,30 @@ static void be_netdev_init(struct net_device *netdev)
netif_set_gso_max_size(netdev, 65535);
@@ -51961,7 +51963,7 @@ index 000e377..f501aa3 100644
}
static void be_unmap_pci_bars(struct be_adapter *adapter)
-@@ -1937,37 +3331,62 @@ static void be_unmap_pci_bars(struct be_adapter *adapter)
+@@ -1937,37 +3332,62 @@ static void be_unmap_pci_bars(struct be_adapter *adapter)
iounmap(adapter->csr);
if (adapter->db)
iounmap(adapter->db);
@@ -52041,7 +52043,7 @@ index 000e377..f501aa3 100644
return 0;
pci_map_err:
-@@ -1985,40 +3404,69 @@ static void be_ctrl_cleanup(struct be_adapter *adapter)
+@@ -1985,40 +3405,69 @@ static void be_ctrl_cleanup(struct be_adapter *adapter)
if (mem->va)
pci_free_consistent(adapter->pdev, mem->size,
mem->va, mem->dma);
@@ -52117,7 +52119,7 @@ index 000e377..f501aa3 100644
if (cmd->va)
pci_free_consistent(adapter->pdev, cmd->size,
-@@ -2027,10 +3475,12 @@ static void be_stats_cleanup(struct be_adapter *adapter)
+@@ -2027,10 +3476,12 @@ static void be_stats_cleanup(struct be_adapter *adapter)
static int be_stats_init(struct be_adapter *adapter)
{
@@ -52133,7 +52135,7 @@ index 000e377..f501aa3 100644
cmd->va = pci_alloc_consistent(adapter->pdev, cmd->size, &cmd->dma);
if (cmd->va == NULL)
return -1;
-@@ -2041,9 +3491,17 @@ static int be_stats_init(struct be_adapter *adapter)
+@@ -2041,9 +3492,17 @@ static int be_stats_init(struct be_adapter *adapter)
static void __devexit be_remove(struct pci_dev *pdev)
{
struct be_adapter *adapter = pci_get_drvdata(pdev);
@@ -52151,7 +52153,7 @@ index 000e377..f501aa3 100644
unregister_netdev(adapter->netdev);
be_clear(adapter);
-@@ -2052,36 +3510,203 @@ static void __devexit be_remove(struct pci_dev *pdev)
+@@ -2052,36 +3511,203 @@ static void __devexit be_remove(struct pci_dev *pdev)
be_ctrl_cleanup(adapter);
@@ -52366,7 +52368,7 @@ index 000e377..f501aa3 100644
return status;
}
-@@ -2091,7 +3716,7 @@ static int __devinit be_probe(struct pci_dev *pdev,
+@@ -2091,7 +3717,7 @@ static int __devinit be_probe(struct pci_dev *pdev,
int status = 0;
struct be_adapter *adapter;
struct net_device *netdev;
@@ -52375,7 +52377,7 @@ index 000e377..f501aa3 100644
status = pci_enable_device(pdev);
if (status)
-@@ -2102,31 +3727,22 @@ static int __devinit be_probe(struct pci_dev *pdev,
+@@ -2102,31 +3728,22 @@ static int __devinit be_probe(struct pci_dev *pdev,
goto disable_dev;
pci_set_master(pdev);
@@ -52414,7 +52416,7 @@ index 000e377..f501aa3 100644
status = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
if (!status) {
-@@ -2139,46 +3755,150 @@ static int __devinit be_probe(struct pci_dev *pdev,
+@@ -2139,46 +3756,150 @@ static int __devinit be_probe(struct pci_dev *pdev,
}
}
@@ -52577,7 +52579,7 @@ index 000e377..f501aa3 100644
rel_reg:
pci_release_regions(pdev);
disable_dev:
-@@ -2193,6 +3913,10 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
+@@ -2193,6 +3914,10 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
struct be_adapter *adapter = pci_get_drvdata(pdev);
struct net_device *netdev = adapter->netdev;
@@ -52588,7 +52590,7 @@ index 000e377..f501aa3 100644
netif_device_detach(netdev);
if (netif_running(netdev)) {
rtnl_lock();
-@@ -2202,6 +3926,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
+@@ -2202,6 +3927,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
be_cmd_get_flow_control(adapter, &adapter->tx_fc, &adapter->rx_fc);
be_clear(adapter);
@@ -52596,7 +52598,7 @@ index 000e377..f501aa3 100644
pci_save_state(pdev);
pci_disable_device(pdev);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
-@@ -2223,6 +3948,12 @@ static int be_resume(struct pci_dev *pdev)
+@@ -2223,6 +3949,12 @@ static int be_resume(struct pci_dev *pdev)
pci_set_power_state(pdev, 0);
pci_restore_state(pdev);
@@ -52609,7 +52611,7 @@ index 000e377..f501aa3 100644
be_setup(adapter);
if (netif_running(netdev)) {
rtnl_lock();
-@@ -2230,28 +3961,152 @@ static int be_resume(struct pci_dev *pdev)
+@@ -2230,28 +3962,152 @@ static int be_resume(struct pci_dev *pdev)
rtnl_unlock();
}
netif_device_attach(netdev);
@@ -92302,6 +92304,20 @@ index d30732c..e4992cd 100644
size = i_size_read(path.dentry->d_inode);
shm_unlock(shp);
+diff --git a/kernel/Makefile b/kernel/Makefile
+index d7c13d2..13de8d7 100644
+--- a/kernel/Makefile
++++ b/kernel/Makefile
+@@ -66,7 +66,9 @@ obj-$(CONFIG_USER_NS) += user_namespace.o
+ obj-$(CONFIG_PID_NS) += pid_namespace.o
+ obj-$(CONFIG_IKCONFIG) += configs.o
+ obj-$(CONFIG_RESOURCE_COUNTERS) += res_counter.o
++ifeq ($(CONFIG_SMP),y)
+ obj-$(CONFIG_STOP_MACHINE) += stop_machine.o
++endif
+ obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o
+ obj-$(CONFIG_AUDIT) += audit.o auditfilter.o audit_watch.o
+ obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
diff --git a/kernel/acct.c b/kernel/acct.c
index a6605ca..ca91111 100644
--- a/kernel/acct.c