dm ioctl: prepare for crypt key wiping

Prepare code for implementing buffer wipe flag.
No functional change in this patch.

Signed-off-by: Milan Broz <mbroz@redhat.com>
Acked-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>

authored by Milan Broz and committed by Alasdair G Kergon 6bb43b5d de8be5ac

+11 -14
+11 -14
drivers/md/dm-ioctl.c
··· 1501 1501 return r; 1502 1502 } 1503 1503 1504 - static void free_params(struct dm_ioctl *param) 1505 - { 1506 - vfree(param); 1507 - } 1508 - 1509 1504 static int copy_params(struct dm_ioctl __user *user, struct dm_ioctl **param) 1510 1505 { 1511 1506 struct dm_ioctl tmp, *dmi; ··· 1515 1520 if (!dmi) 1516 1521 return -ENOMEM; 1517 1522 1518 - if (copy_from_user(dmi, user, tmp.data_size)) { 1519 - vfree(dmi); 1520 - return -EFAULT; 1521 - } 1523 + if (copy_from_user(dmi, user, tmp.data_size)) 1524 + goto bad; 1522 1525 1523 1526 *param = dmi; 1524 1527 return 0; 1528 + 1529 + bad: 1530 + vfree(dmi); 1531 + return -EFAULT; 1525 1532 } 1526 1533 1527 1534 static int validate_params(uint cmd, struct dm_ioctl *param) ··· 1561 1564 unsigned int cmd; 1562 1565 struct dm_ioctl *uninitialized_var(param); 1563 1566 ioctl_fn fn = NULL; 1564 - size_t param_size; 1567 + size_t input_param_size; 1565 1568 1566 1569 /* only root can play with this */ 1567 1570 if (!capable(CAP_SYS_ADMIN)) ··· 1602 1605 * Copy the parameters into kernel space. 1603 1606 */ 1604 1607 r = copy_params(user, &param); 1608 + input_param_size = param->data_size; 1605 1609 1606 1610 current->flags &= ~PF_MEMALLOC; 1607 1611 ··· 1613 1615 if (r) 1614 1616 goto out; 1615 1617 1616 - param_size = param->data_size; 1617 1618 param->data_size = sizeof(*param); 1618 - r = fn(param, param_size); 1619 + r = fn(param, input_param_size); 1619 1620 1620 1621 /* 1621 1622 * Copy the results back to userland. ··· 1622 1625 if (!r && copy_to_user(user, param, param->data_size)) 1623 1626 r = -EFAULT; 1624 1627 1625 - out: 1626 - free_params(param); 1628 + out: 1629 + vfree(param); 1627 1630 return r; 1628 1631 } 1629 1632