--- linux/arch/sparc64/kernel/ioctl32.c +++ linux/arch/sparc64/kernel/ioctl32.c 2001/05/22 10:08:13 @@ -2166,14 +2166,6 @@ } lv_status_bydev_req32_t; typedef struct { - uint8_t lv_name[NAME_LEN]; - kdev_t old_dev; - kdev_t new_dev; - u32 old_pe; - u32 new_pe; -} le_remap_req32_t; - -typedef struct { char pv_name[NAME_LEN]; u32 pv; } pv_status_req32_t; @@ -2211,14 +2203,6 @@ char dummy[200]; } lv32_t; -typedef struct { - u32 hash[2]; - u32 rsector_org; - kdev_t rdev_org; - u32 rsector_new; - kdev_t rdev_new; -} lv_block_exception32_t; - static void put_lv_t(lv_t *l) { if (l->lv_current_pe) vfree(l->lv_current_pe); @@ -2231,8 +2215,6 @@ int err, i; u32 ptr1, ptr2; size_t size; - lv_block_exception32_t *lbe32; - lv_block_exception_t *lbe; lv32_t *ul = (lv32_t *)A(p); lv_t *l = (lv_t *)kmalloc(sizeof(lv_t), GFP_KERNEL); if (!l) { @@ -2260,18 +2242,9 @@ } if (!err && ptr2) { size = l->lv_remap_end * sizeof(lv_block_exception_t); - l->lv_block_exception = lbe = vmalloc(size); - if (l->lv_block_exception) { - lbe32 = (lv_block_exception32_t *)A(ptr2); - memset(lbe, 0, size); - for (i = 0; i < l->lv_remap_end; i++, lbe++, lbe32++) { - err |= get_user(lbe->rsector_org, &lbe32->rsector_org); - err |= __get_user(lbe->rdev_org, &lbe32->rdev_org); - err |= __get_user(lbe->rsector_new, &lbe32->rsector_new); - err |= __get_user(lbe->rdev_new, &lbe32->rdev_new); - - } - } + l->lv_block_exception = vmalloc(size); + if (l->lv_block_exception) + err = copy_from_user(l->lv_block_exception, (void *)A(ptr2), size); } if (err || (ptr1 && !l->lv_current_pe) || (ptr2 && !l->lv_block_exception)) { if (!err)