Skip to contentSkip to conversation

do not test undefined behavior

PATCH New Martin Karac 2 participants 3 messages Jun 1, 2017 – Jun 2, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 do not test undefined behavior

The test_flags() function's first test for each file is an attempt to write a space character into that file (NULL translates to " "). The test expects that this attempt will be successful and that the flag will get set to 0.

This behavior was changed in Linux kernel between versions 3.13.74 and 3.14. with the commit a742c59de66ea080afa3edaf3428b3cdd5aa87cd "cgroup: unify cgroup_write_X64() and cgroup_write_string()". With the new behavior, attempting to write a space character into a flag file returns EINVAL; I find this behavior more consistent.

Flag files are an interface which is known to expect numeric values. We already have a test in test_flags() which covers invalid input. We should not attempt to write a space into a flag file because the resulting behavior is not strictly defined anywhere. Therefore, it would be best to drop the first test.

---
 .../cpuset_base_ops_testset.sh                     |    1 -
 1 file changed, 1 deletion(-)
testcases/kernel/controllers/cpuset/cpuset_base_ops_test/cpuset_base_ops_testset.sh +0 -1
index 992b8f2..70e7203 100755
@@ -181,7 +181,6 @@ test_flags()
                do
                        base_op_test "$CPUSET/$filename" "$flags" "$result"
                done <<- EOF
-                       NULL    0
                        0       0
                        1       1
                        -1      WRITE_ERROR

--
1.7.9.2

#1 lore raw

PATCH 1/1 do not test undefined behavior

----- Original Message -----

Quoted 11 lines

The test_flags() function's first test for each file is an attempt to write a space character into that file (NULL translates to " "). The test expects that this attempt will be successful and that the flag will get set to 0.

This behavior was changed in Linux kernel between versions 3.13.74 and 3.14. with the commit a742c59de66ea080afa3edaf3428b3cdd5aa87cd "cgroup: unify cgroup_write_X64() and cgroup_write_string()". With the new behavior, attempting to write a space character into a flag file returns EINVAL; I find this behavior more consistent.

Quoted 5 lines

Flag files are an interface which is known to expect numeric values. We already have a test in test_flags() which covers invalid input. We should not attempt to write a space into a flag file because the resulting behavior is not strictly defined anywhere. Therefore, it would be best to drop the first test.

Hi,

no objections to change you are proposing, just comments on format:

You're missing Signed-off-by line.
Patch appears to be mangled, all tabs were replaced by spaces.

Did you send the patch with git send-email? Would you care to try resend?

Regards,
Jan

#2 lore raw

PATCH 1/1 do not test undefined behavior

Hi Jan,

thank you very much for your comments. This is my first ever attempt to send a patch. I did not send it with git send-email, but I will definitely try.

With regards,
Martin Karac

Quoted 33 lines · Jan Stancek

----- Original Message -----

Quoted 11 lines

The test_flags() function's first test for each file is an attempt to write a space character into that file (NULL translates to " "). The test expects that this attempt will be successful and that the flag will get set to 0.

This behavior was changed in Linux kernel between versions 3.13.74 and 3.14. with the commit a742c59de66ea080afa3edaf3428b3cdd5aa87cd "cgroup: unify cgroup_write_X64() and cgroup_write_string()". With the new behavior, attempting to write a space character into a flag file returns EINVAL; I find this behavior more consistent.

Quoted 5 lines

Flag files are an interface which is known to expect numeric values. We already have a test in test_flags() which covers invalid input. We should not attempt to write a space into a flag file because the resulting behavior is not strictly defined anywhere. Therefore, it would be best to drop the first test.

Hi,

no objections to change you are proposing, just comments on format:

You're missing Signed-off-by line.
Patch appears to be mangled, all tabs were replaced by spaces.

Did you send the patch with git send-email? Would you care to try resend?

Regards,
Jan

Signature · 4 lines
Martin Karac
PLQA - Prague Linux QA
Oracle Czech s.r.o.
Prague, Czech Republic