lkml.org 
[lkml]   [2014]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v2 10/10 linux-next] cdrom: uniformize lba command initialization
Date
logical block address field was initialized in different
functions directly in package cmd or bio cmd.

Note that cdrom_dummy_generic_packet didn't use & 0xff

Signed-off-by: Fabian Frederick <fabf@skynet.be>
---
drivers/cdrom/cdrom.c | 33 +++++++++++++--------------------
1 file changed, 13 insertions(+), 20 deletions(-)

diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index 9a6fa8f..3922038 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -327,6 +327,14 @@ do { \

LIST_HEAD(cdrom_list);

+static void int_to_cmd_lba(int value, unsigned char *cmd)
+{
+ cmd[2] = (value >> 24) & 0xff;
+ cmd[3] = (value >> 16) & 0xff;
+ cmd[4] = (value >> 8) & 0xff;
+ cmd[5] = value & 0xff;
+}
+
static int cdrom_dummy_generic_packet(struct cdrom_device_info *cdi,
struct packet_command *cgc)
{
@@ -1681,10 +1689,7 @@ static int dvd_do_auth(struct cdrom_device_info *cdi, dvd_authinfo *ai)
cd_dbg(CD_DVD, "entering DVD_LU_SEND_TITLE_KEY\n");
cgc.quiet = 1;
setup_report_key(&cgc, ai->lstk.agid, 4);
- cgc.cmd[5] = ai->lstk.lba;
- cgc.cmd[4] = ai->lstk.lba >> 8;
- cgc.cmd[3] = ai->lstk.lba >> 16;
- cgc.cmd[2] = ai->lstk.lba >> 24;
+ int_to_cmd_lba(ai->lstk.lba, cgc.cmd);

if ((ret = cdo->generic_packet(cdi, &cgc)))
return ret;
@@ -2060,10 +2065,7 @@ static int cdrom_read_cd(struct cdrom_device_info *cdi,

memset(&cgc->cmd, 0, sizeof(cgc->cmd));
cgc->cmd[0] = GPCMD_READ_10;
- cgc->cmd[2] = (lba >> 24) & 0xff;
- cgc->cmd[3] = (lba >> 16) & 0xff;
- cgc->cmd[4] = (lba >> 8) & 0xff;
- cgc->cmd[5] = lba & 0xff;
+ int_to_cmd_lba(lba, cgc->cmd);
cgc->cmd[6] = (nblocks >> 16) & 0xff;
cgc->cmd[7] = (nblocks >> 8) & 0xff;
cgc->cmd[8] = nblocks & 0xff;
@@ -2083,10 +2085,7 @@ static int cdrom_read_block(struct cdrom_device_info *cdi,
/* expected sector size - cdda,mode1,etc. */
cgc->cmd[1] = format << 2;
/* starting address */
- cgc->cmd[2] = (lba >> 24) & 0xff;
- cgc->cmd[3] = (lba >> 16) & 0xff;
- cgc->cmd[4] = (lba >> 8) & 0xff;
- cgc->cmd[5] = lba & 0xff;
+ int_to_cmd_lba(lba, cgc->cmd);
/* number of blocks */
cgc->cmd[6] = (nblocks >> 16) & 0xff;
cgc->cmd[7] = (nblocks >> 8) & 0xff;
@@ -2188,10 +2187,7 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,

rq->cmd[0] = GPCMD_READ_CD;
rq->cmd[1] = 1 << 2;
- rq->cmd[2] = (lba >> 24) & 0xff;
- rq->cmd[3] = (lba >> 16) & 0xff;
- rq->cmd[4] = (lba >> 8) & 0xff;
- rq->cmd[5] = lba & 0xff;
+ int_to_cmd_lba(lba, rq->cmd);
rq->cmd[6] = (nr >> 16) & 0xff;
rq->cmd[7] = (nr >> 8) & 0xff;
rq->cmd[8] = nr & 0xff;
@@ -3059,10 +3055,7 @@ static noinline int mmc_ioctl_cdrom_play_blk(struct cdrom_device_info *cdi,
if (copy_from_user(&blk, (struct cdrom_blk __user *)arg, sizeof(blk)))
return -EFAULT;
cgc->cmd[0] = GPCMD_PLAY_AUDIO_10;
- cgc->cmd[2] = (blk.from >> 24) & 0xff;
- cgc->cmd[3] = (blk.from >> 16) & 0xff;
- cgc->cmd[4] = (blk.from >> 8) & 0xff;
- cgc->cmd[5] = blk.from & 0xff;
+ int_to_cmd_lba(blk.from, cgc->cmd);
cgc->cmd[7] = (blk.len >> 8) & 0xff;
cgc->cmd[8] = blk.len & 0xff;
cgc->data_direction = CGC_DATA_NONE;
--
1.9.1


\
 
 \ /
  Last update: 2014-11-10 22:01    [W:1.872 / U:0.324 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site