unsigned int t_size = TIFM_DMA_TSIZE * r_data->blksz;
        unsigned int dma_len, dma_blk_cnt, dma_off;
        struct scatterlist *sg = NULL;
-       unsigned long flags;
 
        if (host->sg_pos == host->sg_len)
                return 1;
 
        if (host->cmd_flags & DATA_CARRY) {
                host->cmd_flags &= ~DATA_CARRY;
-               local_irq_save(flags);
                tifm_sd_bounce_block(host, r_data);
-               local_irq_restore(flags);
                if (host->sg_pos == host->sg_len)
                        return 1;
        }
        if (dma_blk_cnt)
                sg = &r_data->sg[host->sg_pos];
        else if (dma_len) {
-               if (r_data->flags & MMC_DATA_WRITE) {
-                       local_irq_save(flags);
+               if (r_data->flags & MMC_DATA_WRITE)
                        tifm_sd_bounce_block(host, r_data);
-                       local_irq_restore(flags);
-               } else
+               else
                        host->cmd_flags |= DATA_CARRY;
 
                sg = &host->bounce_buf;