Repeated calls to gdev_major_exit will not cause a kernel panic.
If gdev_major_init fails, it will call gdev_major_exit. At module unload, gdev_major_exit is called again.
This might result in a kernel panic, which makes writing and testing gdev code extremely time-consuming.
In this patch, this issue is fixed by introducing some null checks into gdev_major_exit and related code.
Thus it is safe the call gdev_major_exit several times in a row, effectively making the second and later calls
gdev: graceful exit even after failed init
This is great! I have merged your commit to the master branch.