aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-05 11:50:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-05 11:50:26 -0400
commit45d9a2220f6004b47c362cc7fc7cf9a73cb6353a (patch)
tree4e2217464c5cd71674a6ffff1f3dddaeb52556b7 /virt/kvm
parent2386a3b0fbb0c2dcf29694c7df9a72cb268458f0 (diff)
parent02afc27faec94c9e068517a22acf55400976c698 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile 1 from Al Viro: "Unfortunately, this merge window it'll have a be a lot of small piles - my fault, actually, for not keeping #for-next in anything that would resemble a sane shape ;-/ This pile: assorted fixes (the first 3 are -stable fodder, IMO) and cleanups + %pd/%pD formats (dentry/file pathname, up to 4 last components) + several long-standing patches from various folks. There definitely will be a lot more (starting with Miklos' check_submount_and_drop() series)" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits) direct-io: Handle O_(D)SYNC AIO direct-io: Implement generic deferred AIO completions add formats for dentry/file pathnames kvm eventfd: switch to fdget powerpc kvm: use fdget switch fchmod() to fdget switch epoll_ctl() to fdget switch copy_module_from_fd() to fdget git simplify nilfs check for busy subtree ibmasmfs: don't bother passing superblock when not needed don't pass superblock to hypfs_{mkdir,create*} don't pass superblock to hypfs_diag_create_files don't pass superblock to hypfs_vm_create_files() oprofile: get rid of pointless forward declarations of struct super_block oprofilefs_create_...() do not need superblock argument oprofilefs_mkdir() doesn't need superblock argument don't bother with passing superblock to oprofile_create_stats_files() oprofile: don't bother with passing superblock to ->create_files() don't bother passing sb to oprofile_create_files() coh901318: don't open-code simple_read_from_buffer() ...
Diffstat (limited to 'virt/kvm')
-rw-r--r--virt/kvm/eventfd.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
index 1550637d1b10..abe4d6043b36 100644
--- a/virt/kvm/eventfd.c
+++ b/virt/kvm/eventfd.c
@@ -291,7 +291,7 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
291{ 291{
292 struct kvm_irq_routing_table *irq_rt; 292 struct kvm_irq_routing_table *irq_rt;
293 struct _irqfd *irqfd, *tmp; 293 struct _irqfd *irqfd, *tmp;
294 struct file *file = NULL; 294 struct fd f;
295 struct eventfd_ctx *eventfd = NULL, *resamplefd = NULL; 295 struct eventfd_ctx *eventfd = NULL, *resamplefd = NULL;
296 int ret; 296 int ret;
297 unsigned int events; 297 unsigned int events;
@@ -306,13 +306,13 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
306 INIT_WORK(&irqfd->inject, irqfd_inject); 306 INIT_WORK(&irqfd->inject, irqfd_inject);
307 INIT_WORK(&irqfd->shutdown, irqfd_shutdown); 307 INIT_WORK(&irqfd->shutdown, irqfd_shutdown);
308 308
309 file = eventfd_fget(args->fd); 309 f = fdget(args->fd);
310 if (IS_ERR(file)) { 310 if (!f.file) {
311 ret = PTR_ERR(file); 311 ret = -EBADF;
312 goto fail; 312 goto out;
313 } 313 }
314 314
315 eventfd = eventfd_ctx_fileget(file); 315 eventfd = eventfd_ctx_fileget(f.file);
316 if (IS_ERR(eventfd)) { 316 if (IS_ERR(eventfd)) {
317 ret = PTR_ERR(eventfd); 317 ret = PTR_ERR(eventfd);
318 goto fail; 318 goto fail;
@@ -391,7 +391,7 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
391 lockdep_is_held(&kvm->irqfds.lock)); 391 lockdep_is_held(&kvm->irqfds.lock));
392 irqfd_update(kvm, irqfd, irq_rt); 392 irqfd_update(kvm, irqfd, irq_rt);
393 393
394 events = file->f_op->poll(file, &irqfd->pt); 394 events = f.file->f_op->poll(f.file, &irqfd->pt);
395 395
396 list_add_tail(&irqfd->list, &kvm->irqfds.items); 396 list_add_tail(&irqfd->list, &kvm->irqfds.items);
397 397
@@ -408,7 +408,7 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
408 * do not drop the file until the irqfd is fully initialized, otherwise 408 * do not drop the file until the irqfd is fully initialized, otherwise
409 * we might race against the POLLHUP 409 * we might race against the POLLHUP
410 */ 410 */
411 fput(file); 411 fdput(f);
412 412
413 return 0; 413 return 0;
414 414
@@ -422,9 +422,9 @@ fail:
422 if (eventfd && !IS_ERR(eventfd)) 422 if (eventfd && !IS_ERR(eventfd))
423 eventfd_ctx_put(eventfd); 423 eventfd_ctx_put(eventfd);
424 424
425 if (!IS_ERR(file)) 425 fdput(f);
426 fput(file);
427 426
427out:
428 kfree(irqfd); 428 kfree(irqfd);
429 return ret; 429 return ret;
430} 430}