habanalabs: protect access to dynamic mem 'user_mappings'
authorKoby Elbaz <kelbaz@habana.ai>
Fri, 23 Dec 2022 13:02:05 +0000 (15:02 +0200)
committerOded Gabbay <ogabbay@kernel.org>
Thu, 26 Jan 2023 09:52:11 +0000 (11:52 +0200)
commit571d1a7222851ef5075f55702074ed7713dba304
treea5b1a03dcaff79fc82addf0d54ed579824862b65
parentc7d7b9aca2423d243748361cfb72e7fbdb8b37b9
habanalabs: protect access to dynamic mem 'user_mappings'

When HL_INFO_USER_MAPPINGS IOCTL is called, we copy_to_user from
a dynamically allocated memory - 'user_mappings'.
Since freeing/allocating it happens in runtime (upon a page fault),
it not unlikely to access it even before being initially allocated
(i.e., accessing a NULL pointer).

The solution is to simply mark the spot when the err info has been
collected, and that way to know whether err info (either page fault
or RAZWI) is available to be read.

Signed-off-by: Koby Elbaz <kelbaz@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/accel/habanalabs/common/device.c
drivers/accel/habanalabs/common/habanalabs.h
drivers/accel/habanalabs/common/habanalabs_drv.c
drivers/accel/habanalabs/common/habanalabs_ioctl.c