Impact: A failed radio-maestro probe always generates a kernel oops.
Probe failures in maestro_probe cause a double call to
video_device_release():
a) indirectly when calling video_unregister_device()
via dev->release(dev) in device_release()
b) explicity in the error handling at label errfr1
The second call causes the oops. This bug was introduced
with commit aa5e90af7d78d1711f8f4275ce3638817c0023dc when the
release method was added to struct video_device maestro_radio
but the error handling was not updated to take this into
consideration.
The fix: Correct the error handling path to avoid the
double release.
Test case: Without this fix, the kernel generates an oops when a probe
fails. With the fix, there is no oops. Tested by user GertjanVD.
SRU Justification:
Impact: A failed radio-maestro probe always generates a kernel oops.
Probe failures in maestro_probe cause a double call to release( ):
video_device_
a) indirectly when calling video_unregiste r_device( )
via dev->release(dev) in device_release()
b) explicity in the error handling at label errfr1
The second call causes the oops. This bug was introduced 11f8f4275ce3638 817c0023dc when the
with commit aa5e90af7d78d17
release method was added to struct video_device maestro_radio
but the error handling was not updated to take this into
consideration.
The fix: Correct the error handling path to avoid the
double release.
Test case: Without this fix, the kernel generates an oops when a probe
fails. With the fix, there is no oops. Tested by user GertjanVD.