summaryrefslogtreecommitdiffstats
path: root/drivers/net/macvlan.c
diff options
context:
space:
mode:
authorZhang Shengju <zhangshengju@cmss.chinamobile.com>2017-09-19 20:12:23 -0400
committerDavid S. Miller <davem@davemloft.net>2017-09-20 16:46:45 -0400
commit07850a4f74ea0433fe26dccb1ab9556c738a6584 (patch)
tree2b9074c71bf60184418d05ce69e89b1ae24d1b05 /drivers/net/macvlan.c
parentd4e1b299ec2853dd3d90b71ae86fa2626e60dc25 (diff)
macvlan: code refine to check data before using
This patch checks data first at one place, return if it's null. Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r--drivers/net/macvlan.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index d2aea961e0f4..1ffe77e95d46 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -1231,11 +1231,14 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[],
1231 return -EADDRNOTAVAIL; 1231 return -EADDRNOTAVAIL;
1232 } 1232 }
1233 1233
1234 if (data && data[IFLA_MACVLAN_FLAGS] && 1234 if (!data)
1235 return 0;
1236
1237 if (data[IFLA_MACVLAN_FLAGS] &&
1235 nla_get_u16(data[IFLA_MACVLAN_FLAGS]) & ~MACVLAN_FLAG_NOPROMISC) 1238 nla_get_u16(data[IFLA_MACVLAN_FLAGS]) & ~MACVLAN_FLAG_NOPROMISC)
1236 return -EINVAL; 1239 return -EINVAL;
1237 1240
1238 if (data && data[IFLA_MACVLAN_MODE]) { 1241 if (data[IFLA_MACVLAN_MODE]) {
1239 switch (nla_get_u32(data[IFLA_MACVLAN_MODE])) { 1242 switch (nla_get_u32(data[IFLA_MACVLAN_MODE])) {
1240 case MACVLAN_MODE_PRIVATE: 1243 case MACVLAN_MODE_PRIVATE:
1241 case MACVLAN_MODE_VEPA: 1244 case MACVLAN_MODE_VEPA:
@@ -1248,7 +1251,7 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[],
1248 } 1251 }
1249 } 1252 }
1250 1253
1251 if (data && data[IFLA_MACVLAN_MACADDR_MODE]) { 1254 if (data[IFLA_MACVLAN_MACADDR_MODE]) {
1252 switch (nla_get_u32(data[IFLA_MACVLAN_MACADDR_MODE])) { 1255 switch (nla_get_u32(data[IFLA_MACVLAN_MACADDR_MODE])) {
1253 case MACVLAN_MACADDR_ADD: 1256 case MACVLAN_MACADDR_ADD:
1254 case MACVLAN_MACADDR_DEL: 1257 case MACVLAN_MACADDR_DEL:
@@ -1260,7 +1263,7 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[],
1260 } 1263 }
1261 } 1264 }
1262 1265
1263 if (data && data[IFLA_MACVLAN_MACADDR]) { 1266 if (data[IFLA_MACVLAN_MACADDR]) {
1264 if (nla_len(data[IFLA_MACVLAN_MACADDR]) != ETH_ALEN) 1267 if (nla_len(data[IFLA_MACVLAN_MACADDR]) != ETH_ALEN)
1265 return -EINVAL; 1268 return -EINVAL;
1266 1269
@@ -1268,7 +1271,7 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[],
1268 return -EADDRNOTAVAIL; 1271 return -EADDRNOTAVAIL;
1269 } 1272 }
1270 1273
1271 if (data && data[IFLA_MACVLAN_MACADDR_COUNT]) 1274 if (data[IFLA_MACVLAN_MACADDR_COUNT])
1272 return -EINVAL; 1275 return -EINVAL;
1273 1276
1274 return 0; 1277 return 0;