[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL V2 06/12] rocker: forbid to change world type
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PULL V2 06/12] rocker: forbid to change world type |
Date: |
Tue, 8 Mar 2016 15:52:38 +0800 |
From: Jiri Pirko <address@hidden>
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 <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
hw/net/rocker/rocker.c | 8 +++++++-
hw/net/rocker/rocker_fp.c | 5 +++++
hw/net/rocker/rocker_fp.h | 1 +
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
index f3e994d..a1d921d 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]) {
diff --git a/hw/net/rocker/rocker_fp.c b/hw/net/rocker/rocker_fp.c
index af37fef..0149899 100644
--- a/hw/net/rocker/rocker_fp.c
+++ b/hw/net/rocker/rocker_fp.c
@@ -186,6 +186,11 @@ void fp_port_set_world(FpPort *port, World *world)
port->world = world;
}
+bool fp_port_check_world(FpPort *port, World *world)
+{
+ return port->world == world;
+}
+
bool fp_port_enabled(FpPort *port)
{
return port->enabled;
diff --git a/hw/net/rocker/rocker_fp.h b/hw/net/rocker/rocker_fp.h
index ab80fd8..04592bb 100644
--- a/hw/net/rocker/rocker_fp.h
+++ b/hw/net/rocker/rocker_fp.h
@@ -40,6 +40,7 @@ int fp_port_set_settings(FpPort *port, uint32_t speed,
bool fp_port_from_pport(uint32_t pport, uint32_t *port);
World *fp_port_get_world(FpPort *port);
void fp_port_set_world(FpPort *port, World *world);
+bool fp_port_check_world(FpPort *port, World *world);
bool fp_port_enabled(FpPort *port);
void fp_port_enable(FpPort *port);
void fp_port_disable(FpPort *port);
--
2.5.0
- [Qemu-devel] [PULL V2 00/12] Net patches, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 01/12] net: ne2000: check ring buffer control registers, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 02/12] net: filter: correctly remove filter from the list during finalization, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 03/12] MAINTAINERS: Add entries for include/net/ files, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 04/12] net: simplify net_init_tap_one logic, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 05/12] net: netmap: probe netmap interface for virtio-net header, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 06/12] rocker: forbid to change world type,
Jason Wang <=
- [Qemu-devel] [PULL V2 07/12] rocker: return -ENOMEM in case of some world alloc fails, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 08/12] rocker: add name field into WorldOps ale let world specify its name, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 09/12] rocker: allow user to specify rocker world by property, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 10/12] filter: Add 'status' property for filter object, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 11/12] filter-buffer: Add status_changed callback processing, Jason Wang, 2016/03/08
- [Qemu-devel] [PULL V2 12/12] net: check packet payload length, Jason Wang, 2016/03/08
- Re: [Qemu-devel] [PULL V2 00/12] Net patches, Peter Maydell, 2016/03/08