[PATCH libdrm] amdgpu: add valid function for handle table

Junwei Zhang Jerry.Zhang at amd.com
Fri Aug 3 08:37:26 UTC 2018


When insert or lookup a handle in table,
it needs to check if the handle is vaild or not.

Sometimes it may find a non-existing bo in table

Signed-off-by: Junwei Zhang <Jerry.Zhang at amd.com>
---
 amdgpu/handle_table.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/amdgpu/handle_table.c b/amdgpu/handle_table.c
index 9acc44d..d089472 100644
--- a/amdgpu/handle_table.c
+++ b/amdgpu/handle_table.c
@@ -26,6 +26,12 @@
 #include <errno.h>
 #include "handle_table.h"
 #include "util_math.h"
+#include <stdbool.h>
+
+drm_private static bool handle_table_valid(struct handle_table *table, uint32_t key)
+{
+	return key < table->max_key;
+}
 
 drm_private int handle_table_insert(struct handle_table *table, uint32_t key,
 				    void *value)
@@ -50,10 +56,14 @@ drm_private int handle_table_insert(struct handle_table *table, uint32_t key,
 
 drm_private void handle_table_remove(struct handle_table *table, uint32_t key)
 {
-	table->values[key] = NULL;
+	if (handle_table_valid(table, key))
+		table->values[key] = NULL;
 }
 
 drm_private void *handle_table_lockup(struct handle_table *table, uint32_t key)
 {
-	return table->values[key];
+	if (handle_table_valid(table, key))
+		return table->values[key];
+	else
+		return NULL;
 }
-- 
1.9.1



More information about the amd-gfx mailing list