| .. | .. |
|---|
| 72 | 72 | { |
|---|
| 73 | 73 | int in, out, align; |
|---|
| 74 | 74 | |
|---|
| 75 | + /* The last piece has no need for length alignment */ |
|---|
| 75 | 76 | in = IS_ALIGNED((u32)sg_src->offset, 4) && |
|---|
| 76 | | - IS_ALIGNED((u32)sg_src->length, align_mask) && |
|---|
| 77 | + (!sg_next(sg_src) || |
|---|
| 78 | + IS_ALIGNED((u32)sg_src->length, align_mask)) && |
|---|
| 77 | 79 | (sg_phys(sg_src) < SZ_4G); |
|---|
| 78 | 80 | if (!sg_dst) |
|---|
| 79 | 81 | return in; |
|---|
| 80 | 82 | |
|---|
| 83 | + /* The last piece has no need for length alignment */ |
|---|
| 81 | 84 | out = IS_ALIGNED((u32)sg_dst->offset, 4) && |
|---|
| 82 | | - IS_ALIGNED((u32)sg_dst->length, align_mask) && |
|---|
| 85 | + (!sg_next(sg_dst) || |
|---|
| 86 | + IS_ALIGNED((u32)sg_dst->length, align_mask)) && |
|---|
| 83 | 87 | (sg_phys(sg_dst) < SZ_4G); |
|---|
| 84 | 88 | align = in && out; |
|---|
| 85 | 89 | |
|---|