Testing for regressions in Media Controller API register, ioctl, syscall,
and unregister paths. There have a few problems that result in use-after
free on media_device, media_devnode, and cdev pointers when the driver is
unbound while ioctl is in progress.

Test Procedure:

Run bin/unbind loop while ioctls are in progress.
Run rmmod and modprobe.
Disconnect the device.

Setup:

Build media_device_test
cd tools/testing/selftests/media_tests
make

Regressions test for cdev use-after-free error on /dev/mediaX when driver
is unbound:

Start media_device_test to regression test media devnode dynamic alloc
and cdev use-after-free fixes. This opens media dev files and sits in
a loop running media ioctl MEDIA_IOC_DEVICE_INFO command once every 10
seconds. The idea is when device file goes away, media devnode and cdev
should stick around until this test exits.

The test for a random number of iterations or until user kills it with a
sleep 10 in between the ioctl calls.

sudo ./media_device_test -d /dev/mediaX

Regression test for media_devnode unregister race with ioctl_syscall:

Start 6 open_loop_test.sh tests with different /dev/mediaX files. When
device file goes away after unbind, device file name changes. Start the
test with possible device names. If we start with /dev/media0 for example,
after unbind, /dev/media1 or /dev/media2 could get created. The idea is
keep ioctls going while bind/unbind runs.

Copy bind_unbind_sample.txt and make changes to specify the driver name
and number to run bind and unbind. Start the bind_unbind.sh

Run dmesg looking for any use-after-free errors or mutex lock errors.
