@@ -47,15 +47,23 @@ static int rmnet_unregister_real_device(struct net_device *real_dev)
47
47
return 0 ;
48
48
}
49
49
50
- static int rmnet_register_real_device (struct net_device * real_dev )
50
+ static int rmnet_register_real_device (struct net_device * real_dev ,
51
+ struct netlink_ext_ack * extack )
51
52
{
52
53
struct rmnet_port * port ;
53
54
int rc , entry ;
54
55
55
56
ASSERT_RTNL ();
56
57
57
- if (rmnet_is_real_dev_registered (real_dev ))
58
+ if (rmnet_is_real_dev_registered (real_dev )) {
59
+ port = rmnet_get_port_rtnl (real_dev );
60
+ if (port -> rmnet_mode != RMNET_EPMODE_VND ) {
61
+ NL_SET_ERR_MSG_MOD (extack , "bridge device already exists" );
62
+ return - EINVAL ;
63
+ }
64
+
58
65
return 0 ;
66
+ }
59
67
60
68
port = kzalloc (sizeof (* port ), GFP_KERNEL );
61
69
if (!port )
@@ -133,7 +141,7 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev,
133
141
134
142
mux_id = nla_get_u16 (data [IFLA_RMNET_MUX_ID ]);
135
143
136
- err = rmnet_register_real_device (real_dev );
144
+ err = rmnet_register_real_device (real_dev , extack );
137
145
if (err )
138
146
goto err0 ;
139
147
@@ -421,19 +429,14 @@ int rmnet_add_bridge(struct net_device *rmnet_dev,
421
429
return - EINVAL ;
422
430
}
423
431
424
- if (port -> rmnet_mode != RMNET_EPMODE_VND ) {
425
- NL_SET_ERR_MSG_MOD (extack , "bridge device already exists" );
426
- return - EINVAL ;
427
- }
428
-
429
432
if (rmnet_is_real_dev_registered (slave_dev )) {
430
433
NL_SET_ERR_MSG_MOD (extack ,
431
434
"slave cannot be another rmnet dev" );
432
435
433
436
return - EBUSY ;
434
437
}
435
438
436
- err = rmnet_register_real_device (slave_dev );
439
+ err = rmnet_register_real_device (slave_dev , extack );
437
440
if (err )
438
441
return - EBUSY ;
439
442
0 commit comments