forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.6 KiB
43 lines
1.6 KiB
Testing for regressions in Media Controller API register, ioctl, syscall, |
|
and unregister paths. There have a few problems that result in user-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 user-after free error on /dev/mediaX when driver |
|
is unbound: |
|
|
|
Start media_device_test to regression test media devnode dynamic alloc |
|
and cdev user-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 user-after free errors or mutex lock errors.
|
|
|