if (likely(list_empty(&ctx->run_list))) { aio_run_iocb(req); } else { list_add_tail(&req->ki_run_list, &ctx->run_list); 
aio_run_iocb(req); unlock_kiocb(req); if (!list_empty(&ctx->run_list)) { 
int fastcall io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,			 struct iocb *iocb){	struct kiocb *req;	struct file *file;	ssize_t ret;	/* enforce forwards compatibility on users */	if (unlikely(iocb->aio_reserved1 || iocb->aio_reserved2 ||		     iocb->aio_reserved3)) {		pr_debug("EINVAL: io_submit: reserve field set\n");		return -EINVAL;	}	/* prevent overflows */	if (unlikely(	    (iocb->aio_buf != (unsigned long)iocb->aio_buf) ||	    (iocb->aio_nbytes != (size_t)iocb->aio_nbytes) ||	    ((ssize_t)iocb->aio_nbytes < 0)	   )) {		pr_debug("EINVAL: io_submit: overflow check\n");		return -EINVAL;	}	file = fget(iocb->aio_fildes);	if (unlikely(!file))		return -EBADF;	req = aio_get_req(ctx);		/* returns with 2 references to req */	if (unlikely(!req)) {		fput(file);		return -EAGAIN;	}	req->ki_filp = file;	ret = put_user(req->ki_key, &user_iocb->aio_key);	if (unlikely(ret)) {		dprintk("EFAULT: aio_key\n");		goto out_put_req;	}	req->ki_obj.user = user_iocb;	req->ki_user_data = iocb->aio_data;	req->ki_pos = iocb->aio_offset;	req->ki_buf = (char __user *)(unsigned long)iocb->aio_buf;	req->ki_left = req->ki_nbytes = iocb->aio_nbytes;	req->ki_opcode = iocb->aio_lio_opcode;	init_waitqueue_func_entry(&req->ki_wait, aio_wake_function);	INIT_LIST_HEAD(&req->ki_wait.task_list);	req->ki_retried = 0;	ret = aio_setup_iocb(req);	if (ret)		goto out_put_req;	spin_lock_irq(&ctx->ctx_lock);	if (likely(list_empty(&ctx->run_list))) {		aio_run_iocb(req);	} else {		list_add_tail(&req->ki_run_list, &ctx->run_list);		/* drain the run list */		while (__aio_run_iocbs(ctx))			;	}	spin_unlock_irq(&ctx->ctx_lock);	aio_put_req(req);	/* drop extra ref to req */	return 0;out_put_req:	aio_put_req(req);	/* drop extra ref to req */	aio_put_req(req);	/* drop i/o ref to req */	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ac0b1bc1edbe81c0cb36cad7e7f5b91f4d9e12ed/aio.c/buggy/fs/aio.c