]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
viced: SRXAFS_InlineBulkStatus set InterfaceVersion on error
authorJeffrey Altman <jaltman@auristor.com>
Fri, 11 May 2018 19:44:24 +0000 (15:44 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 8 Jun 2018 11:50:11 +0000 (07:50 -0400)
AFSFetchStatus.InterfaceVersion is required to be "1" for any
of the fields in the structure to be considered valid.  Therefore,
InterfaceVersion must be set to one when returning an 'errorCode'
value.

When RXAFS_InlineBulkStatus was introduced by OpenAFS in
362d26c733b086d26f013bd229af979a112098f5 not only wasn't
InterfaceVersion set but neither was the memory allocated
to OutStats initialized.  As a result the InterfaceVersion field
value could be not only zero but random.  The OutStats memory
was initialized to zeros beginning with
726e1e13ff93e2cc1ac21964dc8d906869e64406.

Reviewed-on: https://gerrit.openafs.org/13067
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit f045de21a45fcc8f71e2b30e826c22c8a7b4d0f2)

Change-Id: I0d15147081f6e8744680c16e43b22075070647e4
Reviewed-on: https://gerrit.openafs.org/13117
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/viced/afsfileprocs.c

index ea1164092eeb74b191de3ca3782f107e9dd6aa1b..6c7cad1ffffffa542322ddaa2f17d0b702ca66bb 100644 (file)
@@ -2753,6 +2753,7 @@ SRXAFS_InlineBulkStatus(struct rx_call * acall, struct AFSCBFids * Fids,
                              &rights, &anyrights))) {
            tstatus = &OutStats->AFSBulkStats_val[i];
 
+           tstatus->InterfaceVersion = 1;
            if (thost->z.hostFlags & HERRORTRANS) {
                tstatus->errorCode = sys_error_to_et(errorCode);
            } else {
@@ -2781,6 +2782,7 @@ SRXAFS_InlineBulkStatus(struct rx_call * acall, struct AFSCBFids * Fids,
                                        CHK_FETCHSTATUS, 0))) {
                tstatus = &OutStats->AFSBulkStats_val[i];
 
+               tstatus->InterfaceVersion = 1;
                if (thost->z.hostFlags & HERRORTRANS) {
                    tstatus->errorCode = sys_error_to_et(errorCode);
                } else {