提交 dbdcc906 编写于 作者: M Mikulas Patocka 提交者: Mike Snitzer

dm ioctl: log an error if the ioctl structure is corrupted

This will help triage bugs when userspace is passing invalid ioctl
structure to the kernel.
Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
[snitzer: log errors using DMERR instead of DMWARN]
Signed-off-by: NMike Snitzer <snitzer@kernel.org>
上级 3f728213
...@@ -891,15 +891,21 @@ static struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param) ...@@ -891,15 +891,21 @@ static struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param)
struct hash_cell *hc = NULL; struct hash_cell *hc = NULL;
if (*param->uuid) { if (*param->uuid) {
if (*param->name || param->dev) if (*param->name || param->dev) {
DMERR("Invalid ioctl structure: uuid %s, name %s, dev %llx",
param->uuid, param->name, (unsigned long long)param->dev);
return NULL; return NULL;
}
hc = __get_uuid_cell(param->uuid); hc = __get_uuid_cell(param->uuid);
if (!hc) if (!hc)
return NULL; return NULL;
} else if (*param->name) { } else if (*param->name) {
if (param->dev) if (param->dev) {
DMERR("Invalid ioctl structure: name %s, dev %llx",
param->name, (unsigned long long)param->dev);
return NULL; return NULL;
}
hc = __get_name_cell(param->name); hc = __get_name_cell(param->name);
if (!hc) if (!hc)
...@@ -1851,8 +1857,11 @@ static int copy_params(struct dm_ioctl __user *user, struct dm_ioctl *param_kern ...@@ -1851,8 +1857,11 @@ static int copy_params(struct dm_ioctl __user *user, struct dm_ioctl *param_kern
if (copy_from_user(param_kernel, user, minimum_data_size)) if (copy_from_user(param_kernel, user, minimum_data_size))
return -EFAULT; return -EFAULT;
if (param_kernel->data_size < minimum_data_size) if (param_kernel->data_size < minimum_data_size) {
DMERR("Invalid data size in the ioctl structure: %u",
param_kernel->data_size);
return -EINVAL; return -EINVAL;
}
secure_data = param_kernel->flags & DM_SECURE_DATA_FLAG; secure_data = param_kernel->flags & DM_SECURE_DATA_FLAG;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册