/[linux-patches]/genpatches-2.6/trunk/2.6.11/1011_linux-2.6.11.12.patch
Gentoo

Contents of /genpatches-2.6/trunk/2.6.11/1011_linux-2.6.11.12.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (show annotations) (download) (as text)
Sun Jun 12 12:03:31 2005 UTC (15 years, 4 months ago) by dsd
File MIME type: text/x-diff
File size: 8761 byte(s)
Linux 2.6.11.12
1 diff --git a/Makefile b/Makefile
2 --- a/Makefile
3 +++ b/Makefile
4 @@ -1,7 +1,7 @@
5 VERSION = 2
6 PATCHLEVEL = 6
7 SUBLEVEL = 11
8 -EXTRAVERSION = .11
9 +EXTRAVERSION = .12
10 NAME=Woozy Beaver
11
12 # *DOCUMENTATION*
13 diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
14 --- a/arch/x86_64/kernel/apic.c
15 +++ b/arch/x86_64/kernel/apic.c
16 @@ -775,9 +775,7 @@ void __init setup_boot_APIC_clock (void)
17
18 void __init setup_secondary_APIC_clock(void)
19 {
20 - local_irq_disable(); /* FIXME: Do we need this? --RR */
21 setup_APIC_timer(calibration_result);
22 - local_irq_enable();
23 }
24
25 void __init disable_APIC_timer(void)
26 diff --git a/arch/x86_64/kernel/ptrace.c b/arch/x86_64/kernel/ptrace.c
27 --- a/arch/x86_64/kernel/ptrace.c
28 +++ b/arch/x86_64/kernel/ptrace.c
29 @@ -252,7 +252,7 @@ asmlinkage long sys_ptrace(long request,
30 break;
31
32 switch (addr) {
33 - case 0 ... sizeof(struct user_regs_struct):
34 + case 0 ... sizeof(struct user_regs_struct) - sizeof(long):
35 tmp = getreg(child, addr);
36 break;
37 case offsetof(struct user, u_debugreg[0]):
38 @@ -297,7 +297,7 @@ asmlinkage long sys_ptrace(long request,
39 break;
40
41 switch (addr) {
42 - case 0 ... sizeof(struct user_regs_struct):
43 + case 0 ... sizeof(struct user_regs_struct) - sizeof(long):
44 ret = putreg(child, addr, data);
45 break;
46 /* Disallows to set a breakpoint into the vsyscall */
47 diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c
48 --- a/arch/x86_64/kernel/smpboot.c
49 +++ b/arch/x86_64/kernel/smpboot.c
50 @@ -309,8 +309,6 @@ void __init smp_callin(void)
51 Dprintk("CALLIN, before setup_local_APIC().\n");
52 setup_local_APIC();
53
54 - local_irq_enable();
55 -
56 /*
57 * Get our bogomips.
58 */
59 @@ -324,8 +322,6 @@ void __init smp_callin(void)
60 */
61 smp_store_cpu_info(cpuid);
62
63 - local_irq_disable();
64 -
65 /*
66 * Allow the master to continue.
67 */
68 diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c
69 --- a/drivers/media/video/bttv-cards.c
70 +++ b/drivers/media/video/bttv-cards.c
71 @@ -1939,7 +1939,6 @@ struct tvcard bttv_tvcards[] = {
72 .no_tda9875 = 1,
73 .no_tda7432 = 1,
74 .tuner_type = TUNER_ABSENT,
75 - .no_video = 1,
76 .pll = PLL_28,
77 },{
78 .name = "Teppro TEV-560/InterVision IV-560",
79 diff --git a/fs/hfs/mdb.c b/fs/hfs/mdb.c
80 --- a/fs/hfs/mdb.c
81 +++ b/fs/hfs/mdb.c
82 @@ -333,6 +333,8 @@ void hfs_mdb_close(struct super_block *s
83 * Release the resources associated with the in-core MDB. */
84 void hfs_mdb_put(struct super_block *sb)
85 {
86 + if (!HFS_SB(sb))
87 + return;
88 /* free the B-trees */
89 hfs_btree_close(HFS_SB(sb)->ext_tree);
90 hfs_btree_close(HFS_SB(sb)->cat_tree);
91 @@ -340,4 +342,7 @@ void hfs_mdb_put(struct super_block *sb)
92 /* free the buffers holding the primary and alternate MDBs */
93 brelse(HFS_SB(sb)->mdb_bh);
94 brelse(HFS_SB(sb)->alt_mdb_bh);
95 +
96 + kfree(HFS_SB(sb));
97 + sb->s_fs_info = NULL;
98 }
99 diff --git a/fs/hfs/super.c b/fs/hfs/super.c
100 --- a/fs/hfs/super.c
101 +++ b/fs/hfs/super.c
102 @@ -263,7 +263,7 @@ static int hfs_fill_super(struct super_b
103 res = -EINVAL;
104 if (!parse_options((char *)data, sbi)) {
105 hfs_warn("hfs_fs: unable to parse mount options.\n");
106 - goto bail3;
107 + goto bail;
108 }
109
110 sb->s_op = &hfs_super_operations;
111 @@ -276,7 +276,7 @@ static int hfs_fill_super(struct super_b
112 hfs_warn("VFS: Can't find a HFS filesystem on dev %s.\n",
113 hfs_mdb_name(sb));
114 res = -EINVAL;
115 - goto bail2;
116 + goto bail;
117 }
118
119 /* try to get the root inode */
120 @@ -306,10 +306,8 @@ bail_iput:
121 iput(root_inode);
122 bail_no_root:
123 hfs_warn("hfs_fs: get root inode failed.\n");
124 +bail:
125 hfs_mdb_put(sb);
126 -bail2:
127 -bail3:
128 - kfree(sbi);
129 return res;
130 }
131
132 diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
133 --- a/fs/hfsplus/super.c
134 +++ b/fs/hfsplus/super.c
135 @@ -207,7 +207,9 @@ static void hfsplus_write_super(struct s
136 static void hfsplus_put_super(struct super_block *sb)
137 {
138 dprint(DBG_SUPER, "hfsplus_put_super\n");
139 - if (!(sb->s_flags & MS_RDONLY)) {
140 + if (!sb->s_fs_info)
141 + return;
142 + if (!(sb->s_flags & MS_RDONLY) && HFSPLUS_SB(sb).s_vhdr) {
143 struct hfsplus_vh *vhdr = HFSPLUS_SB(sb).s_vhdr;
144
145 vhdr->modify_date = hfsp_now2mt();
146 @@ -223,6 +225,8 @@ static void hfsplus_put_super(struct sup
147 iput(HFSPLUS_SB(sb).alloc_file);
148 iput(HFSPLUS_SB(sb).hidden_dir);
149 brelse(HFSPLUS_SB(sb).s_vhbh);
150 + kfree(sb->s_fs_info);
151 + sb->s_fs_info = NULL;
152 }
153
154 static int hfsplus_statfs(struct super_block *sb, struct kstatfs *buf)
155 diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c
156 --- a/fs/jbd/checkpoint.c
157 +++ b/fs/jbd/checkpoint.c
158 @@ -339,8 +339,10 @@ int log_do_checkpoint(journal_t *journal
159 }
160 } while (jh != last_jh && !retry);
161
162 - if (batch_count)
163 + if (batch_count) {
164 __flush_batch(journal, bhs, &batch_count);
165 + retry = 1;
166 + }
167
168 /*
169 * If someone cleaned up this transaction while we slept, we're
170 diff --git a/mm/rmap.c b/mm/rmap.c
171 --- a/mm/rmap.c
172 +++ b/mm/rmap.c
173 @@ -641,7 +641,7 @@ static void try_to_unmap_cluster(unsigne
174 pgd_t *pgd;
175 pud_t *pud;
176 pmd_t *pmd;
177 - pte_t *pte;
178 + pte_t *pte, *original_pte;
179 pte_t pteval;
180 struct page *page;
181 unsigned long address;
182 @@ -673,7 +673,7 @@ static void try_to_unmap_cluster(unsigne
183 if (!pmd_present(*pmd))
184 goto out_unlock;
185
186 - for (pte = pte_offset_map(pmd, address);
187 + for (original_pte = pte = pte_offset_map(pmd, address);
188 address < end; pte++, address += PAGE_SIZE) {
189
190 if (!pte_present(*pte))
191 @@ -710,7 +710,7 @@ static void try_to_unmap_cluster(unsigne
192 (*mapcount)--;
193 }
194
195 - pte_unmap(pte);
196 + pte_unmap(original_pte);
197
198 out_unlock:
199 spin_unlock(&mm->page_table_lock);
200 diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
201 --- a/net/bridge/br_input.c
202 +++ b/net/bridge/br_input.c
203 @@ -54,6 +54,9 @@ int br_handle_frame_finish(struct sk_buf
204 struct net_bridge_fdb_entry *dst;
205 int passedup = 0;
206
207 + /* insert into forwarding database after filtering to avoid spoofing */
208 + br_fdb_insert(p->br, p, eth_hdr(skb)->h_source, 0);
209 +
210 if (br->dev->flags & IFF_PROMISC) {
211 struct sk_buff *skb2;
212
213 @@ -108,8 +111,7 @@ int br_handle_frame(struct net_bridge_po
214 if (eth_hdr(skb)->h_source[0] & 1)
215 goto err;
216
217 - if (p->state == BR_STATE_LEARNING ||
218 - p->state == BR_STATE_FORWARDING)
219 + if (p->state == BR_STATE_LEARNING)
220 br_fdb_insert(p->br, p, eth_hdr(skb)->h_source, 0);
221
222 if (p->br->stp_enabled &&
223 diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c
224 --- a/net/bridge/br_stp_bpdu.c
225 +++ b/net/bridge/br_stp_bpdu.c
226 @@ -140,6 +140,9 @@ int br_stp_handle_bpdu(struct sk_buff *s
227 struct net_bridge *br = p->br;
228 unsigned char *buf;
229
230 + /* insert into forwarding database after filtering to avoid spoofing */
231 + br_fdb_insert(p->br, p, eth_hdr(skb)->h_source, 0);
232 +
233 /* need at least the 802 and STP headers */
234 if (!pskb_may_pull(skb, sizeof(header)+1) ||
235 memcmp(skb->data, header, sizeof(header)))
236 diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c
237 --- a/net/ipv4/netfilter/ip_queue.c
238 +++ b/net/ipv4/netfilter/ip_queue.c
239 @@ -3,6 +3,7 @@
240 * communicating with userspace via netlink.
241 *
242 * (C) 2000-2002 James Morris <jmorris@intercode.com.au>
243 + * (C) 2003-2005 Netfilter Core Team <coreteam@netfilter.org>
244 *
245 * This program is free software; you can redistribute it and/or modify
246 * it under the terms of the GNU General Public License version 2 as
247 @@ -14,6 +15,7 @@
248 * Zander).
249 * 2000-08-01: Added Nick Williams' MAC support.
250 * 2002-06-25: Code cleanup.
251 + * 2005-05-26: local_bh_{disable,enable} around nf_reinject (Harald Welte)
252 *
253 */
254 #include <linux/module.h>
255 @@ -66,7 +68,15 @@ static DECLARE_MUTEX(ipqnl_sem);
256 static void
257 ipq_issue_verdict(struct ipq_queue_entry *entry, int verdict)
258 {
259 + /* TCP input path (and probably other bits) assume to be called
260 + * from softirq context, not from syscall, like ipq_issue_verdict is
261 + * called. TCP input path deadlocks with locks taken from timer
262 + * softirq, e.g. We therefore emulate this by local_bh_disable() */
263 +
264 + local_bh_disable();
265 nf_reinject(entry->skb, entry->info, verdict);
266 + local_bh_enable();
267 +
268 kfree(entry);
269 }
270
271 diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
272 --- a/net/sched/sch_netem.c
273 +++ b/net/sched/sch_netem.c
274 @@ -184,10 +184,15 @@ static int netem_enqueue(struct sk_buff
275 /* Random duplication */
276 if (q->duplicate && q->duplicate >= get_crandom(&q->dup_cor)) {
277 struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC);
278 -
279 - pr_debug("netem_enqueue: dup %p\n", skb2);
280 - if (skb2)
281 - delay_skb(sch, skb2);
282 + if (skb2) {
283 + struct Qdisc *rootq = sch->dev->qdisc;
284 + u32 dupsave = q->duplicate;
285 +
286 + /* prevent duplicating a dup... */
287 + q->duplicate = 0;
288 + rootq->enqueue(skb2, rootq);
289 + q->duplicate = dupsave;
290 + }
291 }
292
293 /* If doing simple delay then gap == 0 so all packets

  ViewVC Help
Powered by ViewVC 1.1.20