printk(KERN_NOTICE "st: Can't allocate new tape buffer.\n");
                return NULL;
        }
-       tb->frp_segs = tb->orig_frp_segs = 0;
+       tb->frp_segs = 0;
        tb->use_sg = max_sg;
        tb->dma = need_dma;
        tb->buffer_size = 0;
 {
        int i, order = STbuffer->map_data.page_order;
 
-       for (i = STbuffer->orig_frp_segs; i < STbuffer->frp_segs; i++) {
+       for (i = 0; i < STbuffer->frp_segs; i++) {
                __free_pages(STbuffer->reserved_pages[i], order);
                STbuffer->buffer_size -= (PAGE_SIZE << order);
        }
-       STbuffer->frp_segs = STbuffer->orig_frp_segs;
+       STbuffer->frp_segs = 0;
        STbuffer->frp_sg_current = 0;
        STbuffer->sg_segs = 0;
        STbuffer->map_data.page_order = 0;
        tpnt->device = NULL;
 
        if (tpnt->buffer) {
-               tpnt->buffer->orig_frp_segs = 0;
                normalize_buffer(tpnt->buffer);
                kfree(tpnt->buffer->reserved_pages);
                kfree(tpnt->buffer);
 
        unsigned char *b_data;
        unsigned short use_sg;  /* zero or max number of s/g segments for this adapter */
        unsigned short sg_segs;         /* number of segments in s/g list */
-       unsigned short orig_frp_segs;   /* number of segments allocated at first try */
        unsigned short frp_segs;        /* number of buffer segments */
        unsigned int frp_sg_current;    /* driver buffer length currently in s/g list */
 };