From: Enrico Scholz Date: Thu, 22 Jan 2004 13:36:30 +0000 (+0000) Subject: when ioctl() returns a value <-1, assign errno manually and return -1 X-Git-Tag: VERSION_0_10~845 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b85ddf8a13e46569ea89d1bca30e4925b7d0a71b;p=util-vserver.git when ioctl() returns a value <-1, assign errno manually and return -1 git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@685 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/lib/ioctl-getext2flags.hc b/util-vserver/lib/ioctl-getext2flags.hc index 4d56f90..adb4346 100644 --- a/util-vserver/lib/ioctl-getext2flags.hc +++ b/util-vserver/lib/ioctl-getext2flags.hc @@ -41,5 +41,10 @@ vc_X_get_ext2flags(int fd, long *flags) rc = ioctl(fd, EXT2_IOC_GETFLAGS, flags); *flags = EXT2FLAGS_KERNEL2USER(*flags); + if (rc<-1) { + errno = -rc; + rc = -1; + } + return rc; } diff --git a/util-vserver/lib/ioctl-getfilecontext.hc b/util-vserver/lib/ioctl-getfilecontext.hc index 6426466..d7970f9 100644 --- a/util-vserver/lib/ioctl-getfilecontext.hc +++ b/util-vserver/lib/ioctl-getfilecontext.hc @@ -31,6 +31,11 @@ vc_X_get_filecontext(int fd) int c; int rc = ioctl(fd, EXT2_IOC_GETCONTEXT, &c); + if (rc<-1) { + errno = -rc; + rc = -1; + } + if (rc==-1) return VC_NOCTX; else return c; } diff --git a/util-vserver/lib/ioctl-getxflg.hc b/util-vserver/lib/ioctl-getxflg.hc index 3ea109a..6006f97 100644 --- a/util-vserver/lib/ioctl-getxflg.hc +++ b/util-vserver/lib/ioctl-getxflg.hc @@ -34,5 +34,10 @@ vc_X_get_xflg(int fd, long *flags) *flags = 0; rc = ioctl(fd, FIOC_GETXFLG, flags); + if (rc<-1) { + errno = -rc; + rc = -1; + } + return rc; } diff --git a/util-vserver/lib/ioctl-setext2flags.hc b/util-vserver/lib/ioctl-setext2flags.hc index d5d7323..e07d711 100644 --- a/util-vserver/lib/ioctl-setext2flags.hc +++ b/util-vserver/lib/ioctl-setext2flags.hc @@ -37,6 +37,7 @@ static inline ALWAYSINLINE int vc_X_set_ext2flags(int fd, long set_flags, long del_flags) { long old_flags = 0; + int rc; set_flags = EXT2FLAGS_USER2KERNEL(set_flags); del_flags = EXT2FLAGS_USER2KERNEL(del_flags); @@ -47,5 +48,12 @@ vc_X_set_ext2flags(int fd, long set_flags, long del_flags) } old_flags |= set_flags; - return ioctl(fd, EXT2_IOC_SETFLAGS, &old_flags); + rc = ioctl(fd, EXT2_IOC_SETFLAGS, &old_flags); + + if (rc<-1) { + errno = -rc; + rc = -1; + } + + return rc; } diff --git a/util-vserver/lib/ioctl-setfilecontext.hc b/util-vserver/lib/ioctl-setfilecontext.hc index e846c12..c07f1ba 100644 --- a/util-vserver/lib/ioctl-setfilecontext.hc +++ b/util-vserver/lib/ioctl-setfilecontext.hc @@ -31,5 +31,10 @@ vc_X_set_filecontext(int fd, xid_t ctx) int c = ctx; int rc = ioctl(fd, EXT2_IOC_SETCONTEXT, &c); + if (rc<-1) { + errno = -rc; + rc = -1; + } + return rc; } diff --git a/util-vserver/lib/ioctl-setxflg.hc b/util-vserver/lib/ioctl-setxflg.hc index 7224d11..24cee02 100644 --- a/util-vserver/lib/ioctl-setxflg.hc +++ b/util-vserver/lib/ioctl-setxflg.hc @@ -33,5 +33,10 @@ vc_X_set_xflg(int fd, long flags) int rc; rc = ioctl(fd, FIOC_SETXFLG, &flags); + if (rc<-1) { + errno = -rc; + rc = -1; + } + return rc; }