if (n == len_this_page)
                        break;
                n -= len_this_page;
-               scatterwalk_start(&walk->out, scatterwalk_sg_next(
-                       walk->out.sg));
+               scatterwalk_start(&walk->out, sg_next(walk->out.sg));
        }
 
        return bsize;
 
        if (!walk->total)
                return 0;
 
-       walk->sg = scatterwalk_sg_next(walk->sg);
+       walk->sg = sg_next(walk->sg);
 
        return hash_walk_new_entry(walk);
 }
 
                walk->offset += PAGE_SIZE - 1;
                walk->offset &= PAGE_MASK;
                if (walk->offset >= walk->sg->offset + walk->sg->length)
-                       scatterwalk_start(walk, scatterwalk_sg_next(walk->sg));
+                       scatterwalk_start(walk, sg_next(walk->sg));
        }
 }
 
                        break;
 
                offset += sg->length;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        scatterwalk_advance(&walk, start - offset);
        do {
                offset += sg->length;
                n++;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
 
                /* num_bytes is too large */
                if (unlikely(!sg && (num_bytes < offset)))
 
 
        while (!sg_is_last(sg)) {
                sg_nents++;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        return sg_nents;
 
                dma_to_sec4_sg_one(sec4_sg_ptr, sg_dma_address(sg),
                                   sg_dma_len(sg), offset);
                sec4_sg_ptr++;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
                sg_count--;
        }
        return sec4_sg_ptr - 1;
                nbytes -= sg->length;
                if (!sg_is_last(sg) && (sg + 1)->length == 0)
                        *chained = true;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        return sg_nents;
                int i;
                for (i = 0; i < nents; i++) {
                        dma_map_sg(dev, sg, 1, dir);
-                       sg = scatterwalk_sg_next(sg);
+                       sg = sg_next(sg);
                }
        } else {
                dma_map_sg(dev, sg, nents, dir);
                int i;
                for (i = 0; i < nents; i++) {
                        dma_unmap_sg(dev, sg, 1, dir);
-                       sg = scatterwalk_sg_next(sg);
+                       sg = sg_next(sg);
                }
        } else {
                dma_unmap_sg(dev, sg, nents, dir);
 
                struct buffer_desc *buf, gfp_t flags,
                enum dma_data_direction dir)
 {
-       for (;nbytes > 0; sg = scatterwalk_sg_next(sg)) {
+       for (; nbytes > 0; sg = sg_next(sg)) {
                unsigned len = min(nbytes, sg->length);
                struct buffer_desc *next_buf;
                u32 next_buf_phys;
                        break;
 
                offset += sg->length;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
        return (start + nbytes > offset + sg->length);
 }
 
                        break;
 
                offset += sg_src->length;
-               sg_src = scatterwalk_sg_next(sg_src);
+               sg_src = sg_next(sg_src);
        }
 
        /* start - offset is the number of bytes to advance in the scatterlist
        while (len && (nx_sg - nx_dst) < sglen) {
                n = scatterwalk_clamp(&walk, len);
                if (!n) {
-                       /* In cases where we have scatterlist chain scatterwalk_sg_next
+                       /* In cases where we have scatterlist chain sg_next
                         * handles with it properly */
-                       scatterwalk_start(&walk, scatterwalk_sg_next(walk.sg));
+                       scatterwalk_start(&walk, sg_next(walk.sg));
                        n = scatterwalk_clamp(&walk, len);
                }
                dst = scatterwalk_map(&walk);
 
 
                        scatterwalk_advance(&dd->in_walk, 4);
                        if (dd->in_sg->length == _calc_walked(in)) {
-                               dd->in_sg = scatterwalk_sg_next(dd->in_sg);
+                               dd->in_sg = sg_next(dd->in_sg);
                                if (dd->in_sg) {
                                        scatterwalk_start(&dd->in_walk,
                                                          dd->in_sg);
                        *dst = omap_aes_read(dd, AES_REG_DATA_N(dd, i));
                        scatterwalk_advance(&dd->out_walk, 4);
                        if (dd->out_sg->length == _calc_walked(out)) {
-                               dd->out_sg = scatterwalk_sg_next(dd->out_sg);
+                               dd->out_sg = sg_next(dd->out_sg);
                                if (dd->out_sg) {
                                        scatterwalk_start(&dd->out_walk,
                                                          dd->out_sg);
 
 
                        scatterwalk_advance(&dd->in_walk, 4);
                        if (dd->in_sg->length == _calc_walked(in)) {
-                               dd->in_sg = scatterwalk_sg_next(dd->in_sg);
+                               dd->in_sg = sg_next(dd->in_sg);
                                if (dd->in_sg) {
                                        scatterwalk_start(&dd->in_walk,
                                                          dd->in_sg);
                        *dst = omap_des_read(dd, DES_REG_DATA_N(dd, i));
                        scatterwalk_advance(&dd->out_walk, 4);
                        if (dd->out_sg->length == _calc_walked(out)) {
-                               dd->out_sg = scatterwalk_sg_next(dd->out_sg);
+                               dd->out_sg = sg_next(dd->out_sg);
                                if (dd->out_sg) {
                                        scatterwalk_start(&dd->out_walk,
                                                          dd->out_sg);
 
                        err = dma_map_sg(dev, sg, 1, dir);
                        if (!err)
                                return -EFAULT;
-                       sg = scatterwalk_sg_next(sg);
+                       sg = sg_next(sg);
                }
        } else {
                err = dma_map_sg(dev, sg, nents, dir);
        if (chained)
                while (sg) {
                        dma_unmap_sg(dev, sg, 1, dir);
-                       sg = scatterwalk_sg_next(sg);
+                       sg = sg_next(sg);
                }
        else
                dma_unmap_sg(dev, sg, nents, dir);
                nbytes -= sg->length;
                if (!sg_is_last(sg) && (sg + 1)->length == 0 && chained)
                        *chained = true;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        return nents;
 
                        break;
                len += sg_dma_len(sg);
                sg_last = sg;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        if (!sg_last)
 
                        break;
                }
                nbytes -= sg->length;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        return nbytes;
 
        if (unlikely(chained))
                while (sg) {
                        dma_map_sg(dev, sg, 1, dir);
-                       sg = scatterwalk_sg_next(sg);
+                       sg = sg_next(sg);
                }
        else
                dma_map_sg(dev, sg, nents, dir);
 {
        while (sg) {
                dma_unmap_sg(dev, sg, 1, dir);
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 }
 
                link_tbl_ptr->j_extent = 0;
                link_tbl_ptr++;
                cryptlen -= sg_dma_len(sg);
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        /* adjust (decrease) last one (or two) entry's len to cryptlen */
                nbytes -= sg->length;
                if (!sg_is_last(sg) && (sg + 1)->length == 0)
                        *chained = true;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        return sg_nents;
 
 
        while (nbytes > 0) {
                nbytes -= sg->length;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
                nents++;
        }
 
 
        sg1[num - 1].page_link |= 0x01;
 }
 
-static inline struct scatterlist *scatterwalk_sg_next(struct scatterlist *sg)
-{
-       if (sg_is_last(sg))
-               return NULL;
-
-       return (++sg)->length ? sg : sg_chain_ptr(sg);
-}
-
 static inline void scatterwalk_crypto_chain(struct scatterlist *head,
                                            struct scatterlist *sg,
                                            int chain, int num)
 {
        if (chain) {
                head->length += sg->length;
-               sg = scatterwalk_sg_next(sg);
+               sg = sg_next(sg);
        }
 
        if (sg)