mirror of https://gitee.com/openkylin/linux.git
IB/mlx5: Fix kernel to user leak prevention logic
The logic was broken as it failed to update the response length for
architectures with PAGE_SIZE larger than 4kB. As a result further
extension of the ucontext response struct would fail.
Fixes: d69e3bcf79
('IB/mlx5: Mmap the HCA's core clock register to user-space')
Signed-off-by: Eli Cohen <eli@mellanox.com>
Reviewed-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
525dfa2cdc
commit
de8d6e02ef
|
@ -1148,13 +1148,13 @@ static struct ib_ucontext *mlx5_ib_alloc_ucontext(struct ib_device *ibdev,
|
||||||
* pretend we don't support reading the HCA's core clock. This is also
|
* pretend we don't support reading the HCA's core clock. This is also
|
||||||
* forced by mmap function.
|
* forced by mmap function.
|
||||||
*/
|
*/
|
||||||
if (PAGE_SIZE <= 4096 &&
|
if (field_avail(typeof(resp), hca_core_clock_offset, udata->outlen)) {
|
||||||
field_avail(typeof(resp), hca_core_clock_offset, udata->outlen)) {
|
if (PAGE_SIZE <= 4096) {
|
||||||
resp.comp_mask |=
|
resp.comp_mask |=
|
||||||
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET;
|
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET;
|
||||||
resp.hca_core_clock_offset =
|
resp.hca_core_clock_offset =
|
||||||
offsetof(struct mlx5_init_seg, internal_timer_h) %
|
offsetof(struct mlx5_init_seg, internal_timer_h) % PAGE_SIZE;
|
||||||
PAGE_SIZE;
|
}
|
||||||
resp.response_length += sizeof(resp.hca_core_clock_offset) +
|
resp.response_length += sizeof(resp.hca_core_clock_offset) +
|
||||||
sizeof(resp.reserved2);
|
sizeof(resp.reserved2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue