[LTP] [PATCH 1/2] ltp-aiodio/dio_sparse: Fix write in dio_sparse()
Cyril Hrubis
chrubis@suse.cz
Tue Jan 24 14:40:57 CET 2017
Hi!
> Current code looks buggy because when the offset is greater than
> or equal to the filesize, it will never happen to do the write
> in the loop, as a result, ADSP080..ADSP087 do not work actually.
> Fix it by making sure that we do write writesize bytes.
>
> Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> ---
> testcases/kernel/io/ltp-aiodio/dio_sparse.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/io/ltp-aiodio/dio_sparse.c b/testcases/kernel/io/ltp-aiodio/dio_sparse.c
> index 41b9929..3828ed7 100644
> --- a/testcases/kernel/io/ltp-aiodio/dio_sparse.c
> +++ b/testcases/kernel/io/ltp-aiodio/dio_sparse.c
> @@ -78,7 +78,7 @@ int dio_sparse(char *filename, int align, int writesize, int filesize, int offse
>
> memset(bufptr, 0, writesize);
> lseek(fd, offset, SEEK_SET);
> - for (i = offset; i < filesize;) {
> + for (i = 0; i < filesize;) {
> if ((w = write(fd, bufptr, writesize)) != writesize) {
> tst_resm(TBROK | TERRNO, "write() returned %d", w);
> close(fd);
Hmm, it looks to me like the code actually does what it should have.
Since we pass a filesize and offset so the test should actually write
filesize - offset bytes. As far as I can tell the bug here is that the
test is not checking that filesize > offset before it starts.
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list