From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] syscalls/keyctl06: Print TFAIL if keyring_read() returns wrong size
Date: Wed, 18 Oct 2017 14:25:25 +0800 [thread overview]
Message-ID: <59E6F3D5.8040001@cn.fujitsu.com> (raw)
In-Reply-To: <20171017161239.GA555@zzz.localdomain>
Hi Eric,
On 2017/10/18 0:12, Eric Biggers wrote:
> Hi Xiao,
>
> On Tue, Oct 17, 2017 at 08:53:12PM +0800, Xiao Yang wrote:
>> According to keyctl06's message, the mentioned bug is introduced
>> by the following patch which is merged into kernel since v3.13:
>> 'b2a4df200d57 ("KEYS: Expand the capacity of a keyring")'
>>
>> However, we still got the following output before v3.13:
>> tst_test.c:958: INFO: Timeout per run is 0h 05m 00s
>> keyctl06.c:60: BROK: KEYCTL_READ returned 8 but expected 4
>>
>> In old kernels, the output exposed that keyring_read() could not
>> return the size of data read into buffer, because it just returned
>> the size of a keyring. So i think this issue should be targeted
>> as TFAIL.
>>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> ---
>> testcases/kernel/syscalls/keyctl/keyctl06.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/testcases/kernel/syscalls/keyctl/keyctl06.c b/testcases/kernel/syscalls/keyctl/keyctl06.c
>> index 8873431..bf30fb6 100644
>> --- a/testcases/kernel/syscalls/keyctl/keyctl06.c
>> +++ b/testcases/kernel/syscalls/keyctl/keyctl06.c
>> @@ -56,7 +56,7 @@ static void do_test(void)
>> tst_brk(TBROK, "KEYCTL_READ didn't return correct key ID");
>>
>> if (TEST_RETURN != sizeof(key_serial_t)) {
>> - tst_brk(TBROK, "KEYCTL_READ returned %ld but expected %zu",
>> + tst_brk(TFAIL, "KEYCTL_READ returned %ld but expected %zu",
>> TEST_RETURN, sizeof(key_serial_t));
>> }
>>
> It was actually pointed out yesterday that the short return value is a bug in
> the kernel patch. The documented behavior of keyctl_read() (as well as the
> actual behavior for the other key types that implement it) is to return the full
> count on a short read, rather than a short count. It's not really intuitive but
> I'm going to have to fix it with another kernel patch.
Thanks for your explanation.
Sorry, i misunderstood the expected return value before.
> For now we probably should just make the test accept both return values:
>
> if (TEST_RETURN != sizeof(key_serial_t)&&
> TEST_RETURN != sizeof(key_ids)) {
> tst_brk(TBROK, "KEYCTL_READ returned %ld but expected %zu or %zu",
> TEST_RETURN, sizeof(key_serial_t), sizeof(key_ids));
> }
>
> Then once there is another kernel patch, I'll update the test to reference that
> commit too, and accept only TEST_RETURN == sizeof(key_ids).
Could we update the test to check both return values? as below:
if (TEST_RETURN != sizeof(key_ids)) {
/* keyctl_read() should return the size of buffer required, rather than the size
* of data read into buffer. This bug was introduced by the commit:
* e645016abc80 ("KEYS: fix writing past end of user-supplied buffer in keyring_read()")
*/
if (TEST_RETURN == sizeof(key_serial_t)) {
tst_brk(TFAIL, "KEYCTL_READ returned %ld but expected %zu",
TEST_RETURN, sizeof(key_ids));
}
tst_brk(TBROK, "KEYCTL_READ returned %ld but expected %zu",
TEST_RETURN, sizeof(key_ids));
}
We probably should expose the short return value as a bug, rather than ignore it.
> There is also the question of whether anything should be read at all when the
> buffer is too small. Currently the test assumes that a short read is done.
> Unfortunately, there is no simple answer to that question as the documentation
> for keyctl_read() and implementations are all inconsistent.
I also find the documentation and implementations are inconsistent, and either of
them may need to update.
Thanks,
Xiao yang
> Eric
>
>
>
next prev parent reply other threads:[~2017-10-18 6:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-17 12:53 [LTP] [PATCH] syscalls/keyctl06: Print TFAIL if keyring_read() returns wrong size Xiao Yang
2017-10-17 16:12 ` Eric Biggers
2017-10-18 6:25 ` Xiao Yang [this message]
2017-10-18 17:19 ` Eric Biggers
2017-10-19 2:14 ` Xiao Yang
2017-10-19 6:09 ` [LTP] [PATCH v2] syscalls/keyctl06: Accept two kinds of return values for the time being Xiao Yang
2017-10-27 9:00 ` [LTP] [PATCH v3] syscalls/keyctl06: Fix return value Xiao Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59E6F3D5.8040001@cn.fujitsu.com \
--to=yangx.jy@cn.fujitsu.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.