diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index a2459e7b1..645c3bafc 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -76,13 +76,10 @@ ResultVal<Handle> HandleTable::Create(SharedPtr<Object> obj) {
     // CTR-OS doesn't use generation 0, so skip straight to 1.
     if (next_generation >= (1 << 15)) next_generation = 1;
 
-    Handle handle = generation | (slot << 15);
-    if (obj->handle == INVALID_HANDLE)
-        obj->handle = handle;
-
     generations[slot] = generation;
     objects[slot] = std::move(obj);
 
+    Handle handle = generation | (slot << 15);
     return MakeResult<Handle>(handle);
 }
 
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 5567780fe..bf5b47a61 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -58,14 +58,9 @@ enum {
     DEFAULT_STACK_SIZE  = 0x4000,
 };
 
-class HandleTable;
-
 class Object : NonCopyable {
-    friend class HandleTable;
-    u32 handle = INVALID_HANDLE;
 public:
     virtual ~Object() {}
-    Handle GetHandle() const { return handle; }
 
     /// Returns a unique identifier for the object. For debugging purposes only.
     unsigned int GetObjectId() const { return object_id; }