> + * > + * drm_master at the top of the tree (i.e, with lessor NULL > + */ > +struct drm_master *drm_lease_owner(struct drm_master *master) { ^ there's a couple of misplaced braces around. start of next line please. > + while (master->lessor != NULL) > + master = master->lessor; > + return master; > +} > +EXPORT_SYMBOL(drm_lease_owner); > + > +/** > + * _drm_find_lessee - find lessee by id > + * @master: drm_master of lessor > + * @id: lessee_id > + * > + * RETURN: > + * > + * drm_master of the lessee if valid, NULL otherwise > + */ > + > +static struct drm_master* > +_drm_find_lessee(struct drm_master *master, int lessee_id) > +{ > + return idr_find(&drm_lease_owner(master)->lessee_idr, lessee_id); > +} > + > +/** > + * _drm_lease_held_master - check to see if an object is leased (or owned) by master > + * @master: the master to check the lease status of > + * @id: the id to check > + * > + * Checks if the specified master holds a lease on the object. Return > + * value: > + * > + * true 'master' holds a lease on (or owns) the object > + * false 'master' does not hold a lease. > + */ > +static int _drm_lease_held_master(struct drm_master *master, int id) { ^^ here as well. > + lockdep_assert_held(&master->dev->mode_config.idr_mutex); > + if (master->lessor) > + return idr_find(&master->leases, id) != NULL; > + return true; > +} > + > +/** > + * _drm_has_leased - check to see if an object has been leased > + * @master: the master to check the lease status of > + * @id: the id to check > + * > + * Checks if any lessee of 'master' holds a lease on 'id'. Return > + * value: > + * > + * true Some lessee holds a lease on the object. > + * false No lessee has a lease on the object. > + */ > +static bool _drm_has_leased(struct drm_master *master, int id) { ^^ here as well > +} > +EXPORT_SYMBOL(drm_lease_held); > + > +/** > + * drm_lease_filter_crtcs - restricted crtc set to leased values > + * @file_priv: requestor file > + * @crtcs: bitmask of crtcs to check > + * > + * Reconstructs a crtc mask based on the crtcs which are visible > + * through the specified file. > + */ > +uint32_t drm_lease_filter_crtcs(struct drm_file *file_priv, uint32_t crtcs_in) > +{ > + struct drm_master *master; > + struct drm_device *dev; > + struct drm_crtc *crtc; > + int count_in, count_out; > + uint32_t crtcs_out = 0; > + > + if (file_priv == NULL || file_priv->master == NULL) > + return crtcs_in; > + > + master = file_priv->master; > + dev = master->dev; > + > + count_in = count_out = 0; > + mutex_lock(&master->dev->mode_config.idr_mutex); > + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { > + if (_drm_lease_held_master(master, crtc->base.id)) { > + uint32_t mask_in = 1ul << count_in; > + if ((crtcs_in & mask_in) != 0) { > + uint32_t mask_out = 1ul << count_out; > + crtcs_out |= mask_out; There are a couple of stray tab chars in here ^ > + mutex_lock(&master->dev->mode_config.idr_mutex); > + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { > + if (_drm_lease_held_master(master, encoder->base.id)) { > + uint32_t mask_in = 1ul << count_in; > + if ((encoders_in & mask_in) != 0) { > + uint32_t mask_out = 1ul << count_out; > + encoders_out |= mask_out; And here ^ Dave. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel