Fix hashtab implementation leaking illegal error codes to user space.
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Wed, 23 Aug 2006 09:21:33 +0000 (11:21 +0200)
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Wed, 23 Aug 2006 09:21:33 +0000 (11:21 +0200)
(Reported by Dave Airlie)

linux-core/drm_hashtab.c

index 4806113..a0b2d68 100644 (file)
@@ -106,7 +106,7 @@ int drm_ht_insert_item(drm_open_hash_t *ht, drm_hash_item_t *item)
        hlist_for_each(list, h_list) {
                entry = hlist_entry(list, drm_hash_item_t, head);
                if (entry->key == key)
-                       return -1;
+                       return -EINVAL;
                if (entry->key > key)
                        break;
                parent = list;
@@ -154,7 +154,7 @@ int drm_ht_find_item(drm_open_hash_t *ht, unsigned long key,
 
        list = drm_ht_find_key(ht, key);
        if (!list)
-               return -1;
+               return -EINVAL;
 
        *item = hlist_entry(list, drm_hash_item_t, head);
        return 0;
@@ -170,7 +170,7 @@ int drm_ht_remove_key(drm_open_hash_t *ht, unsigned long key)
                ht->fill--;
                return 0;
        }
-       return -1;
+       return -EINVAL;
 }
 
 int drm_ht_remove_item(drm_open_hash_t *ht, drm_hash_item_t *item)