Hi On Fri, Sep 13, 2013 at 2:33 PM, Prarit Bhargava <prarit@xxxxxxxxxx> wrote: > Fix uninitialized warning. > > drivers/gpu/drm/ttm/ttm_object.c: In function ‘ttm_base_object_lookup’: > drivers/gpu/drm/ttm/ttm_object.c:213:10: error: ‘base’ may be used uninitialized in this function [-Werror=maybe-uninitialized] > kref_put(&base->refcount, ttm_release_base); > ^ > drivers/gpu/drm/ttm/ttm_object.c:221:26: note: ‘base’ was declared here > struct ttm_base_object *base; > > Signed-off-by: Prarit Bhargava <prarit@xxxxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxx> > Cc: rclark@xxxxxxxxxx Did some research on that, another fix is: diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/ttm/ttm_object.c index 58a5f32..6b7f7b7 100644 --- a/drivers/gpu/drm/ttm/ttm_object.c +++ b/drivers/gpu/drm/ttm/ttm_object.c @@ -228,7 +228,10 @@ struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile, if (likely(ret == 0)) { base = drm_hash_entry(hash, struct ttm_base_object, hash); ret = kref_get_unless_zero(&base->refcount) ? 0 : -EINVAL; + } else { + ret = -EINVAL; } + rcu_read_unlock(); if (unlikely(ret != 0)) Looks totally stupid but also silences the warning. In fact, the warning is triggered by rcu_read_unlock(); and only if PROVE_LOCKING and DEBUG_LOCK_ALLOC are enabled. And it's related to the IP-size of the rcu_read_unlock() path. I'd actually prefer "buf = NULL;" and an extended bail-out condition: if (unlikely(ret != 0 || !buf)) but it's not my decision, so: Reviewed-by: David Herrmann <dh.herrmann@xxxxxxxxx> Cheers David > --- > drivers/gpu/drm/ttm/ttm_object.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/ttm/ttm_object.c > index 58a5f32..a868176 100644 > --- a/drivers/gpu/drm/ttm/ttm_object.c > +++ b/drivers/gpu/drm/ttm/ttm_object.c > @@ -218,7 +218,7 @@ struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile, > uint32_t key) > { > struct ttm_object_device *tdev = tfile->tdev; > - struct ttm_base_object *base; > + struct ttm_base_object *uninitialized_var(base); > struct drm_hash_item *hash; > int ret; > > -- > 1.7.9.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel