libafs: afs_CacheFetchProc can't be called without a dcache pointer
authorGarrett Wollman <wollman@csail.mit.edu>
Tue, 9 Aug 2011 04:28:27 +0000 (00:28 -0400)
committerDerrick Brashear <shadow@dementix.org>
Tue, 31 Jul 2012 12:37:53 +0000 (05:37 -0700)
An inspection of the only call site suggests that afs_CacheFetchProc()
can't be called with a null dcache pointer, and code further down
in this function dereferences adc unconditionally (assuming
rxfs_fetchInit() doesn't crash first) so remove the conditional
here.

Probably more of these parameters can and should be included in the
AFS_NONNULL.

Change-Id: Ic87517376085b0d5bc7631b5558411259ae986f4
Reviewed-on: http://gerrit.openafs.org/5180
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/afs/afs_fetchstore.c
src/afs/afs_prototypes.h

index bf019c4..610f1c6 100644 (file)
@@ -1114,9 +1114,7 @@ afs_CacheFetchProc(struct afs_conn *tc, struct rx_connection *rxconn,
     osi_GetuTime(&xferStartTime);
 #endif /* AFS_NOSTATS */
 
-    if (adc) {
-       adc->validPos = base;
-    }
+    adc->validPos = base;
 
     if ( !code ) do {
        if (avc->f.states & CForeign) {
index 13e336a..5418036 100644 (file)
@@ -503,7 +503,8 @@ extern int afs_CacheFetchProc(struct afs_conn *tc, struct rx_connection *rxconn,
                                 struct osi_file *fP,
                                afs_size_t abase, struct dcache *adc,
                                struct vcache *avc, afs_int32 size,
-                               struct afs_FetchOutput *tsmall);
+                               struct afs_FetchOutput *tsmall)
+                               AFS_NONNULL((5));
 
 /* afs_memcache.c */
 extern int afs_InitMemCache(int blkCount, int blkSize, int flags);