mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
68 lines
1.8 KiB
Bash
68 lines
1.8 KiB
Bash
![]() |
#!/usr/bin/env bash
|
||
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
# This test verifies that users can successfully create up to
|
||
|
# MAX_USERDATA_ITEMS userdata entries without encountering any failures.
|
||
|
#
|
||
|
# Additionally, it tests for expected failure when attempting to exceed this
|
||
|
# maximum limit.
|
||
|
#
|
||
|
# Author: Breno Leitao <leitao@debian.org>
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
SCRIPTDIR=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")")
|
||
|
|
||
|
source "${SCRIPTDIR}"/lib/sh/lib_netcons.sh
|
||
|
# This is coming from netconsole code. Check for it in drivers/net/netconsole.c
|
||
|
MAX_USERDATA_ITEMS=16
|
||
|
|
||
|
# Function to create userdata entries
|
||
|
function create_userdata_max_entries() {
|
||
|
# All these keys should be created without any error
|
||
|
for i in $(seq $MAX_USERDATA_ITEMS)
|
||
|
do
|
||
|
# USERDATA_KEY is used by set_user_data
|
||
|
USERDATA_KEY="key"${i}
|
||
|
set_user_data
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Function to verify the entry limit
|
||
|
function verify_entry_limit() {
|
||
|
# Allowing the test to fail without exiting, since the next command
|
||
|
# will fail
|
||
|
set +e
|
||
|
mkdir "${NETCONS_PATH}/userdata/key_that_will_fail" 2> /dev/null
|
||
|
ret="$?"
|
||
|
set -e
|
||
|
if [ "$ret" -eq 0 ];
|
||
|
then
|
||
|
echo "Adding more than ${MAX_USERDATA_ITEMS} entries in userdata should fail, but it didn't" >&2
|
||
|
ls "${NETCONS_PATH}/userdata/" >&2
|
||
|
exit "${ksft_fail}"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# ========== #
|
||
|
# Start here #
|
||
|
# ========== #
|
||
|
|
||
|
modprobe netdevsim 2> /dev/null || true
|
||
|
modprobe netconsole 2> /dev/null || true
|
||
|
|
||
|
# Check for basic system dependency and exit if not found
|
||
|
check_for_dependencies
|
||
|
|
||
|
# Remove the namespace, interfaces and netconsole target on exit
|
||
|
trap cleanup EXIT
|
||
|
# Create one namespace and two interfaces
|
||
|
set_network
|
||
|
# Create a dynamic target for netconsole
|
||
|
create_dynamic_target
|
||
|
# populate the maximum number of supported keys in userdata
|
||
|
create_userdata_max_entries
|
||
|
# Verify an additional entry is not allowed
|
||
|
verify_entry_limit
|
||
|
exit "${ksft_pass}"
|