• Home
  • Raw
  • Download

Lines Matching refs:as

276 	struct async *as;  in alloc_async()  local
278 as = kzalloc(sizeof(struct async), GFP_KERNEL); in alloc_async()
279 if (!as) in alloc_async()
281 as->urb = usb_alloc_urb(numisoframes, GFP_KERNEL); in alloc_async()
282 if (!as->urb) { in alloc_async()
283 kfree(as); in alloc_async()
286 return as; in alloc_async()
289 static void free_async(struct async *as) in free_async() argument
293 put_pid(as->pid); in free_async()
294 if (as->cred) in free_async()
295 put_cred(as->cred); in free_async()
296 for (i = 0; i < as->urb->num_sgs; i++) { in free_async()
297 if (sg_page(&as->urb->sg[i])) in free_async()
298 kfree(sg_virt(&as->urb->sg[i])); in free_async()
300 kfree(as->urb->sg); in free_async()
301 kfree(as->urb->transfer_buffer); in free_async()
302 kfree(as->urb->setup_packet); in free_async()
303 usb_free_urb(as->urb); in free_async()
304 usbfs_decrease_memory_usage(as->mem_usage); in free_async()
305 kfree(as); in free_async()
308 static void async_newpending(struct async *as) in async_newpending() argument
310 struct dev_state *ps = as->ps; in async_newpending()
314 list_add_tail(&as->asynclist, &ps->async_pending); in async_newpending()
318 static void async_removepending(struct async *as) in async_removepending() argument
320 struct dev_state *ps = as->ps; in async_removepending()
324 list_del_init(&as->asynclist); in async_removepending()
331 struct async *as = NULL; in async_getcompleted() local
335 as = list_entry(ps->async_completed.next, struct async, in async_getcompleted()
337 list_del_init(&as->asynclist); in async_getcompleted()
340 return as; in async_getcompleted()
346 struct async *as; in async_getpending() local
348 list_for_each_entry(as, &ps->async_pending, asynclist) in async_getpending()
349 if (as->userurb == userurb) { in async_getpending()
350 list_del_init(&as->asynclist); in async_getpending()
351 return as; in async_getpending()
456 struct async *as; in cancel_bulk_urbs() local
463 list_for_each_entry(as, &ps->async_pending, asynclist) { in cancel_bulk_urbs()
464 if (as->bulk_addr == bulk_addr) { in cancel_bulk_urbs()
465 if (as->bulk_status != AS_CONTINUATION) in cancel_bulk_urbs()
467 as->bulk_status = AS_UNLINK; in cancel_bulk_urbs()
468 as->bulk_addr = 0; in cancel_bulk_urbs()
475 list_for_each_entry(as, &ps->async_pending, asynclist) { in cancel_bulk_urbs()
476 if (as->bulk_status == AS_UNLINK) { in cancel_bulk_urbs()
477 as->bulk_status = 0; /* Only once */ in cancel_bulk_urbs()
478 urb = as->urb; in cancel_bulk_urbs()
491 struct async *as = urb->context; in async_completed() local
492 struct dev_state *ps = as->ps; in async_completed()
500 list_move_tail(&as->asynclist, &ps->async_completed); in async_completed()
501 as->status = urb->status; in async_completed()
502 signr = as->signr; in async_completed()
504 sinfo.si_signo = as->signr; in async_completed()
505 sinfo.si_errno = as->status; in async_completed()
507 sinfo.si_addr = as->userurb; in async_completed()
508 pid = get_pid(as->pid); in async_completed()
509 cred = get_cred(as->cred); in async_completed()
510 secid = as->secid; in async_completed()
513 snoop_urb(urb->dev, as->userurb, urb->pipe, urb->actual_length, in async_completed()
514 as->status, COMPLETE, NULL, 0); in async_completed()
518 if (as->status < 0 && as->bulk_addr && as->status != -ECONNRESET && in async_completed()
519 as->status != -ENOENT) in async_completed()
520 cancel_bulk_urbs(ps, as->bulk_addr); in async_completed()
535 struct async *as; in destroy_async() local
540 as = list_entry(list->next, struct async, asynclist); in destroy_async()
541 list_del_init(&as->asynclist); in destroy_async()
542 urb = as->urb; in destroy_async()
842 struct async *as; in usbdev_release() local
861 as = async_getcompleted(ps); in usbdev_release()
862 while (as) { in usbdev_release()
863 free_async(as); in usbdev_release()
864 as = async_getcompleted(ps); in usbdev_release()
1175 struct async *as = NULL; in proc_do_submiturb() local
1321 as = alloc_async(uurb->number_of_packets); in proc_do_submiturb()
1322 if (!as) { in proc_do_submiturb()
1332 as->mem_usage = u; in proc_do_submiturb()
1335 as->urb->sg = kmalloc(num_sgs * sizeof(struct scatterlist), in proc_do_submiturb()
1337 if (!as->urb->sg) { in proc_do_submiturb()
1341 as->urb->num_sgs = num_sgs; in proc_do_submiturb()
1342 sg_init_table(as->urb->sg, as->urb->num_sgs); in proc_do_submiturb()
1345 for (i = 0; i < as->urb->num_sgs; i++) { in proc_do_submiturb()
1352 sg_set_buf(&as->urb->sg[i], buf, u); in proc_do_submiturb()
1364 as->urb->transfer_buffer = kmalloc(uurb->buffer_length, in proc_do_submiturb()
1366 if (!as->urb->transfer_buffer) { in proc_do_submiturb()
1372 if (copy_from_user(as->urb->transfer_buffer, in proc_do_submiturb()
1385 memset(as->urb->transfer_buffer, 0, in proc_do_submiturb()
1389 as->urb->dev = ps->dev; in proc_do_submiturb()
1390 as->urb->pipe = (uurb->type << 30) | in proc_do_submiturb()
1409 as->urb->transfer_flags = u; in proc_do_submiturb()
1411 as->urb->transfer_buffer_length = uurb->buffer_length; in proc_do_submiturb()
1412 as->urb->setup_packet = (unsigned char *)dr; in proc_do_submiturb()
1414 as->urb->start_frame = uurb->start_frame; in proc_do_submiturb()
1415 as->urb->number_of_packets = uurb->number_of_packets; in proc_do_submiturb()
1418 as->urb->interval = 1 << min(15, ep->desc.bInterval - 1); in proc_do_submiturb()
1420 as->urb->interval = ep->desc.bInterval; in proc_do_submiturb()
1421 as->urb->context = as; in proc_do_submiturb()
1422 as->urb->complete = async_completed; in proc_do_submiturb()
1424 as->urb->iso_frame_desc[u].offset = totlen; in proc_do_submiturb()
1425 as->urb->iso_frame_desc[u].length = isopkt[u].length; in proc_do_submiturb()
1430 as->ps = ps; in proc_do_submiturb()
1431 as->userurb = arg; in proc_do_submiturb()
1433 as->userbuffer = uurb->buffer; in proc_do_submiturb()
1435 as->userbuffer = NULL; in proc_do_submiturb()
1436 as->signr = uurb->signr; in proc_do_submiturb()
1437 as->ifnum = ifnum; in proc_do_submiturb()
1438 as->pid = get_pid(task_pid(current)); in proc_do_submiturb()
1439 as->cred = get_current_cred(); in proc_do_submiturb()
1440 security_task_getsecid(current, &as->secid); in proc_do_submiturb()
1441 snoop_urb(ps->dev, as->userurb, as->urb->pipe, in proc_do_submiturb()
1442 as->urb->transfer_buffer_length, 0, SUBMIT, in proc_do_submiturb()
1445 snoop_urb_data(as->urb, as->urb->transfer_buffer_length); in proc_do_submiturb()
1447 async_newpending(as); in proc_do_submiturb()
1456 as->bulk_addr = usb_endpoint_num(&ep->desc) | in proc_do_submiturb()
1464 as->bulk_status = AS_CONTINUATION; in proc_do_submiturb()
1466 ps->disabled_bulk_eps &= ~(1 << as->bulk_addr); in proc_do_submiturb()
1471 if (ps->disabled_bulk_eps & (1 << as->bulk_addr)) in proc_do_submiturb()
1474 ret = usb_submit_urb(as->urb, GFP_ATOMIC); in proc_do_submiturb()
1477 ret = usb_submit_urb(as->urb, GFP_KERNEL); in proc_do_submiturb()
1483 snoop_urb(ps->dev, as->userurb, as->urb->pipe, in proc_do_submiturb()
1485 async_removepending(as); in proc_do_submiturb()
1493 if (as) in proc_do_submiturb()
1494 free_async(as); in proc_do_submiturb()
1513 struct async *as; in proc_unlinkurb() local
1517 as = async_getpending(ps, arg); in proc_unlinkurb()
1518 if (!as) { in proc_unlinkurb()
1523 urb = as->urb; in proc_unlinkurb()
1533 static int processcompl(struct async *as, void __user * __user *arg) in processcompl() argument
1535 struct urb *urb = as->urb; in processcompl()
1536 struct usbdevfs_urb __user *userurb = as->userurb; in processcompl()
1537 void __user *addr = as->userurb; in processcompl()
1540 if (as->userbuffer && urb->actual_length) { in processcompl()
1541 if (copy_urb_data_to_user(as->userbuffer, urb)) in processcompl()
1544 if (put_user(as->status, &userurb->status)) in processcompl()
1573 struct async *as = NULL; in reap_as() local
1579 as = async_getcompleted(ps); in reap_as()
1580 if (as) in reap_as()
1590 return as; in reap_as()
1595 struct async *as = reap_as(ps); in proc_reapurb() local
1596 if (as) { in proc_reapurb()
1597 int retval = processcompl(as, (void __user * __user *)arg); in proc_reapurb()
1598 free_async(as); in proc_reapurb()
1609 struct async *as; in proc_reapurbnonblock() local
1611 as = async_getcompleted(ps); in proc_reapurbnonblock()
1613 if (as) { in proc_reapurbnonblock()
1614 retval = processcompl(as, (void __user * __user *)arg); in proc_reapurbnonblock()
1615 free_async(as); in proc_reapurbnonblock()
1701 static int processcompl_compat(struct async *as, void __user * __user *arg) in processcompl_compat() argument
1703 struct urb *urb = as->urb; in processcompl_compat()
1704 struct usbdevfs_urb32 __user *userurb = as->userurb; in processcompl_compat()
1705 void __user *addr = as->userurb; in processcompl_compat()
1708 if (as->userbuffer && urb->actual_length) { in processcompl_compat()
1709 if (copy_urb_data_to_user(as->userbuffer, urb)) in processcompl_compat()
1712 if (put_user(as->status, &userurb->status)) in processcompl_compat()
1737 struct async *as = reap_as(ps); in proc_reapurb_compat() local
1738 if (as) { in proc_reapurb_compat()
1739 int retval = processcompl_compat(as, (void __user * __user *)arg); in proc_reapurb_compat()
1740 free_async(as); in proc_reapurb_compat()
1751 struct async *as; in proc_reapurbnonblock_compat() local
1754 as = async_getcompleted(ps); in proc_reapurbnonblock_compat()
1755 if (as) { in proc_reapurbnonblock_compat()
1756 retval = processcompl_compat(as, (void __user * __user *)arg); in proc_reapurbnonblock_compat()
1757 free_async(as); in proc_reapurbnonblock_compat()