Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 8de91268c2f82670ccd3e06448b39389 > files > 5

openafs-1.4.7-5.2mdv2009.0.src.rpm

diff -Naurp openafs-1.4.7/src/afs/LINUX/osi_vnodeops.c openafs-1.4.7.oden/src/afs/LINUX/osi_vnodeops.c
--- openafs-1.4.7/src/afs/LINUX/osi_vnodeops.c	2008-04-15 08:29:54.000000000 -0400
+++ openafs-1.4.7.oden/src/afs/LINUX/osi_vnodeops.c	2009-04-27 10:57:07.000000000 -0400
@@ -45,6 +45,10 @@ RCSID
 #define pageoff(pp) pp->offset
 #endif
 
+#ifndef MAX_ERRNO
+#define MAX_ERRNO 1000L
+#endif
+
 #if defined(AFS_LINUX26_ENV)
 #define UnlockPage(pp) unlock_page(pp)
 #endif
@@ -1051,8 +1055,10 @@ afs_linux_lookup(struct inode *dip, stru
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,10)
     if (code == ENOENT)
 	return ERR_PTR(0);
-    else
+    else if ((code >= 0) && (code <= MAX_ERRNO))
 	return ERR_PTR(-code);
+    else 
+	return ERR_PTR(-EIO);
 #else
     if (code == ENOENT)
 	code = 0;
@@ -1396,7 +1402,10 @@ afs_linux_follow_link(struct dentry *dp,
 
     if (code < 0) {
 	dput(basep);
-	res = ERR_PTR(code);
+	if (code < -MAX_ERRNO)
+	    res = ERR_PTR(-EIO);
+	else
+	    res = ERR_PTR(code);
     } else {
 	name[code] = '\0';
 	res = lookup_dentry(name, basep, follow);
diff -Naurp openafs-1.4.7/src/afs/VNOPS/afs_vnop_lookup.c openafs-1.4.7.oden/src/afs/VNOPS/afs_vnop_lookup.c
--- openafs-1.4.7/src/afs/VNOPS/afs_vnop_lookup.c	2008-04-15 08:29:56.000000000 -0400
+++ openafs-1.4.7.oden/src/afs/VNOPS/afs_vnop_lookup.c	2009-04-27 10:57:07.000000000 -0400
@@ -1081,7 +1081,7 @@ afs_DoBulkStat(struct vcache *adp, long 
 	afs_PutVolume(volp, READ_LOCK);
 
     /* If we did the InlineBulk RPC pull out the return code */
-    if (inlinebulk) {
+    if (inlinebulk && code == 0) {
 	if ((&statsp[0])->errorCode) {
 	    afs_Analyze(tcp, (&statsp[0])->errorCode, &adp->fid, areqp,
 			AFS_STATS_FS_RPCIDX_BULKSTATUS, SHARED_LOCK, NULL);