Call netdev notifiers before and after changing the device type.

Signed-off-by: Martin Schiller <m...@dev.tdt.de>
---
Changes to v3:
* Handle return value of call_netdevice_notifiers()

Changes to v2:
* Use subject_prefix 'net-next' to fix 'fixes_present' issue

Changes to v1:
* Fix 'subject_prefix' and 'checkpatch' warnings

---
 drivers/net/tun.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 3d45d56172cb..704306695b88 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -3071,10 +3071,19 @@ static long __tun_chr_ioctl(struct file *file, unsigned 
int cmd,
                                   "Linktype set failed because interface is 
up\n");
                        ret = -EBUSY;
                } else {
+                       ret = call_netdevice_notifiers(NETDEV_PRE_TYPE_CHANGE,
+                                                      tun->dev);
+                       ret = notifier_to_errno(err);
+                       if (ret) {
+                               netif_info(tun, drv, tun->dev,
+                                          "Refused to change device type\n");
+                               break;
+                       }
                        tun->dev->type = (int) arg;
                        netif_info(tun, drv, tun->dev, "linktype set to %d\n",
                                   tun->dev->type);
-                       ret = 0;
+                       call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
+                                                tun->dev);
                }
                break;
 
-- 
2.20.1

Reply via email to