]> git.pld-linux.org Git - packages/kernel.git/blame - kernel-small_fixes.patch
- force 1.619 macros which disable constify grsec plugin for external modules
[packages/kernel.git] / kernel-small_fixes.patch
CommitLineData
08aa9d92 1--- linux-2.6.32/drivers/infiniband/Kconfig~ 2009-12-05 00:26:03.663774916 +0100
2+++ linux-2.6.32/drivers/infiniband/Kconfig 2009-12-05 00:26:05.914179759 +0100
3@@ -37,7 +37,6 @@
4 config INFINIBAND_ADDR_TRANS
5 bool
6 depends on INET
7- depends on !(INFINIBAND = y && IPV6 = m)
8 default y
9
10 source "drivers/infiniband/hw/mthca/Kconfig"
11--- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100
12+++ linux-2.6.33/scripts/mod/modpost.c 2010-03-07 14:26:47.242168558 +0100
13@@ -15,7 +15,8 @@
14 #include <stdio.h>
15 #include <ctype.h>
16 #include "modpost.h"
17-#include "../../include/generated/autoconf.h"
18+// PLD architectures don't use CONFIG_SYMBOL_PREFIX
19+//#include "../../include/generated/autoconf.h"
20 #include "../../include/linux/license.h"
21
22 /* Some toolchains use a `_' prefix for all user symbols. */
23
24commit 87b09f1f25cd1e01d7c50bf423c7fe33027d7511
25Author: stephen hemminger <shemminger@vyatta.com>
26Date: Fri Feb 12 06:58:00 2010 +0000
27
28 sky2: dont enable PME legacy mode
29
30 This bit is not changed by vendor driver, and should be left alone.
31 The documentation implies this a debug bit.
32 0 = WAKE# only asserted when VMAIN not available
33 1 = WAKE# is depend on wake events and independent of VMAIN.
34
35 Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
36 Signed-off-by: David S. Miller <davem@davemloft.net>
37
38diff --git b/drivers/net/sky2.c a/drivers/net/sky2.c
39index 2494842..edf37aa 100644
40--- b/drivers/net/sky2.c
41+++ a/drivers/net/sky2.c
42@@ -733,6 +733,7 @@ static void sky2_wol_init(struct sky2_port *sky2)
43 unsigned port = sky2->port;
44 enum flow_control save_mode;
45 u16 ctrl;
46+ u32 reg1;
47
48 /* Bring hardware out of reset */
49 sky2_write16(hw, B0_CTST, CS_RST_CLR);
50@@ -786,6 +787,11 @@ static void sky2_wol_init(struct sky2_port *sky2)
51 /* Disable PiG firmware */
52 sky2_write16(hw, B0_CTST, Y2_HW_WOL_OFF);
53
54+ /* Turn on legacy PCI-Express PME mode */
55+ reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
56+ reg1 |= PCI_Y2_PME_LEGACY;
57+ sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
58+
59 /* block receiver */
60 sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
61 }
2c2cf492
JR
62Date: Mon, 11 Jul 2011 09:59:57 -0400
63From: Christoph Hellwig <hch@infradead.org>
64To: xfs@oss.sgi.com
65Cc: arekm@maven.pl
66Subject: [PATCH] xfs: start periodic workers later
67Message-ID: <20110711135957.GA23737@infradead.org>
68MIME-Version: 1.0
69Content-Type: text/plain;
70 charset=us-ascii
71Content-Disposition: inline
72User-Agent: Mutt/1.5.21 (2010-09-15)
73
74Start the periodic sync workers only after we have finished xfs_mountfs
75and thus fully set up the filesystem structures. Without this we can
76call into xfs_qm_sync before the quotainfo strucute is set up if the
77mount takes unusually long, and probably hit other incomplete states
78as well.
79
80Also clean up the xfs_fs_fill_super error path by using consistent
81label names, and removing an impossible to reach case.
82
83Reported-by: Arkadiusz Miskiewicz <arekm@maven.pl>
84Signed-off-by: Christoph Hellwig <hch@lst.de>
85
86Index: xfs/fs/xfs/linux-2.6/xfs_super.c
87===================================================================
88--- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2011-07-11 12:02:56.762758869 +0200
89+++ xfs/fs/xfs/linux-2.6/xfs_super.c 2011-07-11 12:09:20.817344934 +0200
90@@ -1411,37 +1411,35 @@ xfs_fs_fill_super(
91 sb->s_time_gran = 1;
92 set_posix_acl_flag(sb);
93
94- error = xfs_syncd_init(mp);
95- if (error)
96- goto out_filestream_unmount;
97-
98 xfs_inode_shrinker_register(mp);
99
100 error = xfs_mountfs(mp);
101 if (error)
102- goto out_syncd_stop;
103+ goto out_filestream_unmount;
104+
105+ error = xfs_syncd_init(mp);
106+ if (error)
107+ goto out_unmount;
108
109 root = igrab(VFS_I(mp->m_rootip));
110 if (!root) {
111 error = ENOENT;
112- goto fail_unmount;
113+ goto out_syncd_stop;
114 }
115 if (is_bad_inode(root)) {
116 error = EINVAL;
117- goto fail_vnrele;
118+ goto out_syncd_stop;
119 }
120 sb->s_root = d_alloc_root(root);
121 if (!sb->s_root) {
122 error = ENOMEM;
123- goto fail_vnrele;
124+ goto out_iput;
125 }
126
127 return 0;
128
129- out_syncd_stop:
130- xfs_inode_shrinker_unregister(mp);
131- xfs_syncd_stop(mp);
132 out_filestream_unmount:
133+ xfs_inode_shrinker_unregister(mp);
134 xfs_filestream_unmount(mp);
135 out_free_sb:
136 xfs_freesb(mp);
137@@ -1455,17 +1453,12 @@ xfs_fs_fill_super(
138 out:
139 return -error;
140
141- fail_vnrele:
142- if (sb->s_root) {
143- dput(sb->s_root);
144- sb->s_root = NULL;
145- } else {
146- iput(root);
147- }
148-
149- fail_unmount:
150- xfs_inode_shrinker_unregister(mp);
151+ out_iput:
152+ iput(root);
153+ out_syncd_stop:
154 xfs_syncd_stop(mp);
155+ out_unmount:
156+ xfs_inode_shrinker_unregister(mp);
157
158 /*
159 * Blow away any referenced inode in the filestreams cache.
23929ec1 160On Sat, 2 Jul 2011, Andi Kleen wrote:
2c2cf492 161
23929ec1
JR
162> > The problem is that blk_peek_request() calls scsi_prep_fn(), which
163> > does this:
164> >
165> > struct scsi_device *sdev = q->queuedata;
166> > int ret = BLKPREP_KILL;
167> >
168> > if (req->cmd_type == REQ_TYPE_BLOCK_PC)
169> > ret = scsi_setup_blk_pc_cmnd(sdev, req);
170> > return scsi_prep_return(q, req, ret);
171> >
172> > It doesn't check to see if sdev is NULL, nor does
173> > scsi_setup_blk_pc_cmnd(). That accounts for this error:
174>
175> I actually added a NULL check in scsi_setup_blk_pc_cmnd early on,
176> but that just caused RCU CPU stalls afterwards and then eventually
177> a hung system.
178
179The RCU problem is likely to be a separate issue. It might even be a
180result of the use-after-free problem with the elevator.
181
182At any rate, it's clear that the crash in the refcounting log you
183posted occurred because scsi_setup_blk_pc_cmnd() called
184scsi_prep_state_check(), which tried to dereference the NULL pointer.
185
186Would you like to try this patch to see if it fixes the problem? As I
187said before, I'm not certain it's the best thing to do, but it worked
188on my system.
189
190Alan Stern
191
192
193
194
195Index: usb-3.0/drivers/scsi/scsi_lib.c
196===================================================================
197--- usb-3.0.orig/drivers/scsi/scsi_lib.c
198+++ usb-3.0/drivers/scsi/scsi_lib.c
199@@ -1247,6 +1247,8 @@ int scsi_prep_fn(struct request_queue *q
200 struct scsi_device *sdev = q->queuedata;
201 int ret = BLKPREP_KILL;
202
203+ if (!sdev)
204+ return ret;
205 if (req->cmd_type == REQ_TYPE_BLOCK_PC)
206 ret = scsi_setup_blk_pc_cmnd(sdev, req);
207 return scsi_prep_return(q, req, ret);
208Index: usb-3.0/drivers/scsi/scsi_sysfs.c
209===================================================================
210--- usb-3.0.orig/drivers/scsi/scsi_sysfs.c
211+++ usb-3.0/drivers/scsi/scsi_sysfs.c
212@@ -322,6 +322,8 @@ static void scsi_device_dev_release_user
213 kfree(evt);
214 }
215
216+ /* Freeing the queue signals to block that we're done */
217+ scsi_free_queue(sdev->request_queue);
218 blk_put_queue(sdev->request_queue);
219 /* NULL queue means the device can't be used */
220 sdev->request_queue = NULL;
221@@ -936,8 +938,6 @@ void __scsi_remove_device(struct scsi_de
222 /* cause the request function to reject all I/O requests */
223 sdev->request_queue->queuedata = NULL;
224
225- /* Freeing the queue signals to block that we're done */
226- scsi_free_queue(sdev->request_queue);
227 put_device(dev);
228 }
229
230
231
23929ec1
JR
232--
233To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
234the body of a message to majordomo@vger.kernel.org
235More majordomo info at http://vger.kernel.org/majordomo-info.html
236Please read the FAQ at http://www.tux.org/lkml/
4914f636
AM
237commit 3326c784c9f492e988617d93f647ae0cfd4c8d09
238Author: Jiri Pirko <jpirko@redhat.com>
239Date: Wed Jul 20 04:54:38 2011 +0000
240
241 forcedeth: do vlan cleanup
242
243 - unify vlan and nonvlan rx path
244 - kill np->vlangrp and nv_vlan_rx_register
245 - allow to turn on/off rx vlan accel via ethtool (set_features)
246
247 Signed-off-by: Jiri Pirko <jpirko@redhat.com>
248 Signed-off-by: David S. Miller <davem@davemloft.net>
249
250diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
251index 537b695..e64cd9c 100644
252--- a/drivers/net/forcedeth.c
253+++ b/drivers/net/forcedeth.c
254@@ -820,9 +820,6 @@ struct fe_priv {
255 struct nv_skb_map *tx_end_flip;
256 int tx_stop;
257
258- /* vlan fields */
259- struct vlan_group *vlangrp;
260-
261 /* msi/msi-x fields */
262 u32 msi_flags;
263 struct msix_entry msi_x_entry[NV_MSI_X_MAX_VECTORS];
264@@ -2766,17 +2763,13 @@ static int nv_rx_process_optimized(struct net_device *dev, int limit)
265 skb->protocol = eth_type_trans(skb, dev);
266 prefetch(skb->data);
267
268- if (likely(!np->vlangrp)) {
269- napi_gro_receive(&np->napi, skb);
270- } else {
271- vlanflags = le32_to_cpu(np->get_rx.ex->buflow);
272- if (vlanflags & NV_RX3_VLAN_TAG_PRESENT) {
273- vlan_gro_receive(&np->napi, np->vlangrp,
274- vlanflags & NV_RX3_VLAN_TAG_MASK, skb);
275- } else {
276- napi_gro_receive(&np->napi, skb);
277- }
278+ vlanflags = le32_to_cpu(np->get_rx.ex->buflow);
279+ if (vlanflags & NV_RX3_VLAN_TAG_PRESENT) {
280+ u16 vid = vlanflags & NV_RX3_VLAN_TAG_MASK;
281+
282+ __vlan_hwaccel_put_tag(skb, vid);
283 }
284+ napi_gro_receive(&np->napi, skb);
285
286 dev->stats.rx_packets++;
287 dev->stats.rx_bytes += len;
288@@ -4484,6 +4477,27 @@ static u32 nv_fix_features(struct net_device *dev, u32 features)
289 return features;
290 }
291
292+static void nv_vlan_mode(struct net_device *dev, u32 features)
293+{
294+ struct fe_priv *np = get_nvpriv(dev);
295+
296+ spin_lock_irq(&np->lock);
297+
298+ if (features & NETIF_F_HW_VLAN_RX)
299+ np->txrxctl_bits |= NVREG_TXRXCTL_VLANSTRIP;
300+ else
301+ np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANSTRIP;
302+
303+ if (features & NETIF_F_HW_VLAN_TX)
304+ np->txrxctl_bits |= NVREG_TXRXCTL_VLANINS;
305+ else
306+ np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANINS;
307+
308+ writel(np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
309+
310+ spin_unlock_irq(&np->lock);
311+}
312+
313 static int nv_set_features(struct net_device *dev, u32 features)
314 {
315 struct fe_priv *np = netdev_priv(dev);
316@@ -4504,6 +4518,9 @@ static int nv_set_features(struct net_device *dev, u32 features)
317 spin_unlock_irq(&np->lock);
318 }
319
320+ if (changed & (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX))
321+ nv_vlan_mode(dev, features);
322+
323 return 0;
324 }
325
326@@ -4879,29 +4896,6 @@ static const struct ethtool_ops ops = {
327 .self_test = nv_self_test,
328 };
329
330-static void nv_vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
331-{
332- struct fe_priv *np = get_nvpriv(dev);
333-
334- spin_lock_irq(&np->lock);
335-
336- /* save vlan group */
337- np->vlangrp = grp;
338-
339- if (grp) {
340- /* enable vlan on MAC */
341- np->txrxctl_bits |= NVREG_TXRXCTL_VLANSTRIP | NVREG_TXRXCTL_VLANINS;
342- } else {
343- /* disable vlan on MAC */
344- np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANSTRIP;
345- np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANINS;
346- }
347-
348- writel(np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
349-
350- spin_unlock_irq(&np->lock);
351-}
352-
353 /* The mgmt unit and driver use a semaphore to access the phy during init */
354 static int nv_mgmt_acquire_sema(struct net_device *dev)
355 {
356@@ -5208,7 +5202,6 @@ static const struct net_device_ops nv_netdev_ops = {
357 .ndo_validate_addr = eth_validate_addr,
358 .ndo_set_mac_address = nv_set_mac_address,
359 .ndo_set_multicast_list = nv_set_multicast,
360- .ndo_vlan_rx_register = nv_vlan_rx_register,
361 #ifdef CONFIG_NET_POLL_CONTROLLER
362 .ndo_poll_controller = nv_poll_controller,
363 #endif
364@@ -5226,7 +5219,6 @@ static const struct net_device_ops nv_netdev_ops_optimized = {
365 .ndo_validate_addr = eth_validate_addr,
366 .ndo_set_mac_address = nv_set_mac_address,
367 .ndo_set_multicast_list = nv_set_multicast,
368- .ndo_vlan_rx_register = nv_vlan_rx_register,
369 #ifdef CONFIG_NET_POLL_CONTROLLER
370 .ndo_poll_controller = nv_poll_controller,
371 #endif
372commit 0891b0e08937aaec2c4734acb94c5ff8042313bb
373Author: Jiri Pirko <jpirko@redhat.com>
374Date: Tue Jul 26 10:19:28 2011 +0000
375
376 forcedeth: fix vlans
377
378 For some reason, when rxaccel is disabled, NV_RX3_VLAN_TAG_PRESENT is
379 still set and some pseudorandom vids appear. So check for
380 NETIF_F_HW_VLAN_RX as well. Also set correctly hw_features and set vlan
381 mode on probe.
382
383 Signed-off-by: Jiri Pirko <jpirko@redhat.com>
384 Signed-off-by: David S. Miller <davem@davemloft.net>
385
386diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
387index e64cd9c..e55df30 100644
388--- a/drivers/net/forcedeth.c
389+++ b/drivers/net/forcedeth.c
390@@ -2764,7 +2764,14 @@ static int nv_rx_process_optimized(struct net_device *dev, int limit)
391 prefetch(skb->data);
392
393 vlanflags = le32_to_cpu(np->get_rx.ex->buflow);
394- if (vlanflags & NV_RX3_VLAN_TAG_PRESENT) {
395+
396+ /*
397+ * There's need to check for NETIF_F_HW_VLAN_RX here.
398+ * Even if vlan rx accel is disabled,
399+ * NV_RX3_VLAN_TAG_PRESENT is pseudo randomly set.
400+ */
401+ if (dev->features & NETIF_F_HW_VLAN_RX &&
402+ vlanflags & NV_RX3_VLAN_TAG_PRESENT) {
403 u16 vid = vlanflags & NV_RX3_VLAN_TAG_MASK;
404
405 __vlan_hwaccel_put_tag(skb, vid);
406@@ -5331,15 +5338,16 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
407 np->txrxctl_bits |= NVREG_TXRXCTL_RXCHECK;
408 dev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_SG |
409 NETIF_F_TSO | NETIF_F_RXCSUM;
410- dev->features |= dev->hw_features;
411 }
412
413 np->vlanctl_bits = 0;
414 if (id->driver_data & DEV_HAS_VLAN) {
415 np->vlanctl_bits = NVREG_VLANCONTROL_ENABLE;
416- dev->features |= NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_TX;
417+ dev->hw_features |= NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_TX;
418 }
419
420+ dev->features |= dev->hw_features;
421+
422 np->pause_flags = NV_PAUSEFRAME_RX_CAPABLE | NV_PAUSEFRAME_RX_REQ | NV_PAUSEFRAME_AUTONEG;
423 if ((id->driver_data & DEV_HAS_PAUSEFRAME_TX_V1) ||
424 (id->driver_data & DEV_HAS_PAUSEFRAME_TX_V2) ||
425@@ -5607,6 +5615,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
426 goto out_error;
427 }
428
429+ nv_vlan_mode(dev, dev->features);
430+
431 netif_carrier_off(dev);
432
433 dev_info(&pci_dev->dev, "ifname %s, PHY OUI 0x%x @ %d, addr %pM\n",
This page took 0.176989 seconds and 4 git commands to generate.