Mdev alias should be unique among all the mdevs, so that when such alias
is used by the mdev users to derive other objects, there is no
collision in a given system.

Signed-off-by: Parav Pandit <pa...@mellanox.com>

---
Changelog:
v0->v1:
 - Fixed inclusiong of alias for NULL check
 - Added ratelimited debug print for sha1 hash collision error
---
 drivers/vfio/mdev/mdev_core.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/vfio/mdev/mdev_core.c b/drivers/vfio/mdev/mdev_core.c
index 62d29f57fe0c..4b9899e40665 100644
--- a/drivers/vfio/mdev/mdev_core.c
+++ b/drivers/vfio/mdev/mdev_core.c
@@ -375,6 +375,13 @@ int mdev_device_create(struct kobject *kobj, struct device 
*dev,
                        ret = -EEXIST;
                        goto mdev_fail;
                }
+               if (tmp->alias && alias && strcmp(tmp->alias, alias) == 0) {
+                       mutex_unlock(&mdev_list_lock);
+                       ret = -EEXIST;
+                       dev_dbg_ratelimited(dev, "Hash collision in alias 
creation for UUID %pUl\n",
+                                           uuid);
+                       goto mdev_fail;
+               }
        }
 
        mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
-- 
2.19.2

Reply via email to