/[linux-patches]/genpatches-2.6/tags/2.6.32-47/1045_linux-2.6.32.46.patch
Gentoo

Contents of /genpatches-2.6/tags/2.6.32-47/1045_linux-2.6.32.46.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2037 - (show annotations) (download)
Wed Dec 28 14:38:55 2011 UTC (6 years, 2 months ago) by psomas
File size: 17753 byte(s)
2.6.32-47 release
1 diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
2 index c7ee9c9..95b0712 100644
3 --- a/arch/x86/kernel/apic/x2apic_uv_x.c
4 +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
5 @@ -117,7 +117,6 @@ static int __cpuinit uv_wakeup_secondary(int phys_apicid, unsigned long start_ri
6 ((start_rip << UVH_IPI_INT_VECTOR_SHFT) >> 12) |
7 APIC_DM_INIT;
8 uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
9 - mdelay(10);
10
11 val = (1UL << UVH_IPI_INT_SEND_SHFT) |
12 (phys_apicid << UVH_IPI_INT_APIC_ID_SHFT) |
13 diff --git a/arch/x86/vdso/vdso32/sysenter.S b/arch/x86/vdso/vdso32/sysenter.S
14 index e2800af..e354bce 100644
15 --- a/arch/x86/vdso/vdso32/sysenter.S
16 +++ b/arch/x86/vdso/vdso32/sysenter.S
17 @@ -43,7 +43,7 @@ __kernel_vsyscall:
18 .space 7,0x90
19
20 /* 14: System call restart point is here! (SYSENTER_RETURN-2) */
21 - jmp .Lenter_kernel
22 + int $0x80
23 /* 16: System call normal return point is here! */
24 VDSO32_SYSENTER_RETURN: /* Symbol used by sysenter.c via vdso32-syms.h */
25 pop %ebp
26 diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
27 index 87c0625..0ed436e 100644
28 --- a/drivers/gpu/drm/ttm/ttm_bo.c
29 +++ b/drivers/gpu/drm/ttm/ttm_bo.c
30 @@ -281,8 +281,10 @@ static int ttm_bo_add_ttm(struct ttm_buffer_object *bo, bool zero_alloc)
31
32 ret = ttm_tt_set_user(bo->ttm, current,
33 bo->buffer_start, bo->num_pages);
34 - if (unlikely(ret != 0))
35 + if (unlikely(ret != 0)) {
36 ttm_tt_destroy(bo->ttm);
37 + bo->ttm = NULL;
38 + }
39 break;
40 default:
41 printk(KERN_ERR TTM_PFX "Illegal buffer object type\n");
42 diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
43 index 405d3fb..a818105 100644
44 --- a/drivers/hwmon/ibmaem.c
45 +++ b/drivers/hwmon/ibmaem.c
46 @@ -429,13 +429,15 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
47 aem_send_message(ipmi);
48
49 res = wait_for_completion_timeout(&ipmi->read_complete, IPMI_TIMEOUT);
50 - if (!res)
51 - return -ETIMEDOUT;
52 + if (!res) {
53 + res = -ETIMEDOUT;
54 + goto out;
55 + }
56
57 if (ipmi->rx_result || ipmi->rx_msg_len != rs_size ||
58 memcmp(&rs_resp->id, &system_x_id, sizeof(system_x_id))) {
59 - kfree(rs_resp);
60 - return -ENOENT;
61 + res = -ENOENT;
62 + goto out;
63 }
64
65 switch (size) {
66 @@ -460,8 +462,11 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
67 break;
68 }
69 }
70 + res = 0;
71
72 - return 0;
73 +out:
74 + kfree(rs_resp);
75 + return res;
76 }
77
78 /* Update AEM energy registers */
79 diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c
80 index 33352ff..d617f2d 100644
81 --- a/drivers/net/igb/e1000_82575.c
82 +++ b/drivers/net/igb/e1000_82575.c
83 @@ -941,6 +941,7 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw)
84 ctrl |= E1000_CTRL_SLU;
85 ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
86 wr32(E1000_CTRL, ctrl);
87 + wrfl();
88
89 ret_val = igb_setup_serdes_link_82575(hw);
90 if (ret_val)
91 diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
92 index d9461c9..ae1ffbc 100644
93 --- a/drivers/usb/class/usbtmc.c
94 +++ b/drivers/usb/class/usbtmc.c
95 @@ -267,7 +267,7 @@ usbtmc_abort_bulk_in_status:
96 dev_err(dev, "usb_bulk_msg returned %d\n", rv);
97 goto exit;
98 }
99 - } while ((actual = max_size) &&
100 + } while ((actual == max_size) &&
101 (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
102
103 if (actual == max_size) {
104 diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
105 index bcf7a88..eae8b18 100644
106 --- a/drivers/usb/host/pci-quirks.c
107 +++ b/drivers/usb/host/pci-quirks.c
108 @@ -444,7 +444,7 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)
109
110 /* If the BIOS owns the HC, signal that the OS wants it, and wait */
111 if (val & XHCI_HC_BIOS_OWNED) {
112 - writel(val & XHCI_HC_OS_OWNED, base + ext_cap_offset);
113 + writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
114
115 /* Wait for 5 seconds with 10 microsecond polling interval */
116 timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED,
117 diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
118 index 8ab4ab2..d469673 100644
119 --- a/drivers/usb/serial/qcserial.c
120 +++ b/drivers/usb/serial/qcserial.c
121 @@ -43,6 +43,7 @@ static struct usb_device_id id_table[] = {
122 {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
123 {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
124 {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
125 + {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */
126 {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
127 {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
128 {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
129 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
130 index 6ca33f2..4453f12 100644
131 --- a/drivers/usb/storage/unusual_devs.h
132 +++ b/drivers/usb/storage/unusual_devs.h
133 @@ -1977,6 +1977,16 @@ UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x0100,
134 "Micro Mini 1GB",
135 US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ),
136
137 +/*
138 + * Nick Bowler <nbowler@elliptictech.com>
139 + * SCSI stack spams (otherwise harmless) error messages.
140 + */
141 +UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100,
142 + "Keil Software, Inc.",
143 + "V2M MotherBoard",
144 + US_SC_DEVICE, US_PR_DEVICE, NULL,
145 + US_FL_NOT_LOCKABLE),
146 +
147 /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */
148 UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001,
149 "DataStor",
150 diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
151 index 34ddda8..9158c07 100644
152 --- a/fs/befs/linuxvfs.c
153 +++ b/fs/befs/linuxvfs.c
154 @@ -469,17 +469,22 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
155 befs_data_stream *data = &befs_ino->i_data.ds;
156 befs_off_t len = data->size;
157
158 - befs_debug(sb, "Follow long symlink");
159 -
160 - link = kmalloc(len, GFP_NOFS);
161 - if (!link) {
162 - link = ERR_PTR(-ENOMEM);
163 - } else if (befs_read_lsymlink(sb, data, link, len) != len) {
164 - kfree(link);
165 - befs_error(sb, "Failed to read entire long symlink");
166 + if (len == 0) {
167 + befs_error(sb, "Long symlink with illegal length");
168 link = ERR_PTR(-EIO);
169 } else {
170 - link[len - 1] = '\0';
171 + befs_debug(sb, "Follow long symlink");
172 +
173 + link = kmalloc(len, GFP_NOFS);
174 + if (!link) {
175 + link = ERR_PTR(-ENOMEM);
176 + } else if (befs_read_lsymlink(sb, data, link, len) != len) {
177 + kfree(link);
178 + befs_error(sb, "Failed to read entire long symlink");
179 + link = ERR_PTR(-EIO);
180 + } else {
181 + link[len - 1] = '\0';
182 + }
183 }
184 } else {
185 link = befs_ino->i_data.symlink;
186 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
187 index 650546f..1facb39 100644
188 --- a/fs/fuse/dev.c
189 +++ b/fs/fuse/dev.c
190 @@ -899,6 +899,10 @@ static int fuse_notify_inval_entry(struct fuse_conn *fc, unsigned int size,
191 if (outarg.namelen > FUSE_NAME_MAX)
192 goto err;
193
194 + err = -EINVAL;
195 + if (size != sizeof(outarg) + outarg.namelen + 1)
196 + goto err;
197 +
198 name.name = buf;
199 name.len = outarg.namelen;
200 err = fuse_copy_one(cs, buf, outarg.namelen + 1);
201 diff --git a/fs/partitions/efi.c b/fs/partitions/efi.c
202 index 2aac776..6ab70f4 100644
203 --- a/fs/partitions/efi.c
204 +++ b/fs/partitions/efi.c
205 @@ -311,6 +311,15 @@ is_gpt_valid(struct block_device *bdev, u64 lba,
206 goto fail;
207 }
208
209 + /* Check the GUID Partition Table header size */
210 + if (le32_to_cpu((*gpt)->header_size) >
211 + bdev_logical_block_size(bdev)) {
212 + pr_debug("GUID Partition Table Header size is wrong: %u > %u\n",
213 + le32_to_cpu((*gpt)->header_size),
214 + bdev_logical_block_size(bdev));
215 + goto fail;
216 + }
217 +
218 /* Check the GUID Partition Table CRC */
219 origcrc = le32_to_cpu((*gpt)->header_crc32);
220 (*gpt)->header_crc32 = 0;
221 diff --git a/kernel/futex.c b/kernel/futex.c
222 index 09dbee2..fb98c9f 100644
223 --- a/kernel/futex.c
224 +++ b/kernel/futex.c
225 @@ -203,6 +203,8 @@ static void drop_futex_key_refs(union futex_key *key)
226 * @uaddr: virtual address of the futex
227 * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED
228 * @key: address where result is stored.
229 + * @rw: mapping needs to be read/write (values: VERIFY_READ,
230 + * VERIFY_WRITE)
231 *
232 * Returns a negative error code or 0
233 * The key words are stored in *key on success.
234 @@ -214,12 +216,12 @@ static void drop_futex_key_refs(union futex_key *key)
235 * lock_page() might sleep, the caller should not hold a spinlock.
236 */
237 static int
238 -get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
239 +get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
240 {
241 unsigned long address = (unsigned long)uaddr;
242 struct mm_struct *mm = current->mm;
243 struct page *page;
244 - int err;
245 + int err, ro = 0;
246
247 /*
248 * The futex address must be "naturally" aligned.
249 @@ -247,14 +249,31 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
250
251 again:
252 err = get_user_pages_fast(address, 1, 1, &page);
253 + /*
254 + * If write access is not required (eg. FUTEX_WAIT), try
255 + * and get read-only access.
256 + */
257 + if (err == -EFAULT && rw == VERIFY_READ) {
258 + err = get_user_pages_fast(address, 1, 0, &page);
259 + ro = 1;
260 + }
261 if (err < 0)
262 return err;
263 + else
264 + err = 0;
265
266 page = compound_head(page);
267 lock_page(page);
268 if (!page->mapping) {
269 unlock_page(page);
270 put_page(page);
271 + /*
272 + * ZERO_PAGE pages don't have a mapping. Avoid a busy loop
273 + * trying to find one. RW mapping would have COW'd (and thus
274 + * have a mapping) so this page is RO and won't ever change.
275 + */
276 + if ((page == ZERO_PAGE(address)))
277 + return -EFAULT;
278 goto again;
279 }
280
281 @@ -266,6 +285,15 @@ again:
282 * the object not the particular process.
283 */
284 if (PageAnon(page)) {
285 + /*
286 + * A RO anonymous page will never change and thus doesn't make
287 + * sense for futex operations.
288 + */
289 + if (ro) {
290 + err = -EFAULT;
291 + goto out;
292 + }
293 +
294 key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */
295 key->private.mm = mm;
296 key->private.address = address;
297 @@ -277,9 +305,10 @@ again:
298
299 get_futex_key_refs(key);
300
301 +out:
302 unlock_page(page);
303 put_page(page);
304 - return 0;
305 + return err;
306 }
307
308 static inline
309 @@ -880,7 +909,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset)
310 if (!bitset)
311 return -EINVAL;
312
313 - ret = get_futex_key(uaddr, fshared, &key);
314 + ret = get_futex_key(uaddr, fshared, &key, VERIFY_READ);
315 if (unlikely(ret != 0))
316 goto out;
317
318 @@ -926,10 +955,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2,
319 int ret, op_ret;
320
321 retry:
322 - ret = get_futex_key(uaddr1, fshared, &key1);
323 + ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ);
324 if (unlikely(ret != 0))
325 goto out;
326 - ret = get_futex_key(uaddr2, fshared, &key2);
327 + ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE);
328 if (unlikely(ret != 0))
329 goto out_put_key1;
330
331 @@ -1188,10 +1217,11 @@ retry:
332 pi_state = NULL;
333 }
334
335 - ret = get_futex_key(uaddr1, fshared, &key1);
336 + ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ);
337 if (unlikely(ret != 0))
338 goto out;
339 - ret = get_futex_key(uaddr2, fshared, &key2);
340 + ret = get_futex_key(uaddr2, fshared, &key2,
341 + requeue_pi ? VERIFY_WRITE : VERIFY_READ);
342 if (unlikely(ret != 0))
343 goto out_put_key1;
344
345 @@ -1746,7 +1776,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, int fshared,
346 */
347 retry:
348 q->key = FUTEX_KEY_INIT;
349 - ret = get_futex_key(uaddr, fshared, &q->key);
350 + ret = get_futex_key(uaddr, fshared, &q->key, VERIFY_READ);
351 if (unlikely(ret != 0))
352 return ret;
353
354 @@ -1912,7 +1942,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared,
355 q.requeue_pi_key = NULL;
356 retry:
357 q.key = FUTEX_KEY_INIT;
358 - ret = get_futex_key(uaddr, fshared, &q.key);
359 + ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_WRITE);
360 if (unlikely(ret != 0))
361 goto out;
362
363 @@ -2031,7 +2061,7 @@ retry:
364 if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current))
365 return -EPERM;
366
367 - ret = get_futex_key(uaddr, fshared, &key);
368 + ret = get_futex_key(uaddr, fshared, &key, VERIFY_WRITE);
369 if (unlikely(ret != 0))
370 goto out;
371
372 @@ -2223,7 +2253,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
373 rt_waiter.task = NULL;
374
375 key2 = FUTEX_KEY_INIT;
376 - ret = get_futex_key(uaddr2, fshared, &key2);
377 + ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE);
378 if (unlikely(ret != 0))
379 goto out;
380
381 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
382 index 680dcbb..7221e9e 100644
383 --- a/mm/vmalloc.c
384 +++ b/mm/vmalloc.c
385 @@ -671,9 +671,10 @@ static void free_unmap_vmap_area_addr(unsigned long addr)
386 #define VMAP_BBMAP_BITS_MIN (VMAP_MAX_ALLOC*2)
387 #define VMAP_MIN(x, y) ((x) < (y) ? (x) : (y)) /* can't use min() */
388 #define VMAP_MAX(x, y) ((x) > (y) ? (x) : (y)) /* can't use max() */
389 -#define VMAP_BBMAP_BITS VMAP_MIN(VMAP_BBMAP_BITS_MAX, \
390 - VMAP_MAX(VMAP_BBMAP_BITS_MIN, \
391 - VMALLOC_PAGES / NR_CPUS / 16))
392 +#define VMAP_BBMAP_BITS \
393 + VMAP_MIN(VMAP_BBMAP_BITS_MAX, \
394 + VMAP_MAX(VMAP_BBMAP_BITS_MIN, \
395 + VMALLOC_PAGES / roundup_pow_of_two(NR_CPUS) / 16))
396
397 #define VMAP_BLOCK_SIZE (VMAP_BBMAP_BITS * PAGE_SIZE)
398
399 diff --git a/net/atm/br2684.c b/net/atm/br2684.c
400 index c9230c3..be1c1d2 100644
401 --- a/net/atm/br2684.c
402 +++ b/net/atm/br2684.c
403 @@ -208,8 +208,6 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct net_device *dev,
404 if (brdev->payload == p_bridged) {
405 skb_push(skb, 2);
406 memset(skb->data, 0, 2);
407 - } else { /* p_routed */
408 - skb_pull(skb, ETH_HLEN);
409 }
410 }
411 skb_debug(skb);
412 diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
413 index e7efcef..eeb2e23 100644
414 --- a/sound/pci/ac97/ac97_patch.c
415 +++ b/sound/pci/ac97/ac97_patch.c
416 @@ -1915,6 +1915,7 @@ static unsigned int ad1981_jacks_whitelist[] = {
417 0x103c0944, /* HP nc6220 */
418 0x103c0934, /* HP nc8220 */
419 0x103c006d, /* HP nx9105 */
420 + 0x103c300d, /* HP Compaq dc5100 SFF(PT003AW) */
421 0x17340088, /* FSC Scenic-W */
422 0 /* end */
423 };
424 diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
425 index 007b4bf..e89017a 100644
426 --- a/sound/usb/caiaq/audio.c
427 +++ b/sound/usb/caiaq/audio.c
428 @@ -138,8 +138,12 @@ static void stream_stop(struct snd_usb_caiaqdev *dev)
429
430 for (i = 0; i < N_URBS; i++) {
431 usb_kill_urb(dev->data_urbs_in[i]);
432 - usb_kill_urb(dev->data_urbs_out[i]);
433 +
434 + if (test_bit(i, &dev->outurb_active_mask))
435 + usb_kill_urb(dev->data_urbs_out[i]);
436 }
437 +
438 + dev->outurb_active_mask = 0;
439 }
440
441 static int snd_usb_caiaq_substream_open(struct snd_pcm_substream *substream)
442 @@ -466,8 +470,9 @@ static void read_completed(struct urb *urb)
443 {
444 struct snd_usb_caiaq_cb_info *info = urb->context;
445 struct snd_usb_caiaqdev *dev;
446 - struct urb *out;
447 - int frame, len, send_it = 0, outframe = 0;
448 + struct urb *out = NULL;
449 + int i, frame, len, send_it = 0, outframe = 0;
450 + size_t offset = 0;
451
452 if (urb->status || !info)
453 return;
454 @@ -477,7 +482,17 @@ static void read_completed(struct urb *urb)
455 if (!dev->streaming)
456 return;
457
458 - out = dev->data_urbs_out[info->index];
459 + /* find an unused output urb that is unused */
460 + for (i = 0; i < N_URBS; i++)
461 + if (test_and_set_bit(i, &dev->outurb_active_mask) == 0) {
462 + out = dev->data_urbs_out[i];
463 + break;
464 + }
465 +
466 + if (!out) {
467 + log("Unable to find an output urb to use\n");
468 + goto requeue;
469 + }
470
471 /* read the recently received packet and send back one which has
472 * the same layout */
473 @@ -488,7 +503,8 @@ static void read_completed(struct urb *urb)
474 len = urb->iso_frame_desc[outframe].actual_length;
475 out->iso_frame_desc[outframe].length = len;
476 out->iso_frame_desc[outframe].actual_length = 0;
477 - out->iso_frame_desc[outframe].offset = BYTES_PER_FRAME * frame;
478 + out->iso_frame_desc[outframe].offset = offset;
479 + offset += len;
480
481 if (len > 0) {
482 spin_lock(&dev->spinlock);
483 @@ -504,11 +520,15 @@ static void read_completed(struct urb *urb)
484 }
485
486 if (send_it) {
487 - out->number_of_packets = FRAMES_PER_URB;
488 + out->number_of_packets = outframe;
489 out->transfer_flags = URB_ISO_ASAP;
490 usb_submit_urb(out, GFP_ATOMIC);
491 + } else {
492 + struct snd_usb_caiaq_cb_info *oinfo = out->context;
493 + clear_bit(oinfo->index, &dev->outurb_active_mask);
494 }
495
496 +requeue:
497 /* re-submit inbound urb */
498 for (frame = 0; frame < FRAMES_PER_URB; frame++) {
499 urb->iso_frame_desc[frame].offset = BYTES_PER_FRAME * frame;
500 @@ -530,6 +550,8 @@ static void write_completed(struct urb *urb)
501 dev->output_running = 1;
502 wake_up(&dev->prepare_wait_queue);
503 }
504 +
505 + clear_bit(info->index, &dev->outurb_active_mask);
506 }
507
508 static struct urb **alloc_urbs(struct snd_usb_caiaqdev *dev, int dir, int *ret)
509 @@ -680,6 +702,9 @@ int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev)
510 if (!dev->data_cb_info)
511 return -ENOMEM;
512
513 + dev->outurb_active_mask = 0;
514 + BUILD_BUG_ON(N_URBS > (sizeof(dev->outurb_active_mask) * 8));
515 +
516 for (i = 0; i < N_URBS; i++) {
517 dev->data_cb_info[i].dev = dev;
518 dev->data_cb_info[i].index = i;
519 diff --git a/sound/usb/caiaq/device.h b/sound/usb/caiaq/device.h
520 index 44e3edf..94c0c36 100644
521 --- a/sound/usb/caiaq/device.h
522 +++ b/sound/usb/caiaq/device.h
523 @@ -92,6 +92,7 @@ struct snd_usb_caiaqdev {
524 int input_panic, output_panic, warned;
525 char *audio_in_buf, *audio_out_buf;
526 unsigned int samplerates, bpp;
527 + unsigned long outurb_active_mask;
528
529 struct snd_pcm_substream *sub_playback[MAX_STREAMS];
530 struct snd_pcm_substream *sub_capture[MAX_STREAMS];
531 diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
532 index 8784649..1720d01 100644
533 --- a/tools/perf/util/config.c
534 +++ b/tools/perf/util/config.c
535 @@ -416,7 +416,6 @@ int perf_config_global(void)
536 int perf_config(config_fn_t fn, void *data)
537 {
538 int ret = 0, found = 0;
539 - char *repo_config = NULL;
540 const char *home = NULL;
541
542 /* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
543 @@ -438,12 +437,6 @@ int perf_config(config_fn_t fn, void *data)
544 free(user_config);
545 }
546
547 - repo_config = perf_pathdup("config");
548 - if (!access(repo_config, R_OK)) {
549 - ret += perf_config_from_file(fn, repo_config, data);
550 - found += 1;
551 - }
552 - free(repo_config);
553 if (found == 0)
554 return -1;
555 return ret;

  ViewVC Help
Powered by ViewVC 1.1.20