*/
 int nfsd_cache_lookup(struct svc_rqst *rqstp)
 {
-       struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
+       struct nfsd_net         *nn;
        struct svc_cacherep     *rp, *found;
        __wsum                  csum;
-       struct nfsd_drc_bucket  *b = nfsd_cache_bucket_find(rqstp->rq_xid, nn);
+       struct nfsd_drc_bucket  *b;
        int type = rqstp->rq_cachetype;
        int rtn = RC_DOIT;
 
         * Since the common case is a cache miss followed by an insert,
         * preallocate an entry.
         */
+       nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
        rp = nfsd_reply_cache_alloc(rqstp, csum, nn);
        if (!rp)
                goto out;
 
+       b = nfsd_cache_bucket_find(rqstp->rq_xid, nn);
        spin_lock(&b->cache_lock);
        found = nfsd_cache_insert(b, rp, nn);
        if (found != rp) {