selftests: bpf: test_sockmap: handle file creation failures gracefully
authorJakub Kicinski <jakub.kicinski@netronome.com>
Wed, 27 Nov 2019 20:16:45 +0000 (12:16 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 29 Nov 2019 06:40:29 +0000 (22:40 -0800)
test_sockmap creates a temporary file to use for sendpage.
this may fail for various reasons. Handle the error rather
than segfault.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/bpf/test_sockmap.c

index 3845144..8b838e9 100644 (file)
@@ -332,6 +332,10 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt,
        int i, fp;
 
        file = fopen(".sendpage_tst.tmp", "w+");
+       if (!file) {
+               perror("create file for sendpage");
+               return 1;
+       }
        for (i = 0; i < iov_length * cnt; i++, k++)
                fwrite(&k, sizeof(char), 1, file);
        fflush(file);
@@ -339,6 +343,11 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt,
        fclose(file);
 
        fp = open(".sendpage_tst.tmp", O_RDONLY);
+       if (fp < 0) {
+               perror("reopen file for sendpage");
+               return 1;
+       }
+
        clock_gettime(CLOCK_MONOTONIC, &s->start);
        for (i = 0; i < cnt; i++) {
                int sent = sendfile(fd, fp, NULL, iov_length);