Failure of userland copy should return EFAULT
Many key internal functions pass system return codes that are safe to return to userland. In the case of ddi_copyin(9F), an error passes -1 and the documentation states very clearly that drivers should pass EFAULT to userland when this happens. http://illumos.org/man/9F/ddi_copyin This does not happen in the ZFS source code. I believe it should be changed to pass EFAULT. I caught this when writing man pages for the libzfs_core API. Signed-off-by: Richard Yao <ryao@gentoo.org> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #3575
This commit is contained in:
parent
b39c22b73c
commit
0de7c552b6
|
@ -1334,7 +1334,7 @@ get_nvlist(uint64_t nvl, uint64_t size, int iflag, nvlist_t **nvp)
|
||||||
if ((error = ddi_copyin((void *)(uintptr_t)nvl, packed, size,
|
if ((error = ddi_copyin((void *)(uintptr_t)nvl, packed, size,
|
||||||
iflag)) != 0) {
|
iflag)) != 0) {
|
||||||
vmem_free(packed, size);
|
vmem_free(packed, size);
|
||||||
return (error);
|
return (SET_ERROR(EFAULT));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((error = nvlist_unpack(packed, size, &list, 0)) != 0) {
|
if ((error = nvlist_unpack(packed, size, &list, 0)) != 0) {
|
||||||
|
|
Loading…
Reference in New Issue