net/mlx4_core: Protect QUERY_PORT wrapper from untrusted guests
The function mlx4_QUERY_PORT_wrapper implements only the QUERY_PORT "general" case (opcode modifier = 0). Verify that the opcode modifier is zero, and also that the input modifier contains only the port number in bits 0..7 (all other bits should be zero). Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e1c00e10e9
commit
a7401b9cf3
|
@ -982,8 +982,13 @@ int mlx4_QUERY_PORT_wrapper(struct mlx4_dev *dev, int slave,
|
|||
if (port < 0)
|
||||
return -EINVAL;
|
||||
|
||||
vhcr->in_modifier = (vhcr->in_modifier & ~0xFF) |
|
||||
(port & 0xFF);
|
||||
/* Protect against untrusted guests: enforce that this is the
|
||||
* QUERY_PORT general query.
|
||||
*/
|
||||
if (vhcr->op_modifier || vhcr->in_modifier & ~0xFF)
|
||||
return -EINVAL;
|
||||
|
||||
vhcr->in_modifier = port;
|
||||
|
||||
err = mlx4_cmd_box(dev, 0, outbox->dma, vhcr->in_modifier, 0,
|
||||
MLX4_CMD_QUERY_PORT, MLX4_CMD_TIME_CLASS_B,
|
||||
|
|
Loading…
Reference in a new issue