if_open() calls try_module_get(), and after an attempt to lock a mutex
the if_open() function may return -ERESTARTSYS without
putting the module.  Then, when if_open() is executed again,
try_module_get() is called making the reference counter of THIS_MODULE
greater than one at successful exit from if_open().  The if_close()
function puts the module only once, and as a result it can't be
unloaded.
This patch adds module_put call before the return from if_open().
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Pavel Shved <shved@ispras.ru>
Signed-off-by: David S. Miller <davem@conan.davemloft.net>
        if (!cs || !try_module_get(cs->driver->owner))
                return -ENODEV;
 
-       if (mutex_lock_interruptible(&cs->mutex))
+       if (mutex_lock_interruptible(&cs->mutex)) {
+               module_put(cs->driver->owner);
                return -ERESTARTSYS;
+       }
        tty->driver_data = cs;
 
        ++cs->open_count;