CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Hans de Goede <[email protected]>
Hi Hans, I love your patch! Perhaps something to improve: [auto build test WARNING on soc/for-next] [also build test WARNING on linus/master linux/master v5.7 next-20200603] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Hans-de-Goede/virt-vbox-Fix-VBGL_IOCTL_VMMDEV_REQUEST_BIG-and-_LOG-req-numbers-to-match-upstream/20200521-062425 base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next :::::: branch date: 2 weeks ago :::::: commit date: 2 weeks ago config: i386-randconfig-m021-20200603 (attached as .config) compiler: gcc-9 (Debian 9.3.0-13) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/virt/vboxguest/vboxguest_core.c:769 vbg_acquire_session_capabilities() error: double unlocked 'gdev->event_spinlock' (orig line 745) Old smatch warnings: drivers/virt/vboxguest/vboxguest_core.c:292 vbg_balloon_inflate() warn: should '(((pages[i]) - mem_map) + (0)) << 12' be a 64 bit type? drivers/virt/vboxguest/vboxguest_core.c:331 vbg_balloon_deflate() warn: should '(((pages[i]) - mem_map) + (0)) << 12' be a 64 bit type? drivers/virt/vboxguest/vboxguest_core.c:779 vbg_acquire_session_capabilities() error: double unlocked 'gdev->event_spinlock' (orig line 769) drivers/virt/vboxguest/vboxguest_core.c:801 vbg_acquire_session_capabilities() error: double unlocked 'gdev->event_spinlock' (orig line 769) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1207 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) drivers/virt/vboxguest/vboxguest_core.c:1223 vbg_ioctl_wait_for_events() error: double unlocked 'gdev->event_spinlock' (orig line 1207) # https://github.com/0day-ci/linux/commit/039d2c0fea1fd4001836324c30db100660104fd6 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 039d2c0fea1fd4001836324c30db100660104fd6 vim +769 drivers/virt/vboxguest/vboxguest_core.c 95000c7a4dc1e5 Hans de Goede 2020-05-20 705 039d2c0fea1fd4 Hans de Goede 2020-05-20 706 /** 039d2c0fea1fd4 Hans de Goede 2020-05-20 707 * Acquire (get exclusive access) guest capabilities for a session. 039d2c0fea1fd4 Hans de Goede 2020-05-20 708 * Takes the session mutex. 039d2c0fea1fd4 Hans de Goede 2020-05-20 709 * Return: 0 or negative errno value. 039d2c0fea1fd4 Hans de Goede 2020-05-20 710 * @gdev: The Guest extension device. 039d2c0fea1fd4 Hans de Goede 2020-05-20 711 * @session: The session. 039d2c0fea1fd4 Hans de Goede 2020-05-20 712 * @flags: Flags (VBGL_IOC_AGC_FLAGS_XXX). 039d2c0fea1fd4 Hans de Goede 2020-05-20 713 * @or_mask: The capabilities to add. 039d2c0fea1fd4 Hans de Goede 2020-05-20 714 * @not_mask: The capabilities to remove. 039d2c0fea1fd4 Hans de Goede 2020-05-20 715 * @session_termination: Set if we're called by the session cleanup code. 039d2c0fea1fd4 Hans de Goede 2020-05-20 716 * This tweaks the error handling so we perform 039d2c0fea1fd4 Hans de Goede 2020-05-20 717 * proper session cleanup even if the host 039d2c0fea1fd4 Hans de Goede 2020-05-20 718 * misbehaves. 039d2c0fea1fd4 Hans de Goede 2020-05-20 719 */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 720 static int vbg_acquire_session_capabilities(struct vbg_dev *gdev, 039d2c0fea1fd4 Hans de Goede 2020-05-20 721 struct vbg_session *session, 039d2c0fea1fd4 Hans de Goede 2020-05-20 722 u32 or_mask, u32 not_mask, 039d2c0fea1fd4 Hans de Goede 2020-05-20 723 u32 flags, bool session_termination) 039d2c0fea1fd4 Hans de Goede 2020-05-20 724 { 039d2c0fea1fd4 Hans de Goede 2020-05-20 725 unsigned long irqflags; 039d2c0fea1fd4 Hans de Goede 2020-05-20 726 bool wakeup = false; 039d2c0fea1fd4 Hans de Goede 2020-05-20 727 int ret = 0; 039d2c0fea1fd4 Hans de Goede 2020-05-20 728 039d2c0fea1fd4 Hans de Goede 2020-05-20 729 mutex_lock(&gdev->session_mutex); 039d2c0fea1fd4 Hans de Goede 2020-05-20 730 039d2c0fea1fd4 Hans de Goede 2020-05-20 731 if (gdev->set_guest_caps_tracker.mask & or_mask) { 039d2c0fea1fd4 Hans de Goede 2020-05-20 732 vbg_err("%s error: cannot acquire caps which are currently set\n", 039d2c0fea1fd4 Hans de Goede 2020-05-20 733 __func__); 039d2c0fea1fd4 Hans de Goede 2020-05-20 734 ret = -EINVAL; 039d2c0fea1fd4 Hans de Goede 2020-05-20 735 goto out; 039d2c0fea1fd4 Hans de Goede 2020-05-20 736 } 039d2c0fea1fd4 Hans de Goede 2020-05-20 737 039d2c0fea1fd4 Hans de Goede 2020-05-20 738 /* 039d2c0fea1fd4 Hans de Goede 2020-05-20 739 * Mark any caps in the or_mask as now being in acquire-mode. Note 039d2c0fea1fd4 Hans de Goede 2020-05-20 740 * once caps are in acquire_mode they always stay in this mode. 039d2c0fea1fd4 Hans de Goede 2020-05-20 741 * This impacts event handling, so we take the event-lock. 039d2c0fea1fd4 Hans de Goede 2020-05-20 742 */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 743 spin_lock_irqsave(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 744 gdev->acquire_mode_guest_caps |= or_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 @745 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 746 039d2c0fea1fd4 Hans de Goede 2020-05-20 747 /* If we only have to switch the caps to acquire mode, we're done. */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 748 if (flags & VBGL_IOC_AGC_FLAGS_CONFIG_ACQUIRE_MODE) 039d2c0fea1fd4 Hans de Goede 2020-05-20 749 goto out; 039d2c0fea1fd4 Hans de Goede 2020-05-20 750 039d2c0fea1fd4 Hans de Goede 2020-05-20 751 not_mask &= ~or_mask; /* or_mask takes priority over not_mask */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 752 not_mask &= session->acquired_guest_caps; 039d2c0fea1fd4 Hans de Goede 2020-05-20 753 or_mask &= ~session->acquired_guest_caps; 039d2c0fea1fd4 Hans de Goede 2020-05-20 754 039d2c0fea1fd4 Hans de Goede 2020-05-20 755 if (or_mask == 0 && not_mask == 0) 039d2c0fea1fd4 Hans de Goede 2020-05-20 756 goto out; 039d2c0fea1fd4 Hans de Goede 2020-05-20 757 039d2c0fea1fd4 Hans de Goede 2020-05-20 758 if (gdev->acquired_guest_caps & or_mask) { 039d2c0fea1fd4 Hans de Goede 2020-05-20 759 ret = -EBUSY; 039d2c0fea1fd4 Hans de Goede 2020-05-20 760 goto out; 039d2c0fea1fd4 Hans de Goede 2020-05-20 761 } 039d2c0fea1fd4 Hans de Goede 2020-05-20 762 039d2c0fea1fd4 Hans de Goede 2020-05-20 763 gdev->acquired_guest_caps |= or_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 764 gdev->acquired_guest_caps &= ~not_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 765 /* session->acquired_guest_caps impacts event handling, take the lock */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 766 spin_lock_irqsave(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 767 session->acquired_guest_caps |= or_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 768 session->acquired_guest_caps &= ~not_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 @769 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 770 039d2c0fea1fd4 Hans de Goede 2020-05-20 771 ret = vbg_set_host_capabilities(gdev, session, session_termination); 039d2c0fea1fd4 Hans de Goede 2020-05-20 772 /* Roll back on failure, unless it's session termination time. */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 773 if (ret < 0 && !session_termination) { 039d2c0fea1fd4 Hans de Goede 2020-05-20 774 gdev->acquired_guest_caps &= ~or_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 775 gdev->acquired_guest_caps |= not_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 776 spin_lock_irqsave(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 777 session->acquired_guest_caps &= ~or_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 778 session->acquired_guest_caps |= not_mask; 039d2c0fea1fd4 Hans de Goede 2020-05-20 779 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 780 } 039d2c0fea1fd4 Hans de Goede 2020-05-20 781 039d2c0fea1fd4 Hans de Goede 2020-05-20 782 /* 039d2c0fea1fd4 Hans de Goede 2020-05-20 783 * If we added a capability, check if that means some other thread in 039d2c0fea1fd4 Hans de Goede 2020-05-20 784 * our session should be unblocked because there are events pending 039d2c0fea1fd4 Hans de Goede 2020-05-20 785 * (the result of vbg_get_allowed_event_mask_for_session() may change). 039d2c0fea1fd4 Hans de Goede 2020-05-20 786 * 039d2c0fea1fd4 Hans de Goede 2020-05-20 787 * HACK ALERT! When the seamless support capability is added we generate 039d2c0fea1fd4 Hans de Goede 2020-05-20 788 * a seamless change event so that the ring-3 client can sync with 039d2c0fea1fd4 Hans de Goede 2020-05-20 789 * the seamless state. 039d2c0fea1fd4 Hans de Goede 2020-05-20 790 */ 039d2c0fea1fd4 Hans de Goede 2020-05-20 791 if (ret == 0 && or_mask != 0) { 039d2c0fea1fd4 Hans de Goede 2020-05-20 792 spin_lock_irqsave(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 793 039d2c0fea1fd4 Hans de Goede 2020-05-20 794 if (or_mask & VMMDEV_GUEST_SUPPORTS_SEAMLESS) 039d2c0fea1fd4 Hans de Goede 2020-05-20 795 gdev->pending_events |= 039d2c0fea1fd4 Hans de Goede 2020-05-20 796 VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; 039d2c0fea1fd4 Hans de Goede 2020-05-20 797 039d2c0fea1fd4 Hans de Goede 2020-05-20 798 if (gdev->pending_events) 039d2c0fea1fd4 Hans de Goede 2020-05-20 799 wakeup = true; 039d2c0fea1fd4 Hans de Goede 2020-05-20 800 039d2c0fea1fd4 Hans de Goede 2020-05-20 801 spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); 039d2c0fea1fd4 Hans de Goede 2020-05-20 802 039d2c0fea1fd4 Hans de Goede 2020-05-20 803 if (wakeup) 039d2c0fea1fd4 Hans de Goede 2020-05-20 804 wake_up(&gdev->event_wq); 039d2c0fea1fd4 Hans de Goede 2020-05-20 805 } 039d2c0fea1fd4 Hans de Goede 2020-05-20 806 039d2c0fea1fd4 Hans de Goede 2020-05-20 807 out: 039d2c0fea1fd4 Hans de Goede 2020-05-20 808 mutex_unlock(&gdev->session_mutex); 039d2c0fea1fd4 Hans de Goede 2020-05-20 809 039d2c0fea1fd4 Hans de Goede 2020-05-20 810 return ret; 039d2c0fea1fd4 Hans de Goede 2020-05-20 811 } 039d2c0fea1fd4 Hans de Goede 2020-05-20 812 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
