7 years agoreadme: rename README.DEVEL to CODING
Michael Meffie [Mon, 31 Mar 2014 17:06:03 +0000]
readme: rename README.DEVEL to CODING

Rename the developer's readme file to CODING as a home
for developer related information.

Change-Id: I8c2cf70258671387b926ef3d666f6476056ef06e
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agomakefile: remove comment about washtool
Michael Meffie [Sun, 30 Mar 2014 12:11:00 +0000]
makefile: remove comment about washtool

Once upon a time, AFS used something called washtool as part
of the build system. Remove the remnant comment about it.

Change-Id: I566920b98c03d3cc65a6e2974a78a9247fd79842
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agolibafs: reduce stack space in VNOPS
Michael Meffie [Tue, 8 Apr 2014 20:10:36 +0000]
libafs: reduce stack space in VNOPS

Allocate temporary vrequests to reduce the amount
of stack space used.

Change-Id: Ic14cc4f657f7c7e97ef396601bd6c8c7f91abe55
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agolibafs: reduce stack space
Michael Meffie [Thu, 27 Mar 2014 23:36:29 +0000]
libafs: reduce stack space

Allocate temporary vrequests to reduce the amount
of stack space used.

Change-Id: I8c50a3af3028512003a02e46a2960b9b135213a5
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agolibafs: check afs_InitReq return code
Michael Meffie [Thu, 24 Apr 2014 19:27:38 +0000]
libafs: check afs_InitReq return code

Do not ignore the return code from afs_InitReq everywhere it is
called. If afs_InitReq fails, the vrequest could not be initialized
for some reason.

Change-Id: Ibae9f93c1e20a9fcae812f047da14106e6717454
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agoredhat: Use the right path to depmod
Stephan Wiesand [Wed, 7 May 2014 13:20:51 +0000]
redhat: Use the right path to depmod

As of Fedora 17 and RHEL 7, depmod has moved from /sbin to /usr/sbin.
The full path to depmod is used in package scripts and as a dependency.
This hasn't caused problems in most cases because on an installed
system a link /sbin -> /usr/sbin is present and during ordinary package
installations yum/rpm correctly then figure out that /sbin/depmod is
actually provided. But in other situations, the dependency check is not
that clever and (incorrectly) fails.

Add a macro to the spec defining the full path to depmod, use the macro
rather than plain /sbin/depmod throughout the spec, and also pass it to
kmodtool when required to generate the kmod package scripts and

FIXES 131860

Change-Id: I1f2e4f7100d244477c2cb9087d2f48bbcea27fdc
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: D Brashear <>

7 years agoOpenBSD: Add support for OpenBSD 5.4
Antoine Verheijen [Wed, 7 May 2014 20:57:26 +0000]
OpenBSD: Add support for OpenBSD 5.4

Add param header files and other config info to provide
support for OpenBSD 5.4.

Change-Id: I56d2e716bd7fa4dee699f8d190cb4b60bb0f67a8
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agoafs: Suppress duplicate message on Linux
Perry Ruiter [Mon, 31 Mar 2014 11:42:22 +0000]
afs: Suppress duplicate message on Linux

Update afs_util.c to call afs_warnall in places where afs_warn and
afs_warnuser are called back to back with identical parameters.

Change-Id: I529344dea12149d8f18ec38bb17418c703f7d26b
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agoafs: Define afs_warnall routine
Perry Ruiter [Sat, 22 Mar 2014 07:52:32 +0000]
afs: Define afs_warnall routine

In a Linux environment afs_warn and afs_warnuser both go to
the same spot, resulting in duplicated messages if both are
invoked back to back.  Define a new function afs_warnall
for use when identical messages are directed to both warn
and warnuser.  In a Linux environment it will do the right
thing and present only one copy of the message.

Change-Id: I1abdc63adc74fe5b08d3872d48698ec9dcc7a40c
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agoafs: restructure afs_warn and afs_warnuser
Perry Ruiter [Sat, 22 Mar 2014 06:31:21 +0000]
afs: restructure afs_warn and afs_warnuser

Restructure afs_warn.c to provide an afs_vwarn and afs_vwarnuser
that accepts a va_list rather than a variadic parameter
specification.  afs_warn and afs_warnuser continue to be
variadic functions but now call afs_vwarn and afs_vwarnuser.
This is a preparatory change.  A subsequent update will
further exploit afs_vwarn and afs_vwarnuser.

Change-Id: I8e740c4db311582bda6422e6600f1503dfbd0f5a
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agosolaris: help fs_conv_sol26 build cleanly
Chas Williams (CONTRACTOR) [Fri, 9 May 2014 17:25:55 +0000]
solaris: help fs_conv_sol26 build cleanly

handleit(), being static, should be declared before usage.

Change-Id: I5cf9767ed2fc552f7a22c7570d0a4d256a4111b1
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Michael Meffie <>
Reviewed-by: Perry Ruiter <>
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agovos: vos release -force-reclone option
Michael Meffie [Fri, 1 Feb 2013 22:46:45 +0000]
vos: vos release -force-reclone option

Add a new vos release option called -force-reclone to force the
reclone of the release clone and a release to all of the remote
sites, regardless of the state of the VLDB flags on the remote
sites, but does not force full volume dumps when distributing the

Provide an alias -f for -force for compatibility with the original
IBM vos, in case scripts were written to use the old '-f' option,
and for users with muscle memory.

Change-Id: I0ebebc5e8099299781e8da57579d91848bb2ad19
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: D Brashear <>

7 years agoNetBSD: update kernel module glue for NetBSD 6.99.x
Jonathan A. Kollasch [Thu, 17 Apr 2014 17:55:34 +0000]
NetBSD: update kernel module glue for NetBSD 6.99.x

Change-Id: I4fe5ccb33ec823a6df3a73e94247a0a42b970e57
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>

7 years agoRestrictedQuery feature
Gergely Risko [Wed, 19 Mar 2014 09:56:26 +0000]
RestrictedQuery feature

Make vlserver and volserver suppport a new command line parameter,
"-restricted_query admin".  When this is on, the query RPCs that
are not needed for normal cache manager operations are restricted
to administrators listed in UserList.  This is off by default.

Change-Id: I2a23a4e99cabd46b19ed491a6520773731a5994e
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>
Reviewed-by: Jeffrey Altman <>

7 years agouss: add missing include
Michael Meffie [Thu, 17 Apr 2014 13:31:18 +0000]
uss: add missing include

Fix a build error when configured with --enable-uss. The
added include defines the VolumeId which is needed by
the volser.h.

Change-Id: Ifbdaadf4de726ff1da54e93ba47124c5b5eb9cfb
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: Jeffrey Altman <>

7 years agoaklog: double get_credv5 in retry logic
Michael Meffie [Fri, 9 May 2014 15:43:35 +0000]
aklog: double get_credv5 in retry logic

Fix a bug where get_credv5() is called twice, even if the first one
succeeded, in the aklog retry logic.

(This bug uncovers another bug where get_credv5_akimpersonate
crashes in the krb5 libs when get_credv5 is called back to back.)

Change-Id: Ie6cac3b4522946c87c30ad3cd6939738234800bf
Reviewed-by: Benjamin Kaduk <>
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agodoc: Clarify some text
Andrew Deason [Tue, 15 Apr 2014 17:30:19 +0000]
doc: Clarify some text

It is not always clear to users whether is noticed
during an automatic restart, or if it requires stopping and starting
the bosserver. Slightly reword the relevant text and add a small note
that a "general restart" does cause to be noticed, so
this is explicitly clear.

Change-Id: Iab3eaff176305b0b2991a6636e70204b5072b1b0
Reviewed-by: Andrew Deason <>
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Restrict redir trace buffer to 10240KB
Jeffrey Altman [Wed, 14 May 2014 10:42:40 +0000]
Windows: Restrict redir trace buffer to 10240KB

Define macro AFS_DBG_LOG_MAXLENGTH to 10240 and then use it to
enforce the 10MB trace buffer limit.

Change-Id: I98b759d9f51d24d402bfdc56570c0f0de93926a0
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: Fix uninitialized variables
Rod Widdowson [Tue, 13 May 2014 01:50:48 +0000]
Windows: Fix uninitialized variables

VS2013 spotted two cases where we do not set up the
Iosb.Status when we catch an exception from Cc.
Fix them.

Change-Id: I93b8a48863f22fd1dc2d7dba4d9de18454f35fe0
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoLinux: Prevent some fakestat data inconsistencies
Marc Dionne [Fri, 2 May 2014 18:10:06 +0000]
Linux: Prevent some fakestat data inconsistencies

When fakestat is enabled for a mount point, the parent vcache
entry is not the right place to find the DataVersion of
the target volume root directory.  This can lead to data
inconsistency since the revalidation checks rely on the parent's
DataVersion to determine if a file entry is still valid.  If the
file was replaced or deleted remotely, the only callback we
get is for the parent directory, and in that case the client
will think the file entry is still valid and give back stale
data to the user.

If fakestat is enabled and we have a mountpoint, always use
the parent vcache pointer returned by FakeStat before using it
to either store (in the lookup and create ops) or compare
(in the revalidate op) the DataVersion.

FIXES 131855

Change-Id: I03c05c1dab39e663b74635700e80ba70861b1c2e
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agoWindows: cm_Analyze retries vs CM_REQ_NORETRY (2)
Jeffrey Altman [Thu, 8 May 2014 13:06:07 +0000]
Windows: cm_Analyze retries vs CM_REQ_NORETRY (2)

Commit a1b5a1d42280753de13094006dcc130fede978a1 left out a critical
part of the patch.  The check for "retry < 2" when determining whether
retries should be skipped due to CM_REQ_NORETRY.

Change-Id: I9b750e2bab11d28813447b2ee92287b8dcfbbba3
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agolibafs: fix lock leak during shutdown
Michael Meffie [Thu, 24 Apr 2014 17:40:06 +0000]
libafs: fix lock leak during shutdown

afs_getattr returns EIO when afs is in the process of shutting
down.  Be sure to unlock the locks taken before returning.
The bozon lock leak has been present since IBM AFS.

Change-Id: Id3e330c458996abf1519de6364060cc0b8828e6a
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Adjust Last Write time handling for -1
Rod Widdowson [Sun, 4 May 2014 18:33:11 +0000]
Windows: Adjust Last Write time handling for -1

The "what date/time gets changed when and by whom" in Windows is badly
defined, but all filesystems support the semantic that if a date is set
using a specific file object (or the timestamp is set to the magic number
then other changes provoked by that file object will be ignored.

AFS redirector timestamp handling does not support this behavior.
For the LastWrite timestamp (other timestamps are pretty much advisory and
maintained on a best effort basis) the timestamp would be updated by a
write operation even after -1 is set via the file handle.

This patchset implements the -1 behavior for LastWrite.  It also follows
the standard Windows practice of setting the LastWrite timestamp to be the
time of close of the handle that performed the write, not the time of the
write itself.

Finally, it should be noted that since RX*FS_StoreXXX operations update
the last write time on the server the client must restore the LastWrite
timestamp at handle close if -1 was specified.

Change-Id: Ica0c566fabb6b3046eb51f827402d622190daea8
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: RDR AFSSubtituteName invalid UNICODE_STRING
Jeffrey Altman [Tue, 21 Jan 2014 10:44:41 +0000]
Windows: RDR AFSSubtituteName invalid UNICODE_STRING

The 'ComponentName' parameter to AFSSubstituteName() is a UNICODE_STRING
pointer.  Its address should not be passed to AFSDbgTrace when used
in conjunction with a %wZ format.

Change-Id: I12ead951b1ae376e42da12b21e32f65e736375ab
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoFix buffer length validation in ktc_GetToken and knfs
Anders Kaseorg [Sun, 4 May 2014 09:30:25 +0000]
Fix buffer length validation in ktc_GetToken and knfs

The signed int tktLen is checked against a maximum size, then passed
as the unsigned size_t argument to memcpy.  So we need to make sure it
isn’t negative.

This doesn’t appear to be exploitable: tktLen comes from the kernel,
which should have previously validated the length within the SETTOK

This bug was found with STACK <>.

Change-Id: I781bd300cad3d725d3517e7f6ac9e6423c417087
Signed-off-by: Anders Kaseorg <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agodoc: recommend cleanup steps in "vos convertROtoRW" man page
Ken Dreyer [Wed, 6 Mar 2013 20:53:29 +0000]
doc: recommend cleanup steps in "vos convertROtoRW" man page

vos convertROtoRW leaves the older RW copy on the original fileserver,
although it is no longer in the VLDB. Provide the user with some hints
regarding clean up.

Change-Id: I5f6fcf7d5a516b59438d84e60f163a567d3a64fd
Reviewed-by: Ken Dreyer <>
Tested-by: Ken Dreyer <>

7 years agoFix typo in rfc3961 namespace-cleaning
Ben Kaduk [Mon, 9 Dec 2013 19:54:18 +0000]
Fix typo in rfc3961 namespace-cleaning

Change-Id: If93119ce4345ab8d1eccb9df7196b1681d2762cb
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agovol: Fix build with separate objdir
Benjamin Kaduk [Mon, 7 Apr 2014 21:55:09 +0000]
vol: Fix build with separate objdir

The volscan-main and volinfo-main source files are in the source
tree, not the object tree; refer to the objects in the Makefile
as dependencies, so that they will be picked up properly.  The
objects will be made just fine by the implicit .c.o rule.

Change-Id: Ieec4b32cfbe5d260e1560a08d4ed8162720f9222
Reviewed-by: Michael Meffie <>
Tested-by: Benjamin Kaduk <>
Reviewed-by: Jeffrey Altman <>

7 years agolinux: make reading unixusers from proc actually work
D Brashear [Tue, 22 Apr 2014 15:38:44 +0000]
linux: make reading unixusers from proc actually work

our indentation did not match our braces so we would never read all the
objects in each unixuser hash chain. add the missing braces

Change-Id: I001b55f0d43639124b06758095664a31e8230db6
Tested-by: BuildBot <>
Reviewed-by: Michael Meffie <>
Reviewed-by: D Brashear <>

7 years agoNetBSD: fix rx_kmutex's CV_WAIT_SIG macro
Jonathan A. Kollasch [Thu, 17 Apr 2014 17:48:30 +0000]
NetBSD: fix rx_kmutex's CV_WAIT_SIG macro

Change-Id: I6550f5c71bafe03290c1dbda545ff3feea01a805
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agoWindows: Deny writes/truncation to files w RO attr
Jeffrey Altman [Fri, 4 Apr 2014 20:42:36 +0000]
Windows: Deny writes/truncation to files w RO attr

If the readonly file attribute is set on a file, refuse to process
writes, truncations or overwrites.   The afsd_service will do so
and this can lead to data corruption.

At the same time, writes from the redirector to afsd_service must
not be denied because of the readonly attribute.  That check was
performed during the CreateFile.   Otherwise, a new file can be
created with the readonly attribute and then not be writable.

Change-Id: I921a11eb8c1a3e642d60c23fc905b3febc0f0761
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: NP Fail requests if AFSGetAuthenticationId fails
Jeffrey Altman [Wed, 12 Mar 2014 16:49:40 +0000]
Windows: NP Fail requests if AFSGetAuthenticationId fails

If during the processing of a network provider request the Logon
Session AuthenticationId is zero and the AFSGetAuthenticationId()
function is unable to obtain the current thread's AuthenticationId,
then fail the request.

Change-Id: If2aeba836d762f4f1b982d954fac720863a05c1f
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: Fix AFSSetBasicInfo attribute processing
Jeffrey Altman [Tue, 15 Apr 2014 16:19:21 +0000]
Windows: Fix AFSSetBasicInfo attribute processing

The prior behavior of AFSSetBasicInfo() was to let the caller
set whatever it wanted as the new file attributes regardless of
the attributes that are supported by AFS.  In doing so, reparse
point and directory attributes could be cleared, and other values
could be set even though they would be lost as soon as the
DirectoryCB object was garbage collected.

New behavior:

1. return STATUS_INVALID_PARAMETER if reparse point attribute
   would be altered

2. return STATUS_INVALID_PARAMETER if directory attribute would
   be altered.

3. successfully modify readonly attribute

4. ignore all other attribute values

Change-Id: Ic678960101ef99cdad0c0e84b21c9d65c6831ca8
Tested-by: BuildBot <>
Reviewed-by: Rod Widdowson <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Pin write position prior to defer
Rod Widdowson [Mon, 14 Apr 2014 20:50:36 +0000]
Windows: Pin write position prior to defer

If we extend the file prior to defrring the write *and* the write
is set up FILE_WRITE_TO_END_OF_FILE then we have to convert the
FILE_WRITE_TO_END_OF_FILE to an absolute position since we have
already moved the FCB->Header.FileSize.

Change-Id: Ibe1a5d616490a3db152818cbd6bb24d5af251c5f
Tested-by: BuildBot <>
Reviewed-by: Rod Widdowson <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: AFSCommonWrite add bWriteToEndOfFile var
Jeffrey Altman [Mon, 14 Apr 2014 20:48:32 +0000]
Windows: AFSCommonWrite add bWriteToEndOfFile var

To improve readability add a bWriteToEndOfFile variable which
stores the value of

  liStartingByte.LowPart == FILE_WRITE_TO_END_OF_FILE &&
  liStartingByte.HighPart == -1

Change-Id: I6594196a6c8c3ab41561ffdbd3eddf3d34b410de
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Do not defer Synchronous operations
Rod Widdowson [Mon, 14 Apr 2014 20:45:37 +0000]
Windows: Do not defer Synchronous operations

There is nothing to be gained by posting a synchronous write.
Let it hang out in CcCopyWrite until there is enough memory
unless the write became synchronous after a deferral in which
case it can be deferred again.

Introduce bWait variable which is set to the result of
IoIsSynchronousWrite( Irp).

This change is being introduced after further analysis of the
FastFat example.

Change-Id: I0942975a142b0413e52076ee94977401c1d00dc9
Tested-by: BuildBot <>
Reviewed-by: Rod Widdowson <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: No RO volume test SetFilePosInfo
Jeffrey Altman [Fri, 11 Apr 2014 14:22:45 +0000]
Windows: No RO volume test SetFilePosInfo

Setting the file position information on a file is not a data
changing operation.  Do not perform a readonly volume check.

Change-Id: I5dccff569b39187c2891d4339f18db8c54c029a7
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoFix rx_EndCall error precedence
Andrew Deason [Thu, 30 Jan 2014 19:50:11 +0000]
Fix rx_EndCall error precedence

Callers of rx_EndCall in various parts of the code handle errors a bit
differently from each other. The correct way to use rx_EndCall is
almost always some form of:

    code = rx_EndCall(call, code);

This will cause the call to abort with 'code' if the call is not
already aborted, and will return the abort code for the call (or 0 if
the call ended successfully). It is thus impossible for 'code' to
start out with a non-zero value in the code snippet above, and end up
with a value of 0 after the code snippet.

Most code follows this pattern, because this is how the
rxgen-generated client RPC wrappers are written. So for any non-split
Rx call, this is how the error precedence works.

However, some code (mostly for Rx split calls), needs to handle
calling rx_EndCall itself, and some code appears to think it is
possible for rx_EndCall to return 0 when we already had a non-zero
error. Such code tries to ensure that we don't ignore an error we
already got by doing something like this:

    code2 = rx_EndCall(call, code);
    if (code2 && !code) {
        code = code2;

However, this is not correct. If a call gets killed with an abort code
partway through executing an RPC, and the client tries to end the RPC
with e.g. EndRXAFS_FetchData, the client will get an error code of
-451 (RXGEN_CC_UNMARSHAL). The actual error code is in the abort code
for the call, but with the above 'code2' snippet, we can easily return
an error of -451 instead, which will usually get interpreted as some
unknown network-related error.

This can manifest as a problem in the unix client, where if a
FetchData call fails due to, for example, an "idle dead" timeout, we
should result with an error code of RX_CALL_TIMEOUT. But because of
the above issue, we'll instead yield an error of -451, causing the
server to be marked down with the following message:

    afs: Lost contact with file server ... (code -451) ...

So, fix most rx_EndCall callers to follow the 'code = rx_EndCall(call,
code);' pattern. Not all of the changes here are to "wrong" code, but
try to make all of the rx_EndCall call sites look more consistent.
There are a few exceptions to this pattern, which warrant some

 - A few instances in src/WINNT/afsd/cm_dcache.c do seem to want to
   record the original error before we ran rx_EndCall, instead of
   seeing the rx abort code. We still return the rx_EndCall-returned
   value to the caller, though.

 - Any caller of RXAFS_FetchData* needs to read a 'length' raw from
   the rx split stream. If this fails, we need to abort the call, but
   we don't really have an error code to give to rx_EndCall. Failure
   to read a length indicates that the server is not following
   protocol properly, so give rx_EndCall RX_PROTOCOL_ERROR in these
   instances. The call should already be aborted by this point, so
   most of the time this code will be ignored; it will only make a
   difference if the server tries to end the call successfully without
   sending a length, which is indeed a protocol error.

 - Some Rx clients can encounter a local error they don't want to send
   to the server via an abort, so they just end the call successfully,
   and only use the rx abort code if they don't already have a local
   error. This is in a few places like src/butc/dump.c and

 - Several places don't care what the error from rx_EndCall is, such
   as various call sites in server-side code.

The behavior of the Windows client w.r.t rx_EndCall was changed a bit
into its current behavior in commit
a50fa631cad6919d15721ac2c234ebbdda2b4031 (ticket 125018), which just
appears to be wrong. This was partially reverted by commit
ae7ef5f5b963a5c8ce4110a7352e0010cb6cdbc1 (ticket 125351), but some of
the other call sites were unchanged. The Unix client appears to have
been doing this incorrectly for at least FetchData calls since OpenAFS

To make it hopefully more clear that rx_EndCall cannot return 0 if
given a non-zero error code, add an assert to rx_EndCall that asserts
that fact.

FIXES 127001

Change-Id: I10bbfe82b55b509e1930abb6c568edb1efd9fd2f
Reviewed-by: D Brashear <>
Tested-by: BuildBot <>

7 years agoMerge branch 'security-master' into HEAD 99/10999/1
Simon Wilkinson [Wed, 9 Apr 2014 13:10:09 +0000]
Merge branch 'security-master' into HEAD

Merge fix for OpenAFS-SA-2014-001 into master, along with the fix
for the RX denial of service issue.

Change-Id: I499e7202c9278d21f2d8628d497755e6c593abb2

7 years agoreadme: remove ancient build notes
Michael Meffie [Mon, 31 Mar 2014 16:59:59 +0000]
readme: remove ancient build notes

Remove the ancient and unmantained src/BUILDNOTES readme file.

Change-Id: I652fded2526dbe97f6f87ef7263a2b39038486d5
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agoafs: Raise fake free space reporting
Andrew Deason [Wed, 27 Mar 2013 23:12:41 +0000]
afs: Raise fake free space reporting

We report 'fake' values for free space, free file nodes, etc for the
'AFS' filesystem, since these values are not meaningful for AFS
itself. Currently we report about 9G of free space for most platforms,
and a few different values for a few others. Raise all of these to
2^32-1, so that trying to copy over 9G of data into AFS does not fail
for those applications that check the destination free space with
statfs(2). Note that one such application is KDE 4.8.x.

Consolidate all places that do this, and put the 'fake' value in one
place, AFS_VFS_FAKEFREE, along with the relevant comments.

Related issues reported by Lars Schimmer, Richard Brittain, and

Change-Id: Ia15175da32744e11f62489c29bedfe1f5560d2b4
Reviewed-by: Andrew Deason <>
Tested-by: BuildBot <>
Reviewed-by: Markus Koeberl <>
Tested-by: Markus Koeberl <>
Reviewed-by: D Brashear <>

7 years agorx: Remove rx_waitingForPacket
Chas Williams (CONTRACTOR) [Thu, 3 Apr 2014 18:12:38 +0000]
rx: Remove rx_waitingForPacket

Commit f43c2f4412d670ce1131dc429cb43302352df3e4 introduced
rx_waitingForPacket.  Given its current usage, I can't see any

It looks like this might have been the result of merging a renamed
rx_waitForPacket from another development branch?

Change-Id: I47fc7a2b25cbfcd59ea4ad1606b734bb9d4ceecc
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agopts: Don't assume that pr_IdToName() was successful
Chas Williams (CONTRACTOR) [Wed, 26 Mar 2014 14:25:13 +0000]
pts: Don't assume that pr_IdToName() was successful

If pr_IdToName fails for some reason, tnames won't be available.

Change-Id: I5270ba0ecf3cfad9bfb909c97b27473d96ca1307
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Michael Meffie <>
Reviewed-by: D Brashear <>

7 years agoptserver: Optionally restrict anonymous access to the ptserver
Chas Williams (CONTRACTOR) [Wed, 26 Mar 2014 14:15:10 +0000]
ptserver: Optionally restrict anonymous access to the ptserver

Currently, one could simply query from 0 to 'pts listmax' to determine
all the usernames in a cell.  The -restrict_anonymous option will block
access to almost all of the unauthenticated RPC's.   PR_NameToID is still
open since aklog still needs access to this RPC.  An "attack" against
this RPC would have to scan a much larger key space to determine valid
usernames in a cell.

Change-Id: I7e475bc004f08d28d195c199804befa89f0ceb0c
Tested-by: BuildBot <>
Reviewed-by: Gergely Risko <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: D Brashear <>

7 years agoafs/VNOPS: reduce stack usage
Chas Williams (CONTRACTOR) [Fri, 28 Mar 2014 20:46:32 +0000]
afs/VNOPS: reduce stack usage

AFSFetchStatus is rather large and is in the stack twice.  Allocating with
osi_AllocSmallSpace will save about 160 bytes of stack.

Change-Id: I13ac31814d9d5975f245ba8c66a7befac471503e
Reviewed-by: Benjamin Kaduk <>
Tested-by: Benjamin Kaduk <>
Reviewed-by: D Brashear <>

7 years agoviced: fix get-statistics64 buffer overflow 98/10998/1
Michael Meffie [Sat, 15 Feb 2014 17:03:43 +0000]
viced: fix get-statistics64 buffer overflow

Range check the statsVersion argument of the GetStatisitics64 RPC to
avoid a buffer overflow in the fileserver, or a huge memory allocation,
by a rogue client.

FIXES 131803

Change-Id: Ib084ca28cbe350d846fa5978d489e523aaae299b

7 years agorx: Avoid rxi_Delay on RXS_CheckResponse failure 97/10997/1
Andrew Deason [Fri, 21 Feb 2014 21:30:49 +0000]
rx: Avoid rxi_Delay on RXS_CheckResponse failure

Currently we rxi_Delay whenever RXS_CheckResponse fails for any
reason. This can result in disastrous performance degradations if a
client keeps sending "bad" responses, since rxi_Delay'ing here will
delay the Rx listener thread. This means we cannot receive any packets
for about a second, which can easily cause us to drop a lot of
incoming packets.

Instead, send the abort after 1 second by scheduling an event. This
will retain existing behavior from the point of view of the client
(it will get the abort after 1 second), but avoids hanging the Rx
listener thread.

FIXES 131802

Change-Id: Id8f9fc46902ae3cf019dd0ece0a96133b9b9d07c

7 years agorx: Split out rxi_SendConnectionAbortLater 96/10996/1
Andrew Deason [Fri, 21 Feb 2014 21:26:35 +0000]
rx: Split out rxi_SendConnectionAbortLater

Take the functionality in rxi_SendConnectionAbort that schedules a
delayed abort, and split it out into a new function,
rxi_SendConnectionAbortLater. This allows callers an easy interface to
send such a delayed abort with their own delay.

This commit should incur no change in behavior; it is just code

Change-Id: I6503cf6ebb3e664d95b8792f2311ea14ee63c11d

7 years agoDisable kauth by default
Benjamin Kaduk [Fri, 28 Mar 2014 13:19:30 +0000]
Disable kauth by default

We should actively be discouraging the use of the kaserver and related

The src/kauth/ directory will still be compiled, just not installed.
(If we stopped compiling it, it would likely bitrot very quickly so
as to become unbuildable, and having it still build seems a reasonable
goal given our obligations with respect to compatibility with IBM
AFS for the use of the AFS name.)

Change-Id: Ib710af3e177223d85cd9c6099ce75e700b6a2958
Tested-by: BuildBot <>
Reviewed-by: Michael Meffie <>
Reviewed-by: Jeffrey Altman <>

7 years agovolser: fix spurious strcat of volume extension.
Michael Meffie [Fri, 28 Mar 2014 16:08:46 +0000]
volser: fix spurious strcat of volume extension.

Fix malformed merge error left over from
commit 4f9ec8396d1c7f12f8fa264cea7c255ce62b7b8d
where we converted strcat to strlcat.

Change-Id: Ibae3e09c8a659f4b084256b18ee5774f11fe9f8f
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>

7 years agoviced: disable hot threads
Michael Meffie [Thu, 27 Mar 2014 08:24:16 +0000]
viced: disable hot threads

Turn off the rx hot threads feature in the file server.  This feature
was an old optimization intended to reduce context switching, however
generally makes performance worse on modern hardware.

Performance improvements from disabling hot threads was identified by
Simon Wilkinson (YFS) at the European AFS and Kerberos Conference (EAKC)
2014 at CERN.

Change-Id: Id3053a61ebdb2d49d2bf36ebe07a35cc07b5d65c
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: D Brashear <>

7 years agodoc: bos setrestricted -mode 0 does make sense
Stephan Wiesand [Wed, 12 Mar 2014 09:47:17 +0000]
doc: bos setrestricted -mode 0 does make sense

Commit 070230ab76e1df338db3f2a7971111ca976a0c1a added documentation of
the mode parameter to bos setrestricted, claiming that the value 0 is
useless, and commit eee0bf5871944d919951cc8b7b4908ee909c3b62 added
documentation of the restrictmode entry in BosConfig, claiming that it
can only be set back to 0 with an editor. Both claims are wrong, since
bos setrestricted -mode 0 will do exactly that (if it succeeds, which
it only can if the server is running in unrestricted mode, which can
be achieved by sending it the FPE signal). Fix the man pages

Change-Id: I07b75f7d0cea2e247fa4f346121de258e35119f5
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Andrew Deason <>
Reviewed-by: Michael Meffie <>
Reviewed-by: D Brashear <>

7 years agoviced: Restore some previous log message language
Andrew Deason [Wed, 26 Feb 2014 17:42:16 +0000]
viced: Restore some previous log message language

Before commit 6c41b1f740e16b5b9adfe9026630595be6f0699e, we logged
these three messages in the fileserver in different situations:

  CallPreamble: Couldn't get client.
  CallPreamble: Couldn't get CPS. Fail
  CallPreamble: couldn't reconnect to ptserver

After commits 6c41b1f740e16b5b9adfe9026630595be6f0699e and
0a5e878aa0a71c4dfaef1806744ed78bcc13b9f4, these messages were changed
to contain more useful information, but the language was also changed.
The messages now look like:

  Client host too busy while handling request from host %s:%d viceid %d fid %lu.%lu.%lu, failing request
  Cannot get CPS for client while handling request [...], failing request
  Cannot reconnect to ptserver while handling request [...], failing request

While the new messages are more informative, and (in my opinion)
better describe what is happening in those situations, they do look
very different from the old messages. This can break scripts that try
to parse these logs, but in general it is also not clear to
administrators that these messages still refer to the same events.

So instead, put these messages back the way they were. Still include
the extra information, of course, but revert the language to look more
like the old messages. Now we log:

  CallPreamble: Couldn't get client while handling request from host %s:%d viceid %d fid %lu.%lu.%lu, failing request
  CallPreamble: Couldn't get CPS while handling request [...], failing request
  CallPreamble: couldn't reconnect to ptserver while handling request [...], failing request

Thanks to Ben Kaduk for bringing this up.

Change-Id: Ie2389fb598640d79f0f0725c3161c7af7924ffb4
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Andrew Deason <>
Tested-by: D Brashear <>
Reviewed-by: D Brashear <>

7 years agodoc: volscan man page
Michael Meffie [Thu, 13 Mar 2014 16:40:17 +0000]
doc: volscan man page

Provide a man page for the volscan utility

Change-Id: Ibaecb2b9030ee71d81f13b897694c4cf3b4b9516
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agovolinfo: separate volscan binary
Michael Meffie [Wed, 12 Mar 2014 19:15:32 +0000]
volinfo: separate volscan binary

Refactor vol-info.c into several files and change the makefile to
build a separate volscan binary, instead of using the program name
to determine if the user is running volinfo or volscan.

This commit adds new source files for the volinfo and volscan main()
function and a common header file.

Change-Id: I53a2a503812237a850170c39c81ee3fb56c8282e
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agovolinfo: refactor global options
Michael Meffie [Wed, 12 Mar 2014 13:37:59 +0000]
volinfo: refactor global options

Move the global options to a structure and pass it to the vol-info
functions. This is a precursor for creating separate volinfo and
volscan programs.

Change-Id: I86ea9e875f73831e6c7ea4b50591e31df3e0c39f
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agovolscan: hide -mask option
Michael Meffie [Sat, 15 Mar 2014 15:04:31 +0000]
volscan: hide -mask option

The -mask option is unneccessary and sets a bad precedent, so
deprecate and hide this option. The vnodes of interest can be found
can be found easily and much more flexibly with a simple command

Change-Id: Ibe75928c6b041d135c0cb5867228947cd7f4e889
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agovolscan: avoid printing null mount-point cellname
Michael Meffie [Wed, 4 Sep 2013 19:10:16 +0000]
volscan: avoid printing null mount-point cellname

The 'mcell' field is null when there is no cell set in the mount point,
so do not try to print it.

Change-Id: I363310665313f7bbcca783a4d9be87aaa7b0a8fe
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agoaklog: those pesky assignments in conditionals
Benjamin Kaduk [Thu, 6 Feb 2014 22:34:21 +0000]
aklog: those pesky assignments in conditionals

This one should actually be an assignment, and the compiler warning
for having two sets of parentheses is helpful.

Found by clang on FreeBSD 10.0.

Change-Id: Ic906cbdc50a20bcd0b91555581b60c518da2bc81
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: D Brashear <>

7 years agopioctl.c: removed unused variable
Benjamin Kaduk [Thu, 6 Feb 2014 21:11:49 +0000]
pioctl.c: removed unused variable

The 'rval' variable is only actually used in the LINUX20 case;
adding another conditional block is making the LINUX20 case
different enough that it should get split out entirely.
Doing so lets the 'else' clause be simpler.

Found by clang on FreeBSD 10.0.

Change-Id: I60c56af355fdb68752d9596ff2cd7a4259b43fe9
Tested-by: Benjamin Kaduk <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: D Brashear <>

7 years agofs: display cell not available on ESRCH
Michael Meffie [Fri, 7 Feb 2014 14:55:31 +0000]
fs: display cell not available on ESRCH

The cache manager pioctls abuse ESRCH to represent errors due to
unavailable cell information.  Give a more sensible error message to
the user when a pioctl returns an ESRCH error, instead of "no such
process", which is the conventional meaning of ESRCH.

The new error message is consistent with the Windows implementation
of fs.

For example, on a host with a misconfigured ThisCell and/or CellServDB.

    $ fs wscell
    fs: No such process


    $ fs wscell
    fs: Cell name not recognized.

Change-Id: Ibdcb0957118205b9540cae07b3cafa65c51ff497
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agolibafs: allow bkg daemon requests without creds
Michael Meffie [Thu, 6 Mar 2014 15:50:56 +0000]
libafs: allow bkg daemon requests without creds

Make the creds argument optional for background daemon
requests which do not need to pass a cred.

Change-Id: Ic4ac69d746e8a84993069e37bdd0440622febd70
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agolibafs: afs_SetupVolSlot function
Michael Meffie [Sat, 8 Mar 2014 19:30:27 +0000]
libafs: afs_SetupVolSlot function

Move the code block to get and setup volume slots out of
afs_SetupVolume to a new local function called afs_SetupVolSlot.
This new function acquires the afs_xvolume lock and releases it
before returning.

Change-Id: I1bd33f13e0525f9ff050d7e161cf29a511e5c4b8
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agolibafs: put volume disk cache i/o in afs_UFSGetVolSlot
Michael Meffie [Sat, 8 Mar 2014 17:35:23 +0000]
libafs: put volume disk cache i/o in afs_UFSGetVolSlot

Move the reading of the volume items file to the afs_UFSGetVolSlot()
to make it more clear the volume items file is not accessed when
memcache is in effect.

This changes the afs_GetVolSlot to return an intialized volume slot,
if one can be gotten.

Change-Id: I0c76ca8c8e1cc19677ce950bfb454755bbbee86a
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agolibafs: afs_InitVolSlot function
Michael Meffie [Sat, 8 Mar 2014 16:41:26 +0000]
libafs: afs_InitVolSlot function

Add a new local function to initialize newly gotten volume slots and
move that code out of afs_SetupVolume().  Initialize the slot before
putting the volume in the volume hash table list.

Make it more clear to avoid using record 0. The volume items record 0 is
not used, so avoid setting the tf pointer to the static fvolume buffer
when reading record 0.

Change-Id: Iffba52fbf8d72459c9a36015964e61d485f22ad4
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agocompile_et macros to generate source and headers separately
Michael Meffie [Sat, 1 Mar 2014 19:52:48 +0000]
compile_et macros to generate source and headers separately

Common makefile macros to generate headers and source files
separately using the new compile_et -emit option.

Change-Id: I5848922fbe1d94f9d3cec829a3ed657e7f63d191
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agoLinux: Do drop dentry if lookup returns ENOENT
Marc Dionne [Wed, 19 Mar 2014 15:15:13 +0000]
Linux: Do drop dentry if lookup returns ENOENT

Commit 997f7fce437787a45ae0584beaae43affbd37cce switched to using
d_invalidate instead of d_drop to prevent unhashing dentries
which are only temporarily invalid and may still be referenced
by someone having a current working directory pointing to it.
This could result in getting ENOENT from getcwd() after some
transient problems, even when the directory is there and

The change had the side effect of potentially leaving something
visible when it has actually been removed, for instance a mountpoint
removed by "fs rm".

If afs_lookup returns ENOENT, we want to forcibly drop (unhash)
the dentry, even if it has current users.

Change-Id: I0e7b6e09b2c4ae551fa6c84235ed31f7df476b45
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agobcrypt keys are in the rxkad list, not the rxgk list
Benjamin Kaduk [Sat, 22 Mar 2014 19:28:46 +0000]
bcrypt keys are in the rxkad list, not the rxgk list

Fix the presumed typo in the loop intended to skip them.

Change-Id: I863fb12792b82d528938ad0598aa626880f11a41
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>

7 years agovlserver: Add auditing to some more RPC's
Chas Williams (CONTRACTOR) [Fri, 21 Mar 2014 20:33:36 +0000]
vlserver: Add auditing to some more RPC's

A future commit will conditionally restrict access to these RPC's.
Auditing will allow debugging and monitoring of this feature.

Change-Id: Id8a8a1831c82ef967eb6cced1609915d1d6b774f
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>

7 years agovolser: remove commented code
Chas Williams (CONTRACTOR) [Fri, 21 Mar 2014 18:35:46 +0000]
volser: remove commented code

Apparently this predates AFS 3.0 so it should be safe to remove.

Change-Id: Ifec145c71da4668066bf428fb594943dfce20e88
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agovos: GetServer search for non-loopback address
Jeffrey Altman [Sun, 15 Dec 2013 00:38:50 +0000]
vos: GetServer search for non-loopback address

GetServer() is used to obtain an IP address for the 'aname' parameter.
'aname' can be either a dotted address or a host name.   If it is a dotted
address, it is returned immediately.  If it is a host name, then
gethostbyname() is used to obtain an IP address.

The prior version of this function had two failings:

1. It assumed that a struct hostent only contained a single address.
   It used the former h_addr field.  For all platforms supported by
   OpenAFS h_addr is a macro referencing the first address in the
   h_addr_list array.  If h_addr was a loopback address, it would
   ignore any additional addresses that might be in the list.

2. It assumed that if gethostbyname(aname) returned a loopback
   address as h_addr that 'aname' must be referring to the machine
   that the vos command is being executed on.  It therefore used
   gethostname() to obtain an alternate name to use for a gethostbyname()
   query.  The results of this query were not checked to be a loopback.
   As a result, a loopback address could be returned to the caller which
   in turn could be set into the VLDB.

Change-Id: Ib8d513be9daf650045e9c40718b0187f6b9770a2
Reviewed-by: D Brashear <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Harald Barth <>
Tested-by: BuildBot <>

7 years agolibadmin: add missing bubasics dependency
Michael Meffie [Sun, 19 Jan 2014 04:03:44 +0000]
libadmin: add missing bubasics dependency

bubasics is a dependency of libadmin. Add it to the top level

This missing dependency was found by analyzing the libadmin header
file includes.

Change-Id: I300669387cea95a0fe800cffb4024356641591e6
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agolibafs: reset global icl set pointers on shutdown
Michael Meffie [Tue, 11 Mar 2014 16:40:33 +0000]
libafs: reset global icl set pointers on shutdown

Avoid panicking when an icl tracing function is called after

There is a window during shutdown in which pioctls can be requested
after the shutdown_icl is issued. Reset the global icl set pointers
so tracing is disabled after the shutdown_icl, instead of using
pointers to freed memory.

Removed the unneeded afs_icl_FindSet calls and use the global
pointers which were set during the initialization.

Change-Id: I3310868a28850236a2870b8dab858ecb7a815c11
Tested-by: BuildBot <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: D Brashear <>

7 years agoMake struct CallBack indentation uniform again
Benjamin Kaduk [Wed, 19 Mar 2014 16:16:48 +0000]
Make struct CallBack indentation uniform again

Align the per-field comments.

Change-Id: Ic9da32851c518b29e110fb80428a1f261bbd9cbf
Tested-by: BuildBot <>
Reviewed-by: Stephan Wiesand <>
Reviewed-by: Jeffrey Altman <>

7 years agovolser: use also vn_length_hi in dump size calculation
Hartmut Reuter [Mon, 10 Mar 2014 16:21:21 +0000]
volser: use also vn_length_hi in dump size calculation

Only the low order 32 bits of the file length were used.
Now using macro VNDISK_GET_LEN instead of direct FillInt64.

FIXES 131819

Change-Id: Iaecd68764f4b071d6b8c838362e7e657578d9b2f
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agodoc: fix typo in volinfo man page
Michael Meffie [Sat, 15 Mar 2014 15:31:27 +0000]
doc: fix typo in volinfo man page

Change-Id: I46e13bb879206fb561fe0f0d99a6ed412ab64629
Reviewed-by: Ken Dreyer <>
Tested-by: Ken Dreyer <>

7 years agolibafs: DARWIN: update for Xcode 5.1
Benjamin Kaduk [Fri, 14 Mar 2014 15:13:15 +0000]
libafs: DARWIN: update for Xcode 5.1

(1) remove -mlong-branch from amd64 build

Random internet postings suggest that it has triggered a warning
since at least Xcode 3.2, and the gcc manual page suggests that
it is only applicable on ppc, anyway.

(2) remove -mpreferred-stack-boundary=4 from the amd64 build

The evidence here shows up less readily in an internet search,
but it seems that Apple's compilers will force the stack alignment
to 16 bytes regardless of what is passed here.  One poster had
trouble with -mpreferred-stack-boundary being unused in Xcode 4.4.1

This change only fixes warnings reported as errors by buildbot; it
does not attempt to fully synchronize with the flags that Xcode 5.1
uses for kernel module builds.

Change-Id: Iac1fcf3cdb5ab847a04278d1c05761bd371828e2
Tested-by: BuildBot <>
Reviewed-by: D Brashear <>

7 years agoDo not use garbage-collection for DARWIN ObjC apps
Benjamin Kaduk [Thu, 13 Mar 2014 20:37:10 +0000]
Do not use garbage-collection for DARWIN ObjC apps

Xcode 5.1 does not support this feature.

Change-Id: I30457ae73f867637ab154b94d4a6c57089d9b48d
Reviewed-by: D Brashear <>
Tested-by: D Brashear <>

7 years agoUse correct include guard for vol_prototypes.h
Benjamin Kaduk [Thu, 13 Mar 2014 19:33:44 +0000]
Use correct include guard for vol_prototypes.h

Correct the case of the 'h'.

Change-Id: Ib78cbff02ac881aa54c46832db94094f7a74ff5f
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoRemove static const char copyright[]
Benjamin Kaduk [Thu, 13 Mar 2014 19:30:42 +0000]
Remove static const char copyright[]

We do not have copyright strings in our other executables for the other
copyright statements applicable to them, so these are rather exceptional.
They also cause build failures with OS X Xcode 5.1 and --enable-checking .

Change-Id: I0ead56387f77459a49093ff66fdea9c033f02f5a
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoopr: removed the unused static_inline initnode
Benjamin Kaduk [Thu, 13 Mar 2014 19:27:16 +0000]
opr: removed the unused static_inline initnode

This was included in the initial rbtree import, but is not used.

clang from OS X's Xcode 5.1 now warns about this unused function,
which is an error with --enable-checking .

Change-Id: I896504e83be317394418a7cc1b3f518e675fbb5b
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: Platform specific MIDL output
Jeffrey Altman [Sun, 16 Mar 2014 19:41:45 +0000]
Windows: Platform specific MIDL output

Add $(CPU) to the MIDL generated _c.c and _s.c output files
to prevent conflicts.

Change-Id: Ie10c85fa0b9cab19b107b44c2cf452925b8ee521
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: XP do not mark rdr devices as secure
Jeffrey Altman [Sat, 15 Mar 2014 16:44:09 +0000]
Windows: XP do not mark rdr devices as secure

Commit 9174531dca75f1f2d235ed806f784422792c3ab2 introduced the use
of device characteristics (secure and remote) to the IoCreateDevice()
and IoCreateDeviceSecure() calls for the AFSRedirector device objects.

After this change end users began to report problems on 32-bit Windows
XP SP3 when the initial access to the AFS redirector was performed by
a Limited Access Account.

This patchset conditionalizes the specification of the secure device
characteristic when registering the redirector with MUP on 32-bit
Windows XP.

Change-Id: I0fb9671b8a05a841f2356d100e7031c961a7c482
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: NP AFSGetConnectionInfo AuthId == 0
Jeffrey Altman [Wed, 12 Mar 2014 16:41:45 +0000]
Windows: NP AFSGetConnectionInfo AuthId == 0

During the processing of a network provider GetConnectionInfo request
if the provided Authentication Logon Session Id is zero, the redirector
should attempt to obtain the Logon Session Id in kernel.  This was
not performed within AFSGetConnectionInfo().

Change-Id: Ia060abfdebc17e52eefac24ac9dc19a7d6434314
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: NP AFSGetConnection retrieve AuthId sooner
Jeffrey Altman [Wed, 12 Mar 2014 16:39:59 +0000]
Windows: NP AFSGetConnection retrieve AuthId sooner

When processing a network provider GetConnection requestion obtain
the Authentication Logon Session Id earlier in the function so that
it can be logged as part of subsequent trace messages.

Change-Id: Ifef7d2da44e0266683b93bc76f25ee825294062c
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: AFSShareWrite do not assign pFcb too soon
Jeffrey Altman [Mon, 10 Feb 2014 10:13:37 +0000]
Windows: AFSShareWrite do not assign pFcb too soon

In AFSShareWrite the value of pFcb is used to determine whether
or not the pfcb->NPFcb->Resource must be released upon exit.
Therefore, it must not be assigned a value until just before the
resource is acquired.

Change-Id: I6951d91fcf672c8d236d19e075fff0be3552c9b8
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agobozo: remove obsolete bnode_Deactivate() prototype
Stephan Wiesand [Fri, 28 Feb 2014 17:47:12 +0000]
bozo: remove obsolete bnode_Deactivate() prototype

Commit 54eb2485b59550ba42569ed3a8d76211a3a35019 removed the
implementation of bnode_Deactivate(), which had been #ifdef'd out
for a long time, but left the prototype in place. Remove the
obsolete declaration in bosprototypes.h as well.

Change-Id: I323a3f945fcab97d7c4db191192d3ef11482d64e
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>

7 years agodoc: improve man pages related to bos restricted mode
Stephan Wiesand [Fri, 7 Mar 2014 10:03:36 +0000]
doc: improve man pages related to bos restricted mode

Mention the restrictmode entry and the commands for setting and
querying it in the BosConfig man page, and add/fix cross references
between the BosConfig, bos, bos_getrestricted and bos_setrestricted

Change-Id: I938ef4c43c1a248335f09975c454b36f7570782c
Reviewed-by: Ken Dreyer <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agocellconfig: move memcpy outside loop
Perry Ruiter [Thu, 6 Mar 2014 05:53:16 +0000]
cellconfig: move memcpy outside loop

memcpy only needs to be done once prior to each entry into loop,
so move it outside the loop.

Change-Id: I68c09b240756f830b1a4dc9b8a338916f91cd7b2
Reviewed-by: Stephan Wiesand <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Michael Meffie <>
Tested-by: Michael Meffie <>
Reviewed-by: Jeffrey Altman <>

7 years agodoc: fix typo on ka-forwarder man page
Michael Meffie [Thu, 6 Mar 2014 16:42:52 +0000]
doc: fix typo on ka-forwarder man page

Change-Id: I9cedc1ee2c3fac249ad5b2c66c5e0eef6d5d570c
Reviewed-by: Stephan Wiesand <>
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: cm_ForceNewConnections serverp == NULL
Jeffrey Altman [Mon, 17 Feb 2014 06:12:37 +0000]
Windows: cm_ForceNewConnections serverp == NULL

If serverp == NULL, return immediately.  Do not dereference a NULL

Change-Id: I47781a03f22a83289a23b30ff375249fec18ff51
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>

7 years agoredhat: don't package kpasswd
Stephan Wiesand [Thu, 21 Nov 2013 09:44:05 +0000]
redhat: don't package kpasswd

While kpasswd was in the separate openafs-kpasswd package to avoid
clashing with the krb5 executable, openafs-debuginfo still conflicted
with krb5-debuginfo.

Don't package kpasswd at all. Package the renamed executable, kapasswd,
in openafs-kpasswd instead of openafs, together with the renamed man
page. Once we're here, provide the man page for the other executable in
there too.

FIXES 131771

Change-Id: I0d7af82072847a19f0e1ce34dbeeb34623d2ef38
Tested-by: BuildBot <>
Reviewed-by: Ken Dreyer <>
Reviewed-by: D Brashear <>

7 years agodoc: Document dependencies required for building everything
Garrett Wollman [Fri, 14 Feb 2014 04:03:59 +0000]
doc: Document dependencies required for building everything

Add a new section to README.DEVEL that describes the packages required
to build everything (including all optional code like the FUSE-based
user-mode client).  Start with what I figured out for FreeBSD (tested
on a clean 10.0 install) and what Russ Allbery described on the
openafs-devel list in

Change-Id: Ib90cd653a822f8699df613aabdd3442edc10c98a
Reviewed-by: Ken Dreyer <>
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoafs_fetchstore: re-avoid uninitialized variable
Benjamin Kaduk [Wed, 5 Feb 2014 23:32:16 +0000]
afs_fetchstore: re-avoid uninitialized variable

As noted in the gerrit comments for change 10742, commit
baf6af8a8f2207ce39b746d59ca4bc661c002883 does not handle the case
where the second rx_Read() call fails, and the 'length' variable
can still be used uninitialized.

Instead of using an err label and jumping to it on the case of
errors, initialize length to zero and take care to neither
set nor access *alength if an error has occurred.  This is
more consistent with the style of the surrounding code while still
avoiding the use of an uninitialized variable.

Change-Id: I6abfa4a5f051368ca12ada1494fc7687f378d319
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agofstrace: only declare 'rval' when it is used
Benjamin Kaduk [Thu, 6 Feb 2014 22:27:28 +0000]
fstrace: only declare 'rval' when it is used

... to avoid compiler warnings about unused variables.

Found by clang on FreeBSD 10.0.

Change-Id: I30c9fbc0e2fb0f9af273f0f17861009b6d0577df
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>

7 years agoFBSD: Switch the dummy 'data' for mount(2)
Benjamin Kaduk [Thu, 6 Feb 2014 22:01:19 +0000]
FBSD: Switch the dummy 'data' for mount(2)

The mount(2) API takes a void*, but 'rn' is const char*, which
is const-incorrect.  Our vfs_cmount implementation ignores the 'data'
parameter, but upstream's kernel mount(2) implementation did
have a NULL check until r158611 (in the 6.1 or 7.0 timeframe),
so leave that comment for now.

Arguably we should be using nmount(2) instead of mount(2) anyway,
but leave that for a separate patch.

Change-Id: I22fd85c2f1a32aa849e182d263de119a953690d2
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agopointers are not castable to unsigned int
Benjamin Kaduk [Thu, 6 Feb 2014 21:22:49 +0000]
pointers are not castable to unsigned int

When printing a pointer's value for debugging purposes, use the
dedicated printf format specifier for pointers instead of assuming
that unsigned int ('x') is good enough.

Found by clang on FreeBSD 10.0.

Change-Id: I18c42df0bf03c2d0e9e7c757445b8ff0f616c671
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>

7 years agoSatisfy clang's aggressive strlcpy warnings
Benjamin Kaduk [Thu, 6 Feb 2014 20:52:49 +0000]
Satisfy clang's aggressive strlcpy warnings

Passing something related to the length of the source as the
length argument to strlcpy triggers a warning, which is converted
to an error with --enable-checking (on FreeBSD 10.0).  The current
code is safe, since it is using the same expression that was used
to allocate the destination buffer, but switch to using a separate
variable to hold the length and use that variable for both allocation
and copying, to appease the compiler.

Change-Id: I580083d142fd19a4e7828c915b4846868fa8f917
Tested-by: BuildBot <>
Reviewed-by: Perry Ruiter <>
Reviewed-by: Jeffrey Altman <>

7 years agoRemove unneeded inclusion of <sys/timeb.h>
Benjamin Kaduk [Thu, 6 Feb 2014 20:52:42 +0000]
Remove unneeded inclusion of <sys/timeb.h>

This file is deprecated on FreeBSD, and is not used anywhere.

Change-Id: If10816f26da91855d10826d53501e5b9974cd292
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: cm_GetCell_gen Fixup cm_server cellp on race
Jeffrey Altman [Thu, 23 Jan 2014 03:17:56 +0000]
Windows: cm_GetCell_gen Fixup cm_server cellp on race

If a race occurs during the instantiation of a new cm_cell_t object,
the created servers will point at the wrong cm_cell_t object after
the race is detected.  Before cm_GetCell_gen completes the cm_server_t
objects must be fixed to point to the correct cm_cell_t.

Change-Id: I8341c2cfd2a8ac7be31699d11f78b4b9ced257af
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>