Merge tag 'for-linus-5.9-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubca...
[linux-2.6-microblaze.git] / drivers / nvdimm / bus.c
index 09087c3..9552656 100644 (file)
@@ -1037,9 +1037,25 @@ static int __nd_ioctl(struct nvdimm_bus *nvdimm_bus, struct nvdimm *nvdimm,
                dimm_name = "bus";
        }
 
+       /* Validate command family support against bus declared support */
        if (cmd == ND_CMD_CALL) {
+               unsigned long *mask;
+
                if (copy_from_user(&pkg, p, sizeof(pkg)))
                        return -EFAULT;
+
+               if (nvdimm) {
+                       if (pkg.nd_family > NVDIMM_FAMILY_MAX)
+                               return -EINVAL;
+                       mask = &nd_desc->dimm_family_mask;
+               } else {
+                       if (pkg.nd_family > NVDIMM_BUS_FAMILY_MAX)
+                               return -EINVAL;
+                       mask = &nd_desc->bus_family_mask;
+               }
+
+               if (!test_bit(pkg.nd_family, mask))
+                       return -EINVAL;
        }
 
        if (!desc ||