[PATCH] drm, ttm Fix uninitialized warning
David Herrmann
dh.herrmann at gmail.com
Fri Sep 13 09:04:28 PDT 2013
Hi
On Fri, Sep 13, 2013 at 2:33 PM, Prarit Bhargava <prarit at redhat.com> 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 at redhat.com>
> Cc: David Airlie <airlied at linux.ie>
> Cc: rclark at redhat.com
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 at gmail.com>
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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list