ide-cd: fix DMA alignment regression

e5318b531b008c79d2a0c0df06a7b8628da38e2f ("ide: use the dma safe check for
REQ_TYPE_ATA_PC") introduced a regression which caused some ATAPI drives to
turn off DMA for REQ_TYPE_BLOCK_PC commands while burning and thus degrading
performance and ultimately causing an excessive amount of underruns.

The issue is documented also in:
http://bugzilla.kernel.org/show_bug.cgi?id=11742.

Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tested-by: Valerio Passini <valerio.passini@unicam.it>
[bart: fixup patch description per comments from Sergei Shtylyov]
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

authored by Borislav Petkov and committed by Bartlomiej Zolnierkiewicz 9bd27cba 721d5dfe

+2 -1
+2 -1
drivers/ide/ide-cd.c
··· 1250 1250 * separate masks. 1251 1251 */ 1252 1252 alignment = queue_dma_alignment(q) | q->dma_pad_mask; 1253 - if ((unsigned long)buf & alignment || rq->data_len & alignment 1253 + if ((unsigned long)buf & alignment 1254 + || rq->data_len & q->dma_pad_mask 1254 1255 || object_is_on_stack(buf)) 1255 1256 drive->dma = 0; 1256 1257 }