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);