Gentoo Archives: gentoo-commits

From: "Daniel Drake (dsd)" <dsd@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] linux-patches r1300 - genpatches-2.6/trunk/2.6.24
Date: Fri, 02 May 2008 16:53:36
Message-Id: E1JryVo-0005gj-Si@stork.gentoo.org
1 Author: dsd
2 Date: 2008-05-02 16:53:32 +0000 (Fri, 02 May 2008)
3 New Revision: 1300
4
5 Added:
6 genpatches-2.6/trunk/2.6.24/1005_linux-2.6.24.6.patch
7 Modified:
8 genpatches-2.6/trunk/2.6.24/0000_README
9 Log:
10 Linux 2.6.24.6
11
12 Modified: genpatches-2.6/trunk/2.6.24/0000_README
13 ===================================================================
14 --- genpatches-2.6/trunk/2.6.24/0000_README 2008-04-28 14:04:17 UTC (rev 1299)
15 +++ genpatches-2.6/trunk/2.6.24/0000_README 2008-05-02 16:53:32 UTC (rev 1300)
16 @@ -59,6 +59,10 @@
17 From: http://www.kernel.org
18 Desc: Linux 2.6.24.5
19
20 +Patch: 1005_linux-2.6.24.6.patch
21 +From: http://www.kernel.org
22 +Desc: Linux 2.6.24.6
23 +
24 Patch: 2100_sd-sr-medium-detection.patch
25 From: http://bugs.gentoo.org/196879
26 Desc: Add early medium-not-present detection in sr/sd drivers
27
28 Added: genpatches-2.6/trunk/2.6.24/1005_linux-2.6.24.6.patch
29 ===================================================================
30 --- genpatches-2.6/trunk/2.6.24/1005_linux-2.6.24.6.patch (rev 0)
31 +++ genpatches-2.6/trunk/2.6.24/1005_linux-2.6.24.6.patch 2008-05-02 16:53:32 UTC (rev 1300)
32 @@ -0,0 +1,262 @@
33 +diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c
34 +index 232fdeb..9994c52 100644
35 +--- a/arch/x86/kernel/io_apic_32.c
36 ++++ b/arch/x86/kernel/io_apic_32.c
37 +@@ -2478,6 +2478,7 @@ void destroy_irq(unsigned int irq)
38 + dynamic_irq_cleanup(irq);
39 +
40 + spin_lock_irqsave(&vector_lock, flags);
41 ++ clear_bit(irq_vector[irq], used_vectors);
42 + irq_vector[irq] = 0;
43 + spin_unlock_irqrestore(&vector_lock, flags);
44 + }
45 +diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
46 +index 48c1775..cb42b69 100644
47 +--- a/drivers/isdn/capi/capidrv.c
48 ++++ b/drivers/isdn/capi/capidrv.c
49 +@@ -2332,13 +2332,14 @@ static int __init capidrv_init(void)
50 +
51 + static void __exit capidrv_exit(void)
52 + {
53 +- char rev[10];
54 ++ char rev[32];
55 + char *p;
56 +
57 + if ((p = strchr(revision, ':')) != 0) {
58 +- strcpy(rev, p + 1);
59 +- p = strchr(rev, '$');
60 +- *p = 0;
61 ++ strncpy(rev, p + 1, sizeof(rev));
62 ++ rev[sizeof(rev)-1] = 0;
63 ++ if ((p = strchr(rev, '$')) != 0)
64 ++ *p = 0;
65 + } else {
66 + strcpy(rev, " ??? ");
67 + }
68 +diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
69 +index ced83c2..ef1a300 100644
70 +--- a/drivers/isdn/i4l/isdn_net.c
71 ++++ b/drivers/isdn/i4l/isdn_net.c
72 +@@ -2010,6 +2010,7 @@ isdn_net_init(struct net_device *ndev)
73 + ndev->flags = IFF_NOARP|IFF_POINTOPOINT;
74 + ndev->type = ARPHRD_ETHER;
75 + ndev->addr_len = ETH_ALEN;
76 ++ ndev->validate_addr = NULL;
77 +
78 + /* for clients with MPPP maybe higher values better */
79 + ndev->tx_queue_len = 30;
80 +diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
81 +index a4eb6a8..0ff3e4c 100644
82 +--- a/drivers/media/video/cx88/cx88-cards.c
83 ++++ b/drivers/media/video/cx88/cx88-cards.c
84 +@@ -1349,6 +1349,10 @@ static const struct cx88_board cx88_boards[] = {
85 + }},
86 + /* fixme: Add radio support */
87 + .mpeg = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD,
88 ++ .radio = {
89 ++ .type = CX88_RADIO,
90 ++ .gpio0 = 0xe780,
91 ++ },
92 + },
93 + [CX88_BOARD_ADSTECH_PTV_390] = {
94 + .name = "ADS Tech Instant Video PCI",
95 +diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c
96 +index fd6826f..da9a10e 100644
97 +--- a/drivers/media/video/ivtv/ivtv-ioctl.c
98 ++++ b/drivers/media/video/ivtv/ivtv-ioctl.c
99 +@@ -727,7 +727,8 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void
100 +
101 + memset(vcap, 0, sizeof(*vcap));
102 + strcpy(vcap->driver, IVTV_DRIVER_NAME); /* driver name */
103 +- strcpy(vcap->card, itv->card_name); /* card type */
104 ++ strncpy(vcap->card, itv->card_name,
105 ++ sizeof(vcap->card)-1); /* card type */
106 + strcpy(vcap->bus_info, pci_name(itv->dev)); /* bus info... */
107 + vcap->version = IVTV_DRIVER_VERSION; /* version */
108 + vcap->capabilities = itv->v4l2_cap; /* capabilities */
109 +diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c
110 +index 21230c9..fe5be1b 100644
111 +--- a/drivers/net/tehuti.c
112 ++++ b/drivers/net/tehuti.c
113 +@@ -625,6 +625,12 @@ static void __init bdx_firmware_endianess(void)
114 + s_firmLoad[i] = CPU_CHIP_SWAP32(s_firmLoad[i]);
115 + }
116 +
117 ++static int bdx_range_check(struct bdx_priv *priv, u32 offset)
118 ++{
119 ++ return (offset > (u32) (BDX_REGS_SIZE / priv->nic->port_num)) ?
120 ++ -EINVAL : 0;
121 ++}
122 ++
123 + static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
124 + {
125 + struct bdx_priv *priv = ndev->priv;
126 +@@ -643,9 +649,15 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
127 + DBG("%d 0x%x 0x%x\n", data[0], data[1], data[2]);
128 + }
129 +
130 ++ if (!capable(CAP_NET_ADMIN))
131 ++ return -EPERM;
132 ++
133 + switch (data[0]) {
134 +
135 + case BDX_OP_READ:
136 ++ error = bdx_range_check(priv, data[1]);
137 ++ if (error < 0)
138 ++ return error;
139 + data[2] = READ_REG(priv, data[1]);
140 + DBG("read_reg(0x%x)=0x%x (dec %d)\n", data[1], data[2],
141 + data[2]);
142 +@@ -655,6 +667,9 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
143 + break;
144 +
145 + case BDX_OP_WRITE:
146 ++ error = bdx_range_check(priv, data[1]);
147 ++ if (error < 0)
148 ++ return error;
149 + WRITE_REG(priv, data[1], data[2]);
150 + DBG("write_reg(0x%x, 0x%x)\n", data[1], data[2]);
151 + break;
152 +diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
153 +index 9e732bf..ba7935d 100644
154 +--- a/drivers/usb/gadget/ether.c
155 ++++ b/drivers/usb/gadget/ether.c
156 +@@ -1561,6 +1561,7 @@ done_set_intf:
157 + memcpy(req->buf, buf, n);
158 + req->complete = rndis_response_complete;
159 + rndis_free_response(dev->rndis_config, buf);
160 ++ value = n;
161 + }
162 + /* else stalls ... spec says to avoid that */
163 + }
164 +diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
165 +index 497e29a..d7fae72 100644
166 +--- a/drivers/usb/serial/usb-serial.c
167 ++++ b/drivers/usb/serial/usb-serial.c
168 +@@ -844,6 +844,7 @@ int usb_serial_probe(struct usb_interface *interface,
169 + serial->num_interrupt_in = num_interrupt_in;
170 + serial->num_interrupt_out = num_interrupt_out;
171 +
172 ++#if 0
173 + /* check that the device meets the driver's requirements */
174 + if ((type->num_interrupt_in != NUM_DONT_CARE &&
175 + type->num_interrupt_in != num_interrupt_in)
176 +@@ -857,6 +858,7 @@ int usb_serial_probe(struct usb_interface *interface,
177 + kfree(serial);
178 + return -EIO;
179 + }
180 ++#endif
181 +
182 + /* found all that we need */
183 + dev_info(&interface->dev, "%s converter detected\n",
184 +diff --git a/fs/dnotify.c b/fs/dnotify.c
185 +index 28d01ed..eaecc4c 100644
186 +--- a/fs/dnotify.c
187 ++++ b/fs/dnotify.c
188 +@@ -20,6 +20,7 @@
189 + #include <linux/init.h>
190 + #include <linux/spinlock.h>
191 + #include <linux/slab.h>
192 ++#include <linux/file.h>
193 +
194 + int dir_notify_enable __read_mostly = 1;
195 +
196 +@@ -66,6 +67,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
197 + struct dnotify_struct **prev;
198 + struct inode *inode;
199 + fl_owner_t id = current->files;
200 ++ struct file *f;
201 + int error = 0;
202 +
203 + if ((arg & ~DN_MULTISHOT) == 0) {
204 +@@ -92,6 +94,15 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
205 + prev = &odn->dn_next;
206 + }
207 +
208 ++ rcu_read_lock();
209 ++ f = fcheck(fd);
210 ++ rcu_read_unlock();
211 ++ /* we'd lost the race with close(), sod off silently */
212 ++ /* note that inode->i_lock prevents reordering problems
213 ++ * between accesses to descriptor table and ->i_dnotify */
214 ++ if (f != filp)
215 ++ goto out_free;
216 ++
217 + error = __f_setown(filp, task_pid(current), PIDTYPE_PID, 0);
218 + if (error)
219 + goto out_free;
220 +diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
221 +index a1db918..4c895f3 100644
222 +--- a/fs/jffs2/erase.c
223 ++++ b/fs/jffs2/erase.c
224 +@@ -419,9 +419,6 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
225 + if (jffs2_write_nand_cleanmarker(c, jeb))
226 + goto filebad;
227 + }
228 +-
229 +- /* Everything else got zeroed before the erase */
230 +- jeb->free_size = c->sector_size;
231 + } else {
232 +
233 + struct kvec vecs[1];
234 +@@ -449,18 +446,19 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
235 +
236 + goto filebad;
237 + }
238 +-
239 +- /* Everything else got zeroed before the erase */
240 +- jeb->free_size = c->sector_size;
241 +- /* FIXME Special case for cleanmarker in empty block */
242 +- jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
243 + }
244 ++ /* Everything else got zeroed before the erase */
245 ++ jeb->free_size = c->sector_size;
246 +
247 + down(&c->erase_free_sem);
248 + spin_lock(&c->erase_completion_lock);
249 ++
250 + c->erasing_size -= c->sector_size;
251 +- c->free_size += jeb->free_size;
252 +- c->used_size += jeb->used_size;
253 ++ c->free_size += c->sector_size;
254 ++
255 ++ /* Account for cleanmarker now, if it's in-band */
256 ++ if (c->cleanmarker_size && !jffs2_cleanmarker_oob(c))
257 ++ jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
258 +
259 + jffs2_dbg_acct_sanity_check_nolock(c,jeb);
260 + jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
261 +diff --git a/fs/splice.c b/fs/splice.c
262 +index e313478..109153c 100644
263 +--- a/fs/splice.c
264 ++++ b/fs/splice.c
265 +@@ -314,7 +314,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
266 + break;
267 +
268 + error = add_to_page_cache_lru(page, mapping, index,
269 +- GFP_KERNEL);
270 ++ mapping_gfp_mask(mapping));
271 + if (unlikely(error)) {
272 + page_cache_release(page);
273 + if (error == -EEXIST)
274 +diff --git a/include/net/tcp.h b/include/net/tcp.h
275 +index cb5b033..fbc4959 100644
276 +--- a/include/net/tcp.h
277 ++++ b/include/net/tcp.h
278 +@@ -775,11 +775,14 @@ extern void tcp_enter_cwr(struct sock *sk, const int set_ssthresh);
279 + extern __u32 tcp_init_cwnd(struct tcp_sock *tp, struct dst_entry *dst);
280 +
281 + /* Slow start with delack produces 3 packets of burst, so that
282 +- * it is safe "de facto".
283 ++ * it is safe "de facto". This will be the default - same as
284 ++ * the default reordering threshold - but if reordering increases,
285 ++ * we must be able to allow cwnd to burst at least this much in order
286 ++ * to not pull it back when holes are filled.
287 + */
288 + static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp)
289 + {
290 +- return 3;
291 ++ return tp->reordering;
292 + }
293 +
294 + /* RFC2861 Check whether we are limited by application or congestion window
295
296 --
297 gentoo-commits@l.g.o mailing list