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]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to