mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Add tests for gpiolib-cdev to make sure accessing to dangling resources via the opening file descriptor won't crash the system after the underlying resource providers have gone. Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Link: https://patch.msgid.link/20260223061726.82161-7-tzungbi@kernel.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
64 lines
1.6 KiB
Bash
Executable File
64 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright 2026 Google LLC
|
|
|
|
BASE_DIR=`dirname $0`
|
|
MODULE="gpio-cdev-uaf"
|
|
|
|
fail() {
|
|
echo "$*" >&2
|
|
echo "GPIO $MODULE test FAIL"
|
|
exit 1
|
|
}
|
|
|
|
skip() {
|
|
echo "$*" >&2
|
|
echo "GPIO $MODULE test SKIP"
|
|
exit 4
|
|
}
|
|
|
|
# Load the gpio-sim module. This will pull in configfs if needed too.
|
|
modprobe gpio-sim || skip "unable to load the gpio-sim module"
|
|
# Make sure configfs is mounted at /sys/kernel/config. Wait a bit if needed.
|
|
for _ in `seq 5`; do
|
|
mountpoint -q /sys/kernel/config && break
|
|
mount -t configfs none /sys/kernel/config
|
|
sleep 0.1
|
|
done
|
|
mountpoint -q /sys/kernel/config || \
|
|
skip "configfs not mounted at /sys/kernel/config"
|
|
|
|
echo "1. GPIO"
|
|
|
|
echo "1.1. poll"
|
|
$BASE_DIR/gpio-cdev-uaf chip poll || fail "failed to test chip poll"
|
|
echo "1.2. read"
|
|
$BASE_DIR/gpio-cdev-uaf chip read || fail "failed to test chip read"
|
|
echo "1.3. ioctl"
|
|
$BASE_DIR/gpio-cdev-uaf chip ioctl || fail "failed to test chip ioctl"
|
|
|
|
echo "2. linehandle"
|
|
|
|
echo "2.1. ioctl"
|
|
$BASE_DIR/gpio-cdev-uaf handle ioctl || fail "failed to test handle ioctl"
|
|
|
|
echo "3. lineevent"
|
|
|
|
echo "3.1. read"
|
|
$BASE_DIR/gpio-cdev-uaf event read || fail "failed to test event read"
|
|
echo "3.2. poll"
|
|
$BASE_DIR/gpio-cdev-uaf event poll || fail "failed to test event poll"
|
|
echo "3.3. ioctl"
|
|
$BASE_DIR/gpio-cdev-uaf event ioctl || fail "failed to test event ioctl"
|
|
|
|
echo "4. linereq"
|
|
|
|
echo "4.1. read"
|
|
$BASE_DIR/gpio-cdev-uaf req read || fail "failed to test req read"
|
|
echo "4.2. poll"
|
|
$BASE_DIR/gpio-cdev-uaf req poll || fail "failed to test req poll"
|
|
echo "4.3. ioctl"
|
|
$BASE_DIR/gpio-cdev-uaf req ioctl || fail "failed to test req ioctl"
|
|
|
|
echo "GPIO $MODULE test PASS"
|