Check return value of scatterlist_sg_next(), i.e. don't rely solely
on number of bytes to be processed or number of scatterlist entries.
Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
 {
        int n_sg = sg_count;
 
-       while (n_sg--) {
+       while (sg && n_sg--) {
                to_talitos_ptr(link_tbl_ptr, sg_dma_address(sg), 0);
                link_tbl_ptr->len = cpu_to_be16(sg_dma_len(sg));
                link_tbl_ptr->j_extent = 0;
        int sg_nents = 0;
 
        *chained = false;
-       while (nbytes > 0) {
+       while (nbytes > 0 && sg) {
                sg_nents++;
                nbytes -= sg->length;
                if (!sg_is_last(sg) && (sg + 1)->length == 0)