SOLARIS: Correct ioctl syscall error handling
authorAndrew Deason <adeason@sinenomine.net>
Fri, 25 Mar 2011 21:37:30 +0000 (16:37 -0500)
committerDerrick Brashear <shadow@dementia.org>
Fri, 25 Mar 2011 22:49:52 +0000 (15:49 -0700)
Do not use the return code from ioctl for errno. Ioctl itself will set
the errno and return value correctly, so don't mess with them.

Change-Id: I26c3afb5c77a3fce57e0d53d8671541805b32e08
Reviewed-on: http://gerrit.openafs.org/4345
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/sys/glue.c

index 3ba696c..dfcc84a 100644 (file)
@@ -109,7 +109,7 @@ ioctl_sun_afs_syscall(long syscall, uintptr_t param1, uintptr_t param2,
 {
     void *ioctldata;
     long callnum;
-    int fd, code;
+    int fd;
 
 # ifdef _ILP32
     struct afssysargs32 sargs32;
@@ -142,16 +142,9 @@ ioctl_sun_afs_syscall(long syscall, uintptr_t param1, uintptr_t param2,
        return -1;
     }
 
-    *error = 0;
-
-    code = ioctl(fd, callnum, ioctldata);
+    *error = ioctl(fd, callnum, ioctldata);
     close(fd);
 
-    if (code) {
-       errno = code;
-       *error = code;
-    }
-
     return 0;
 }
 #endif /* AFS_SUN511_ENV */