Added patch to fix -s option in hackbench

Added patch to prevent user from erroneously passing negative numbers to hackbench.
Resolves: RHEL-36745

Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
This commit is contained in:
Anubhav Shelat 2024-05-23 11:37:36 -04:00
parent 46cd83709c
commit fce6d6d030
3 changed files with 117 additions and 2 deletions

View File

@ -0,0 +1,39 @@
From 64c7f92979ded63ac5a19ea59e9b791e3da1fae4 Mon Sep 17 00:00:00 2001
From: Anubhav Shelat <ashelat@redhat.com>
Date: Wed, 22 May 2024 10:43:46 -0400
Subject: [PATCH 1/2] rt-tests: hackbench: removed extra use of optind
Currently, using the -s option displays the usage message, even if the
option is properly used.
This is because Commit 778a02b7c519 ("rt-tests: hackbench: drop incorrect
and unnecessary usage of optind") forgot to drop a use of optind when
processing option 's' which was fixed in this commit.
Now the -s option works correctly with the proper arguments.
Note: The next commit in this patchset fixes "ERROR: do not use
assignment in if condition" on line 459.
Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/hackbench/hackbench.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
index d4924b3cc129..fec8357bef81 100644
--- a/src/hackbench/hackbench.c
+++ b/src/hackbench/hackbench.c
@@ -456,7 +456,7 @@ static void process_options(int argc, char *argv[])
use_inet = 1;
break;
case 's':
- if (!(argv[optind] && (datasize = atoi(optarg)) > 0)) {
+ if ((datasize = atoi(optarg)) <= 0) {
fprintf(stderr, "%s: --datasize|-s requires an integer > 0\n", argv[0]);
print_usage_exit(1);
}
--
2.45.1

View File

@ -0,0 +1,70 @@
From cadd661f984c0e6717e681fdaca1ce589b0ed964 Mon Sep 17 00:00:00 2001
From: Anubhav Shelat <ashelat@redhat.com>
Date: Wed, 22 May 2024 10:43:47 -0400
Subject: [PATCH 2/2] rt-tests: hackbench: properly recognize when integer
arguments are negative
hackbench is supposed to catch when the user passes
negative arguments to options -f, -g, -l, and -s.
Previously hackbench would allow options to accept
negative arguments, resulting in undefined behavior.
Now process_options() assigns variables outside of
the if considiton where they are used. hackbench will
output a usage message if the user inputs a negative
argument.
Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/hackbench/hackbench.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
index fec8357bef81..55be325a38df 100644
--- a/src/hackbench/hackbench.c
+++ b/src/hackbench/hackbench.c
@@ -426,7 +426,8 @@ static void process_options(int argc, char *argv[])
}
switch (c) {
case 'f':
- if ((num_fds = atoi(optarg)) <= 0) {
+ num_fds = atoi(optarg);
+ if (atoi(optarg) <= 0) {
fprintf(stderr, "%s: --fds|-f requires an integer > 0\n", argv[0]);
print_usage_exit(1);
}
@@ -435,7 +436,8 @@ static void process_options(int argc, char *argv[])
fifo = 1;
break;
case 'g':
- if ((num_groups = atoi(optarg)) <= 0) {
+ num_groups = atoi(optarg);
+ if (atoi(optarg) <= 0) {
fprintf(stderr, "%s: --groups|-g requires an integer > 0\n", argv[0]);
print_usage_exit(1);
}
@@ -444,7 +446,8 @@ static void process_options(int argc, char *argv[])
print_usage_exit(0);
break;
case 'l':
- if ((loops = atoi(optarg)) <= 0) {
+ loops = atoi(optarg);
+ if (atoi(optarg) <= 0) {
fprintf(stderr, "%s: --loops|-l requires an integer > 0\n", argv[0]);
print_usage_exit(1);
}
@@ -456,7 +459,8 @@ static void process_options(int argc, char *argv[])
use_inet = 1;
break;
case 's':
- if ((datasize = atoi(optarg)) <= 0) {
+ datasize = atoi(optarg);
+ if (atoi(optarg) <= 0) {
fprintf(stderr, "%s: --datasize|-s requires an integer > 0\n", argv[0]);
print_usage_exit(1);
}
--
2.45.1

View File

@ -1,7 +1,7 @@
Name: realtime-tests
Summary: Programs that test various rt-features
Version: 2.7
Release: 1%{?dist}
Release: 2%{?dist}
License: GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.1-or-later
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz
@ -15,7 +15,8 @@ Requires: bash
Requires: bc
#Patches
Patch1: 0001-rt-tests-hackbench-removed-extra-use-of-optind.patch
Patch2: 0002-rt-tests-hackbench-properly-recognize-when-integer-a.patch
%description
realtime-tests is a set of programs that test and measure various components of
real-time kernel behavior. This package measures timer, signal, and hardware
@ -73,6 +74,11 @@ latency. It also tests the functioning of priority-inheritance mutexes.
%{_mandir}/man8/determine_maximum_mpps.8.*
%changelog
* Thu May 23 2024 Anubhav Shelat <ashelat@redhat.com> - 2.7-2
- Added patch to fix -s option in hackbench
- Added patch to prevent user from erroneously passing negative numbers to hackbench.
Resolves: RHEL-36745
* Tue May 07 2024 John Kacur <jkacur@redhat.com> - 2.7-1
- Rebase to upstream rt-tests 2.7
Resolves: RHEL-30167