aboutsummaryrefslogtreecommitdiff
path: root/hw/net/rocker/rocker.c
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2016-02-25 15:31:55 +0100
committerJason Wang <jasowang@redhat.com>2016-03-08 15:34:18 +0800
commit0ab9cd9a4b3f3c464d63fd30e5f958bfdf690af3 (patch)
treee9065341c16901909d21f20d71089f826bc4bf73 /hw/net/rocker/rocker.c
parent9fbad2ca36f099699ebdf91c523a9ddc34d6b1c4 (diff)
rocker: forbid to change world type
Port to world assignment should be permitted only by qemu user. Driver should not be able to do it, so forbid that possibility. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/net/rocker/rocker.c')
-rw-r--r--hw/net/rocker/rocker.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
index f3e994d563..a1d921dc1c 100644
--- a/hw/net/rocker/rocker.c
+++ b/hw/net/rocker/rocker.c
@@ -400,7 +400,13 @@ static int cmd_set_port_settings(Rocker *r,
if (tlvs[ROCKER_TLV_CMD_PORT_SETTINGS_MODE]) {
mode = rocker_tlv_get_u8(tlvs[ROCKER_TLV_CMD_PORT_SETTINGS_MODE]);
- fp_port_set_world(fp_port, r->worlds[mode]);
+ if (mode >= ROCKER_WORLD_TYPE_MAX) {
+ return -ROCKER_EINVAL;
+ }
+ /* We don't support world change. */
+ if (!fp_port_check_world(fp_port, r->worlds[mode])) {
+ return -ROCKER_EINVAL;
+ }
}
if (tlvs[ROCKER_TLV_CMD_PORT_SETTINGS_LEARNING]) {