[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