Changeset View
Changeset View
Standalone View
Standalone View
stable/12/sys/fs/nandfs/nandfs_dat.c
Show First 20 Lines • Show All 292 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
nandfs_get_dat_bdescs_ioctl(struct nandfs_device *nffsdev, | nandfs_get_dat_bdescs_ioctl(struct nandfs_device *nffsdev, | ||||
struct nandfs_argv *nargv) | struct nandfs_argv *nargv) | ||||
{ | { | ||||
struct nandfs_bdesc *bd; | struct nandfs_bdesc *bd; | ||||
size_t size; | size_t size; | ||||
int error; | int error; | ||||
if (nargv->nv_nmembs >= SIZE_MAX / sizeof(struct nandfs_bdesc)) | |||||
return (EINVAL); | |||||
size = nargv->nv_nmembs * sizeof(struct nandfs_bdesc); | size = nargv->nv_nmembs * sizeof(struct nandfs_bdesc); | ||||
bd = malloc(size, M_NANDFSTEMP, M_WAITOK); | bd = malloc(size, M_NANDFSTEMP, M_WAITOK); | ||||
error = copyin((void *)(uintptr_t)nargv->nv_base, bd, size); | error = copyin((void *)(uintptr_t)nargv->nv_base, bd, size); | ||||
if (error) { | if (error) { | ||||
free(bd, M_NANDFSTEMP); | free(bd, M_NANDFSTEMP); | ||||
return (error); | return (error); | ||||
} | } | ||||
Show All 38 Lines |