linux/block/scsi_ioctl.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2001 Jens Axboe <axboe@suse.de>
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 *
   8 * This program is distributed in the hope that it will be useful,
   9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10 *
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public Licens
  15 * along with this program; if not, write to the Free Software
  16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-
  17 *
  18 */
  19#include <linux/kernel.h>
  20#include <linux/errno.h>
  21#include <linux/string.h>
  22#include <linux/module.h>
  23#include <linux/blkdev.h>
  24#include <linux/capability.h>
  25#include <linux/completion.h>
  26#include <linux/cdrom.h>
  27#include <linux/ratelimit.h>
  28#include <linux/slab.h>
  29#include <linux/times.h>
  30#include <asm/uaccess.h>
  31
  32#include <scsi/scsi.h>
  33#include <scsi/scsi_ioctl.h>
  34#include <scsi/scsi_cmnd.h>
  35
  36struct blk_cmd_filter {
  37        unsigned long read_ok[BLK_SCSI_CMD_PER_LONG];
  38        unsigned long write_ok[BLK_SCSI_CMD_PER_LONG];
  39};
  40
  41static struct blk_cmd_filter blk_default_cmd_filter;
  42
  43/* Command group 3 is reserved and should never be used.  */
  44const unsigned char scsi_command_size_tbl[8] =
  45{
  46        6, 10, 10, 12,
  47        16, 12, 10, 10
  48};
  49EXPORT_SYMBOL(scsi_command_size_tbl);
  50
  51#include <scsi/sg.h>
  52
  53static int sg_get_version(int __user *p)
  54{
  55        static const int sg_version_num = 30527;
  56        return put_user(sg_version_num, p);
  57}
  58
  59static int scsi_get_idlun(struct request_queue *q, int __user *p)
  60{
  61        return put_user(0, p);
  62}
  63
  64static int scsi_get_bus(struct request_queue *q, int __user *p)
  65{
  66        return put_user(0, p);
  67}
  68
  69static int sg_get_timeout(struct request_queue *q)
  70{
  71        return jiffies_to_clock_t(q->sg_timeout);
  72}
  73
  74static int sg_set_timeout(struct request_queue *q, int __user *p)
  75{
  76        int timeout, err = get_user(timeout, p);
  77
  78        if (!err)
  79                q->sg_timeout = clock_t_to_jiffies(timeout);
  80
  81        return err;
  82}
  83
  84static int sg_get_reserved_size(struct request_queue *q, int __user *p)
  85{
  86        unsigned val = min(q->sg_reserved_size, queue_max_sectors(q) << 9);
  87
  88        return put_user(val, p);
  89}
  90
  91static int sg_set_reserved_size(struct request_queue *q, int __user *p)
  92{
  93        int size, err = get_user(size, p);
  94
  95        if (err)
  96                return err;
  97
  98        if (size < 0)
  99                return -EINVAL;
 100        if (size > (queue_max_sectors(q) << 9))
 101                size = queue_max_sectors(q) << 9;
 102
 103        q->sg_reserved_size = size;
 104        return 0;
 105}
 106
 107/*
 108 * will always return that we are ATAPI even for a real SCSI drive, I'm not
 109 * so sure this is worth doing anything about (why would you care??)
 110 */
 111static int sg_emulated_host(struct request_queue *q, int __user *p)
 112{
 113        return put_user(1, p);
 114}
 115
 116static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
 117{
 118        /* Basic read-only commands */
 119        __set_bit(TEST_UNIT_READY, filter->read_ok);
 120        __set_bit(REQUEST_SENSE, filter->read_ok);
 121        __set_bit(READ_6, filter->read_ok);
 122        __set_bit(READ_10, filter->read_ok);
 123        __set_bit(READ_12, filter->read_ok);
 124        __set_bit(READ_16, filter->read_ok);
 125        __set_bit(READ_BUFFER, filter->read_ok);
 126        __set_bit(READ_DEFECT_DATA, filter->read_ok);
 127        __set_bit(READ_CAPACITY, filter->read_ok);
 128        __set_bit(READ_LONG, filter->read_ok);
 129        __set_bit(INQUIRY, filter->read_ok);
 130        __set_bit(MODE_SENSE, filter->read_ok);
 131        __set_bit(MODE_SENSE_10, filter->read_ok);
 132        __set_bit(LOG_SENSE, filter->read_ok);
 133        __set_bit(START_STOP, filter->read_ok);
 134        __set_bit(GPCMD_VERIFY_10, filter->read_ok);
 135        __set_bit(VERIFY_16, filter->read_ok);
 136        __set_bit(REPORT_LUNS, filter->read_ok);
 137        __set_bit(SERVICE_ACTION_IN, filter->read_ok);
 138        __set_bit(RECEIVE_DIAGNOSTIC, filter->read_ok);
 139        __set_bit(MAINTENANCE_IN, filter->read_ok);
 140        __set_bit(GPCMD_READ_BUFFER_CAPACITY, filter->read_ok);
 141
 142        /* Audio CD commands */
 143        __set_bit(GPCMD_PLAY_CD, filter->read_ok);
 144        __set_bit(GPCMD_PLAY_AUDIO_10, filter->read_ok);
 145        __set_bit(GPCMD_PLAY_AUDIO_MSF, filter->read_ok);
 146        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cl href="+cref="block/scsi_ioctl.c#1L46" 14/a>->read_ok);
 1SUM32" id="L132" cl name="AUSE> 1SUM3a>        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cl href="+cref="block/scsi_ioctl.c#1L47" 14/scsi_ioctl.c#L67" id="L67" class="1a>       1 16, 12, 10, 10

EXPO1RT_SYMBOL(read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ccsi_comma1nd_size_tbl);
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc="sref">r" name="L51">  51#in1clude15/a>->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ccL142" clascsi/sg.h>
/* Audio CD commands */
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc href="+ca>(int ->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc href="+css="sref">p)
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc href="+c    static const int ->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc href="+ccode=sg_version_num" cla1ss="s15/a>->read_ok);
 < 0)
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc href="+cs="sref">p);
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cc>       1e="L57">  57}
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cref">q, int ->read_ok);
__set_bit(GPCMD_PLAY_AUDIO_TI|_TE" crsi_comma1ss="sref">p)
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cr="sref">r->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" crL142" clas="sref">p);
/* Audio CD commands */
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cr href="+ce="L62">  62}
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cr href="+c>, int ->read_ok);
__set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cr>  15< * ref=16/a>->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" cr href="+cp);
 141
  67}
read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ct ->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ctsi_comma1ss="sref">q)
read_ok);
__set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ct="sref">ref="+code=q" class="sref1">q->read_ok);
        __set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ctL142" clasg_timeout);
/* Audio CD commands */
__set_bit(GPCMD_PLAY_AUDIO_TI|_TE" ct href="+ce="L72">  72}
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ct href="+c>, int ->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ct>  15ss="sref">p)
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ct href="+c/a>(->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ct=p" clas1ss="sref">p);
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ctine" nam1"L78" class="line" name=1"L78"17/a>->read_ok);
read_okcline" L="L" name="L135"> 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_t_to_jif1fies" class="sref">clock1_t_to18/a>->read_ok);
read_okass="lL="L" name="L135"> 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_si_comma1ef">timeout);
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_="sref">r81" class="line" name="L181"> 18/a>->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_L142" cla="sref">err;
/* Audio CD commands */
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_ href="+ce="L82">  82}
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_ href="+c>, int ->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_>  15ss="sref">p)
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_ href="+cctors" class="sref">queu1e_max18/a>->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_=p" clas1/a>) << 9);
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" c_ine" nam1ut_user(read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce=p" clas1s="sref">p);
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" cesi_comma1e="L89">  89}
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce="sref">r>, int ->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ceL142" class="sref">p)
/* Audio CD commands */
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce href="+c_user(read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce href="+css="sref">p);
read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce>  15="L95" class="line" name1="L9519/a>->read_ok);
 135        __s_CMD_PER_LONG];
GPCMD_PLAY_AUDIO_TI|_TE" ce href="+cs="line" name="L96">  961 19"sref">put_user(0, err;
  198sg_emulated_host+codverify_1"> 141_LONG];
 141 href#L85" id=charfilter_defaults" cm1_LONG];
 135m5  70{
m5 a>-&g="L135"> 135{
  99     2     20ref">request_queue *queue_2ax_se2tors( 116static void blk_set_cmd_filter = &class="sref">__s+codid="L116static void staticltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2ue_max_se2tors" class="sref">queue2max_s2ctors(q2 << 9;
 141./a>
2g_res2rved_size  href="+code=EINVALcapablame="L111"> 111p);
->siz2     2  return 0;
 105}
), 7" ume we"L108re staticons/evera href=locka>
err;
blk_set_cmd_filter"_ioctl.c#L67" id="L67" class="2s9ame="L125ss="line" name="L98">  2 that20       if (PERM2" id="L132" clEPERMltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2/a> * so sur2 this21/scsi_ioctl.c#L89" id="L89" class="2block/scs2_ioctl.c#L110" id="L110"2class211ioctl.c#L102"id="L117" class="line" nAnybody who c="Lope">/*e device c="Ldo>
L117">safe/1"> 141ka>
q2 int   href="+code=EINVALttatiass="sref">read_okttatiass href="block/scsi_iocm1_LONG];
__set_bit(p)
siz2 return <2 href="+code=put_user" c2ass="21class="sref">size, p);
safe/1"> 141commquire aLhrefablaLope">a>
     24"> 114}
read_okttatiass href="block/scsi_iocm1_LONG];
__set_bit( 135{
b2k_cmd217octl.c#L112"rrrrrrrr= siz2 8ame="L12filter)
 118 2     2PERM2" id="L132" clEPERMltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte2-&">put_user(0, -&e" class="sref">X"lineSYMBO < 0)
 141_LONG];
 141 hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte22tors(-& name="L110"> 110 111static int  111stat (-> 135m5  70{
m5 a>-&g="L135"> 135{
-&request_queue *  href="+code=EINVALcopy_fromame="L112"> 112{copy_fromame=" href="block/scsi_iorulated_host" claru hreet_bit( 135( 135(FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2a8ame="L12ode=filter" class="sref"2filte22k/scsi_ioctl.c#L97" id="L97" cla+codverify_1"> 141_LONG];
 141 href="block/scsi_iorulated_host" claru hreet_bit( 135{
 135{
PERM2" id="L132" clEPERMltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte23/scsi_ioctl.c#L89" id="L89" class="2a href="+2ode=filter" class="sref"2filte231ioctl.c#L102"id="L117" class="line" 
-&th doing anything abouttttttttt* stal"L1 /a>statrl.c#L1ure
-&th doing anything abouttttttttt*>
->( 103  hdrlated_host" clahdr (GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte2->( 111 103  REQ_TYPE_BLOCK_P138" class="lineREQ_TYPE_BLOCK_P1ass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte23ioctl.c#L105" id="L105" class="line2a href="+2ode=filter" class="sref"2filte2->(read_oktimeousass=="L103"> 103  msecs_to_jiffie
(read_oktimeousass="sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte23k/scsi_ioctl.c#L77" id="L77" clasrulated_host" claru hreet_bit(read_oktimeousass="_ioctl.c#L67" id="L67" class="2a href="+2ode=filter" class="sref"2filte23       if ((read_oktimeousass=="L103"> 103  ulated_host" class="set_bit(read_oksg"timeousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte2->(read_oktimeousass="_ioctl.c#L67" id="L67" class="2a href="+2ode=filter" class="sref"2filte241      if ((read_oktimeousass=="L103"> 103  BLKnameAULl_SG_TIMEOUl2" id="L132" clBLKnameAULl_SG_TIMEOUlass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ead_ok);
(read_oktimeousass==<cg="L135"> 135 12224ioctl.c#L112"rrrrrrrref="+code=read_rulated_host" claru hreet_bit(read_oktimeousass=="L103"> 103  BLKnMIN_SG_TIMEOUl2" id="L132" clBLKnMIN_SG_TIMEOUlass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2a href="+2ode=filter" class="sref"2filte24class="sref">size, ->siz2a href="+2ode=filter" class="sref"2filte2-&">put_user(0,  110 111stat  iolated_host" cla+io EXPO2RT_SYMBOL(request_queue *-> 110 135 111siz2c="sref">2" name="L51">  51#in2clude25tors(>
-&th doing anything abouttttttttt* stal"L1 aal"/*e ousput members
p)
( 103  rulated_host" claru hreet_bit(siz2c href="+2code=sg_version_num" cla2ss="s25/a>->( 103   namu
_bytame="L111"> 111< namu
_byta href="block/scsi_iorulated_host" claru hreet_bit(GPCMD_PLAY_AUDIO_TI|_TE" 2c href="+2s="sref">p);
( 103  msg_bytame="L111"> 111(GPCMD_PLAY_AUDIO_TI|_TE" 2c href="+2e="L57">  57}
( 103  host"bytame="L111"> 111(GPCMD_PLAY_AUDIO_TI|_TE" 2ref">q, int ->( 103  driver"bytame="L111"> 111(GPCMD_PLAY_AUDIO_TI|_TE" 2rsi_comma2ss="sref">p)
(siz2r="sref">2  href="+code=EINVALhdrlated_host" clahdr (((p);
( 103  SG_L1FO_CHECK="L139" class="SG_L1FO_CHECKass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2r href="+2e="L62">  62}
( 103  rulated_host" claru hreet_bit(GPCMD_PLAY_AUDIO_TI|_TE" 2r href="+2>, int ->(siz2r href="+2< 2 ref=26ioctl.c#L105" id="L105" class="line2r href="+2  href="+code=EINVALrulated_host" claru hreet_bit( 135(p);
 110 103  min3" id="L113" clmin hreff#L85" id=L11)ref="+code=read_hdrlated_host" clahdr ( 135(GPCMD_PLAY_AUDIO_TI|_TE" 2r href="+2e="L67">  67}
GPCMD_PLAY_AUDIO_TI|_TE" 2t ->  hre7" id="L77" clascopy_toame="L112"> 112{copy_toame=" href="block/scsi_iohdrlated_host" clahdr ( 135( 135q)
( 135GPCMD_PLAY_AUDIO_TI|_TE" 2t="sref">2ef="+code=q" class="sref2">q->GPCMD_PLAY_AUDIO_TI|_TE" 2tL142" cl2sg_timeout);
 111FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 2t href="+2e="L72">  72}
put_user(0, , int -&>put_user(0, p)
 135 112{+codrq_unmapame=" href="block/scsi_io iolated_host" cla+io GPCMD_PLAY_AUDIO_TI|_TE" 2t href="+2/a>(  hre7" id="L77" clasr  111p);
 111GPCMD_PLAY_AUDIO_TI|_TE" 2t href="+2"L78" class="line" name=2"L78"27/a>-> 111<+codput_ass="li href="block/scsi_iorulated_host" claru hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 2_t_to_jif2fies" class="sref">clock2_t_to28/scsi_ioctl.c#L89" id="L89" class="2_si_comma2ef">timeout);
 111GPCMD_PLAY_AUDIO_TI|_TE" 2_="sref">281" class="line" name="L281"> 28/a>-&">put_user(0, err;
  82}
 110 111static int ];
-> 135m5  70{
m5 a>-&g="L135"> 135{
p)
queu2e_max28/a>-> 103   nart"timeme="L111"> 111< nart"timeass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 2_=p" clas2/a>) << 9);
 110 111 135 111siz2_ine" nam2ut_user( 111stat siz2e=p" clas2s="sref">p);
 103  SCSI=SENSE_BUFFERSIZE 70{
siz2esi_comma2e="L89">  89}
 iolated_host" cla+io siz2e="sref">2>, int (p)
("L108S"L108
(INze < 0)
INze< siz2e href="+2ss="sref">p);
( 103  BLKnMAX_CDB3" id="L113" clBLKnMAX_CDBock/"_ioctl.c#L67" id="L67" class="2e>  15INze < 0)
INze< siz2e href="+2s="line" name="L96">  962 29             return err;
(  298IO" class="line" EIOock/f="+code=size" class="sref">siz3ss="line"3name="L99">  99     3     30/scsi_ioctl.c#L89" id="L89" class="3e_max_sec3ors" class="sref">queue_3ax_se3tors((queue3max_s30/a>->(q3 << 9;
q3 user(INze < 0)
INze< siz3s5=sg_res3rs="sref">p);
-> 103  SG_DXFER_TO_DEV="L139" class="SG_DXFER_TO_DEVa>-&:equest_queue *-> 110 111siz3s7=sg_res3r="line" name="L96">  963ck/sc307octl.c#L112"rrrrrrrrrrrrrrrrbreakf="+code=size" class="sref">siz3s8=sg_res3r="sref">err;
 103  SG_DXFER_TO_FROM_DEV="L139" class="SG_DXFER_TO_FROM_DEVa>-&:equest_queue *  3 that30       if ( 103  SG_DXFER_FROM_DEV="L139" class="SG_DXFER_FROM_DEVa>-&:equest_queue * * so sur3 this31/a>-> rrrrrrrrbreakf="+code=size" class="sref">siz3block/scs3_ioctl.c#L110" id="L110"3class311      if (put_user(0, q3 int (p)
rulated_host" claru hre="L="L135"> 135 111<+codget_ass="li href="block/scsi_ioulated_host" class="sme="L135"> 135 111 135{
 103  RE408" id="L128" clR140" name="L135"> 135 < 0)
GPCMD_PLAY_AUDIO_TI|_TE" 3 return <3 href="+code=put_user" c3ass="31ved_size  hre7" id="L77" clasrulated_host" claru hre"_ioctl.c#L67" id="L67" class="3 class="s3ef">p);
NOMEM2" id="L132" clENOMEM siz3e/a>     34"> 114}
b3k_cmd317ed_size  href="+code=EINVAL+cod"srl_sghdr_rulated_host" cla+cod"srl_sghdr_ru href="block/scsi_ioulated_host" class="sme="L135"> 135 135{
 *)
 111<+codput_ass="li href="block/scsi_iorulated_host" claru hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 3class="li3e" name="L118"> 118 3     31       if (FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 3a href="+3ode=filter" class="sref"3filte32/a>->put_user(0, -&>put_user(0, q3ode=filter" class="sref"3filte322ed_size  href="+code=EINVALhdrlated_host" clahdr ( 111 * 110( 111GPCMD_PLAY_AUDIO_TI|_TE" 3areturn <3ode=filter" class="sref"3filte3-> 110  70{
 a>-&g="L135"> 135GPCMD_PLAY_AUDIO_TI|_TE" 3aclass="s3ode=filter" class="sref"3filte32/a>->GPCMD_PLAY_AUDIO_TI|_TE" 3a/a>     3ode=filter" class="sref"3filte32/a>->GPCMD_PLAY_AUDIO_TI|_TE" 3ade=blk_c3ode=filter" class="sref"3filte327octl.c#L112"rrrrrrrrL110"> 110GPCMD_PLAY_AUDIO_TI|_TE" 3a8ame="L13ode=filter" class="sref"3filte32/scsi_ioctl.c#L67" id="L67" class="3alass="li3ode=filter" class="sref"3filte32       if ( 135 135 < 0)
GPCMD_PLAY_AUDIO_TI|_TE" 3a href="+3ode=filter" class="sref"3filte33/a>->  hre7" id="L77" classg" cvlated_host" clasg" cvass=" request_queue * 111NOMEM2" id="L132" clENOMEM siz3a href="+3ode=filter" class="sref"3filte33/a>->read_okousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3a href="+3ode=filter" class="sref"3filte33ioctl.c#L112"rrrrrrrr">put_user(0, size, -> 112{copy_fromame=" href="block/scsi_iosg" cvlated_host" clasg" cvass=me="L135"> 135( 135 *-> 110GPCMD_PLAY_AUDIO_TI|_TE" 3ade=blk_c3ode=filter" class="sref"3filte337octl.c#L112"rrrrrrrrrrrrrrrref="+code=read_=  111FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 3a href="+3ode=filter" class="sref"3filte33ioctl.c#L117"gt;read_okousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3alass="li3ode=filter" class="sref"3filte33       if (put_user(0, -&th doing anything abouttttttttttttttttt* Sum up"/*e vecs, makref=sure"/*ey don"L108t cverflow
 13234/a>-&th doing anything abouttttttttttttttttt*>
-> 110GPCMD_PLAY_AUDIO_TI|_TE" 3a href="+3ode=filter" class="sref"3filte34/a>-> 135siz3a href="+3ode=filter" class="sref"3filte34/a>-> 110 135( 111 110 * 110 103  ilated_host" cla ass=].f="+code=EINVALiov_len3" id="L113" cliov_lenass==tltcg="L135"> 135 135GPCMD_PLAY_AUDIO_TI|_TE" 3l href="+3 16, 12, 10, 10
 111INze < 0)
INze< siz3ref">EXPO3RT_SYMBOL(read_okousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3csi_comma3nd_size_tbl);
put_user(0, 3" name="L51">  51#in3clude35/a>-> 135 103  ilated_host" cla ass=].f="+code=EINVALiov_len3" id="L113" cliov_lenass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3c href="+3scsi/sg.h>
put_user(0, (int size, p)

( 135( 111 135p);
( 111  57}
(GPCMD_PLAY_AUDIO_TI|_TE" 3ref">q, int -> rrrrrrrr="L135"> 135(GPCMD_PLAY_AUDIO_TI|_TE" 3rsi_comma3ss="sref">p)
put_user(0, 3(p);
 111 135 135 135( 111  62}
 135 135 < 0)
GPCMD_PLAY_AUDIO_TI|_TE" 3r href="+3>, int -> 135GPCMD_PLAY_AUDIO_TI|_TE" 3r href="+3< 3 ref=36/a>->( 111 135 135( 135(p);
 rrrrrrrr="L135"> 135 < 0)
GPCMD_PLAY_AUDIO_TI|_TE" 3r href="+3e="L67">  67}
GPCMD_PLAY_AUDIO_TI|_TE" 3t -> 111q)
read_okousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3t="sref">3ef="+code=q" class="sref3">q();
 iolated_host" cla+io  103  rulated_host" claru hreet_bit(siz3t href="+3e="L72">  72}
 111GPCMD_PLAY_AUDIO_TI|_TE" 3t href="+3>, int ->( 103   ense3" id="L113" clsenseass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 3t href="+3ss="sref">p)
(siz3t href="+3/a>(->(siz3t href="+3ss="sref">p);
-> 111< nart"timeass=="L103"> 103  jiffie
siz3_t_to_jif3fies" class="sref">clock3_t_to38/scsi_ioctl.c#L89" id="L89" class="3_si_comma3ef">timeout);
381" class="line" name="L381"> 38/a>-&th doing anything abouttttttttt* (c#L*e doesn"L108t check t*at"is his problem). ha href="block/scsi_ioctl.c#L142" id3_L142" cl3="sref">err;
  82}
-> 135];
 135GPCMD_PLAY_AUDIO_TI|_TE" 3_>  15p)
queu3e_max38/a>->( 103  jiffie
_toamsecs 111< nart"timeass="sref">GPCMD_PLAY_AUDIO_TI|_TE" 3_ href="+3/a>) << 9);
( 135 135GPCMD_PLAY_AUDIO_TI|_TE" 3e=p" clas3s="sref">p);
read_okousass=:equest_queue *  89}
 111<+codput_ass="li href="block/scsi_iorulated_host" claru hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 3e="sref">3>, int  111GPCMD_PLAY_AUDIO_TI|_TE" 3eL142" cl3ss="sref">p)
put_user(0, (size, p);
  15  963 39     th doing anything about* @file:lass="cfile t*is #L142 operates on (optional)
err;
 141s down
  398  99     4     40/scsith doing anything about* @sic:lass="c=me="h dcerl.c#L1ure describref=the 1"> 141 to perform
  89}
 141 described by @sic to /*e devicerbelow
q4 << 9;
q4 user(p);
-&th doing anything about* non-des.c#L1ive SCSI 1"> 141s.  If the 1=ll=" has a l.c#L11gendisR -&th doing anything about* available"it should be p7" ed L1 as @disR to al7"w=the 7"w=leve2
  964ck/sc40     th doing anything about* driver to me==the L1formation contai id=L1 it.  A non-NUL< @disR err;
  4 that40     th doing anything about* neid=Lt (e.g.=L1 /*e stl. subsystem). ha href="block/scsi_ioctl.c#L142" id4/a> * so sur4 this41/scsith doing anything about* ha href="block/scsi_ioctl.c#L142" id4/1="line"4_ioctl.c#L110" id="L110"4class41ors-&th doing anything about*   -  T*is #11erface is deprecated -=me="h should me==the SG_LO ha href="block/scsi_ioctl.c#L142" id4/f">q4ref">p)
q4 href="+code=put_user" c4ass="41/a>-&th doing anything about*      performref=SCSI 1"> 141s on a device. ha href="block/scsi_ioctl.c#L142" id4/5=sg_res4ef">p);
 141=length is determined by examinref=the 1atrbyta ha href="block/scsi_ioctl.c#L142" id4/6=sg_res44"> 114}
 141. T*ere"is no way to override t*is. ha href="block/scsi_ioctl.c#L142" id4/7=sg_res4d_filter" class="sref">b4k_cmd41     th doing anything about*   -  Data transf="h are"limit=1 to PAGE_SIZEasa href="block/scsi_ioctl.c#L142" id4/8=sg_res4filter)
 118 4     41     th doing anything about*      achingodate /*e sense buff=" when doierror occurs. ha href="block/scsi_ioctl.c#L142" id4a href="+4ode=filter" class="sref"4filte42/scsith doing anything about*      T*e sense buff=" is .c#ncated to OMAX_SB_LENr(16)rbytas=so"/*at ha href="block/scsi_ioctl.c#L142" id4a1="line"4ode=filter" class="sref"4filte42ors-&th doing anything about*   -  If a Unixierror occurs (e.g.=ENOMEM) /*e1 /*e me=" wtal"receive ha href="block/scsi_ioctl.c#L142" id4af">q4ode=filter" class="sref"4filte42/a>-&th doing anything about*      a nega1ive code=si141 t*e Unixierror read L1 "L108errno"L108. ha href="block/scsi_ioctl.c#L142" id4a4">q4ode=filter" class="sref"4filte42/a>-&th doing anything about*      If the SCSI 1"> 141=succeids /*e1 0 is code=sed. ha href="block/scsi_ioctl.c#L142" id4a5=sg_res4ode=filter" class="sref"4filte42/a>-&th doing anything about*      Posi1ive numbers code=sed are"the 1"> dcted SCSIierror reads (4 ha href="block/scsi_ioctl.c#L142" id4a6=sg_res4ode=filter" class="sref"4filte42/a>-&th doing anything about*      bytas=L1 one=L11)rw*ere"/*e 7"weatrbyta is .he SCSI  namu
. ha href="block/scsi_ioctl.c#L142" id4a7=sg_res4ode=filter" class="sref"4filte42     th doing anything about*>
 111 dtibilityt*>
 110 111static int ];
 135m5  70{
m5 a>-&g="L135"> 135{
-> l.c#L111" id="L111" cls href="+c_1"> 141lated_host" clas href="+c_1"> 141a>-&g="L135"> 135 *-> 111stat siz4a href="+4ode=filter" class="sref"4filte43ioctl.c#L112"L110"> 110siz4a4">q4ode=filter" class="sref"4filte43/a>-> 135 135 135 111<+ytasass=me="L135"> 135{
 135GPCMD_PLAY_AUDIO_TI|_TE" 4a href="+4ode=filter" class="sref"4filte43/a>-> 111<+uff="ass=="L103"> 103  NUL < 0)
 135 103  SCSI=SENSE_BUFFERSIZE 70{
siz4a href="+4ode=filter" class="sref"4filte43ioctl.c#L105" id="L105" class="line4ade=blk_c4ode=filter" class="sref"4filte437ed_size  hre7" id="L77" classiclated_host" clasicass="_ioctl.c#L67" id="L67" class="4a8ame="L14ode=filter" class="sref"4filte43ioctl.c#L117"gt;INze < 0)
INze< siz4alass="li4ode=filter" class="sref"4filte43/a>-&ref">GPCMD_PLAY_AUDIO_TI|_TE" 4a href="+4ode=filter" class="sref"4filte44/a>->-&th doing anything abouttttttttt*>
 14244      (->FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 4a href="+4ode=filter" class="sref"4filte44/a>->(->FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 4ade=blk_c4ref="block/scsi_ioctl.c#4L46" 447ed_size  href="+code=EINVALin_len3" id="L113" clin_lenass==t_biL103"> 103  PAGE_SIZE3" id="L113" clPAGE_SIZEass==||e="L135"> 135 103  PAGE_SIZE3" id="L113" clPAGE_SIZEass="_ioctl.c#L67" id="L67" class="4a8ame="L14ref="block/scsi_ioctl.c#4L47" 44ioctl.c#L117"gt;INze < 0)
INze< siz4l href="+4 16, 12, 10, 10
{
 135(EXPO4RT_SYMBOL(FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 4csi_comma4nd_size_tbl);
4" name="L51">  51#in4clude45/a>-> 135 111<+ytasass=="L103"> 103  max 70{
 135GPCMD_PLAY_AUDIO_TI|_TE" 4c href="+4scsi/sg.h>
 111<+ytasass=" request_queue *(int -> 110 111<+uff="ass=="L103"> 103  kzal7" lated_host" clakzal7"  href="block/scsi_io ytasme="L111"> 111<+ytasass=me="L135"> 135 135 135 111<__GFP_NOWARN GPCMD_PLAY_AUDIO_TI|_TE" 4c href="+4ss="sref">p)
 111<+uff="ass="_ioctl.c#L67" id="L67" class="4r href="+4    static const int -> code=size" class="sref">NOMEM2" id="L132" clENOMEM siz4c href="+4code=sg_version_num" cla4ss="s45             return p);
put_user(0,   57}
GPCMD_PLAY_AUDIO_TI|_TE" 4ref">q, int -> 135 111<+codget_ass="li href="block/scsi_ioulated_host" class="sme="L135"> 135 135{
 103  RE408" id="L128" clR140" name="L135"> 135GPCMD_PLAY_AUDIO_TI|_TE" 4rsi_comma4ss="sref">p)
4-> 135 135GPCMD_PLAY_AUDIO_TI|_TE" 4r href="+4s="sref">p);
  62}
-&th doing anything abouttttttttt* get 1"> 141=141 data to send to device,r hrany
 4 ref=46/a>-&th doing anything abouttttttttt*>
->FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 4r href="+4s="sref">p);
( 135GPCMD_PLAY_AUDIO_TI|_TE" 4r href="+4e="L67">  67}
 112{copy_fromame=" href="block/scsi_iorulated_host" claru hreet_bit( 135( 135-> gotoref="+code=read_errorlated_host" claerror href="+code=size" class="sref">siz4tsi_comma4ss="sref">q)
4ef="+code=q" class="sref4">q  href="+code=EINVALin_len3" id="L113" clin_lenass==tampctampce="L135"> 135 112{copy_fromame=" href="block/scsi_iobuff="me="L111"> 111<+uff="ass=me="L135"> 135( 110 135);
siz4t href="+4e="L72">  72}
size, , int -> 135 141lated_host" cla+codverify_1"> 141 href="block/scsi_iorulated_host" claru hreet_bit( 135{
 135{
GPCMD_PLAY_AUDIO_TI|_TE" 4t href="+4ss="sref">p)
(siz4t href="+4ss="sref">p);
->
clock4_t_to48/a>->(siz4_si_comma4ef">timeout);
481" class="line" name="L481"> 48/a>->{
err;
 103  SEND_DIAGNOSTIC 70{
 *  82}
 103  FORMAT_UNIl2" id="L132" clFORMAT_UNIloctl:equest_queue *, int ->(read_oktimeous hre="L="L135"> 135siz4_>  15p)
(siz4_ href="+4ctors" class="sref">queu4e_max487octl.c#L112"rrrrrrrrbreakf="+code=size" class="sref">siz4_ href="+4/a>) << 9);
 103  START_STOP 70{
 *((read_oktimeous hre="L="L135"> 135siz4e=p" clas4s="sref">p);
siz4esi_comma4e="L89">  89}
 103  MOVE_MEDIUM2" id="L132" clMOVE_MEDIUMoctl:equest_queue *4>, int (read_oktimeous hre="L="L135"> 135siz4eL142" cl4ss="sref">p)
siz4e href="+4_user( 103  R140_ELEMENT_STATUS8" id="L128" clR140_ELEMENT_STATUSoctl:equest_queue *p);
(read_oktimeous hre="L="L135"> 135siz4e>  15siz4e href="+4s="line" name="L96">  964 497octl.c#L112"caseL103"> 103  R140_DEFECT_DATA2" id="L132" clR140_DEFECT_DATAoctl:equest_queue *err;
(read_oktimeous hre="L="L135"> 135siz4e href="+4ass="line" name="L98">  498(siz5ss="line"5name="L99">  99     5     50/a>-> breakf="+code=size" class="sref">siz5s1="line"5n="L89">  89}
->(read_oktimeous hre="L="L135"> 135siz5ef">q5 << 9;
siz5s4">q5 user(put_user(0, p);
-&>put_user(0, -> 111<+ytasass==tampctampce="L135"> 135 135 111<+uff="ass=me="L135"> 135 111<+ytasass=me="L135"> 135 *  965ck/sc507octl.c#L112"rrrrrrrref="+code=read_errlated_host" claerr hre="L="L135"> 135siz5s8=sg_res5r="sref">err;
read_okousass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 5s9=sg_res5rss="line" name="L98">  5 that509octl.c#L112"">put_user(0,  * so sur5 this51/scsi_ioctl.c#L89" id="L89" class="5/1="line"5_ioctl.c#L110" id="L110"5class51/a>-> 111GPCMD_PLAY_AUDIO_TI|_TE" 5/2="line"5 int -> 135( 103   ense3" id="L113" clsenseass=sref">GPCMD_PLAY_AUDIO_TI|_TE" 5/f">q5ref">p)
rulated_host" claru hreet_bit(siz5/4">q5 href="+code=put_user" c5ass="51/a>->(( 135{
GPCMD_PLAY_AUDIO_TI|_TE" 5/5=sg_res5ef">p);
 114}
 135];
 135GPCMD_PLAY_AUDIO_TI|_TE" 5/7=sg_res5d_filter" class="sref">b5k_cmd51             return read_okousass=:equest_queue * 118 5     51/a>-> 135( 111
-> *( 135(-> 111<+ytasass=="L7ef="+code=read_OMAX_SB_LENme="L111"> 111 103  =ulated_host" claru hreet_bit( *q5ode=filter" class="sref"5filte52ioctl.c#L112"rrrrrrrrrrrrrrrrrrrrrrrrf="+code=EINVAL=ulated_host" claru hreet_bit( 103  OMAX_SB_LENme="L111"> 111GPCMD_PLAY_AUDIO_TI|_TE" 5a4">q5ode=filter" class="sref"5filte52/a>-> 112{copy_toame=" href="block/scsi_iosiclated_host" clasicass=et_bit( 135( 135 111<+ytasass=""_ioctl.c#L67" id="L67" class="5a5=sg_res5ode=filter" class="sref"5filte52/a>->FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 5a6=sg_res5ode=filter" class="sref"5filte52/a>->put_user(0,  * 112{copy_toame=" href="block/scsi_iosiclated_host" clasicass=et_bit( 135 111<+uff="ass=me="L135"> 135FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 5a href="+5ode=filter" class="sref"5filte53/a>->put_user(0, put_user(0, -&t( 111 *kfree3" id="L113" clkfree href="block/scsi_iobuff="me="L111"> 111<+uff="ass="sref">GPCMD_PLAY_AUDIO_TI|_TE" 5a4">q5ode=filter" class="sref"5filte53/a>->( 111<+codput_ass="li href="block/scsi_iorulated_host" claru hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 5a href="+5ode=filter" class="sref"5filte53/a>->siz5a href="+5ode=filter" class="sref"5filte53ioctl">put_user(0, XPORT_SYMBOL_GP < 0)
XPORT_SYMBOL_GP< href="block/scsi_iosg"ctl.c#L142lated_host" clasg"ctl.c#L142 hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 5a8=sg_res5ode=filter" class="sref"5filte53/scsi_ioctl.c#L67" id="L67" class="5alass="li5ode=filter" class="sref"5filte53     th doing anything abou/* Send basic 67" i co>stat
"*>
-& namic L11r="L135"> 135 111static int ];
 135 135];
);
 15254       111stat siz5a href="+5ode=filter" class="sref"5filte54/a>-> 110siz5a href="+5ode=filter" class="sref"5filte54/a>-&>put_user(0, -> 135 111<+codget_ass="li href="block/scsi_ioulated_host" class="sme="L135"> 135{
 135GPCMD_PLAY_AUDIO_TI|_TE" 5ade=blk_c5ref="block/scsi_ioctl.c#5L46" 54/a>->( 135{
GPCMD_PLAY_AUDIO_TI|_TE" 5a8ame="L15ref="block/scsi_ioctl.c#5L47" 54ioctl.c#L117"ef="+code=sg_emrulated_host" claru hreet_bit(read_oktimeous hre="L="L135"> 135siz5l href="+5 16, 12, 10, 10
->( 135siz5ref">EXPO5RT_SYMBOL(( 135];
siz5r href="+5nd_size_tbl);
(siz5r2="line"5" name="L51">  51#in5clude55/a>-> 135 135 135];
 135GPCMD_PLAY_AUDIO_TI|_TE" 5c href="+5scsi/sg.h>
+codput_ass="lime="L111"> 111<+codput_ass="li href="block/scsi_iorulated_host" claru hre"sref">GPCMD_PLAY_AUDIO_TI|_TE" 5c href="+5a>(int size, p)
siz5r href="+5    static const int put_user(0, p);
);
ted_host" clain/a>)a>-&gL110"> 110 111static int   57}
];
 135];
q, int -&request_queue *p)
 135];
 135 135];
siz5r="sref">5-&">put_user(0, p);
  62}
 110 111static int ];
m5  70{
m5 a>-&g="L135"> 135{
, int -> 135 5 ref=56/a>-&request_queue *-> 110siz5r href="+5s="sref">p);
  67}
-> code=size" class="sref">NXIO/a> < 0)
NXIO href="+code=size" class="sref">siz5tsi_comma5ss="sref">q)
5ef="+code=q" class="sref5">q->  72}
-&th doing anything abouttttttttttttttttt*>
p)
 103  SG_GET_VERSION_NUM2" id="L132" clSG_GET_VERSION_NUMass=:equest_queue *( 135 135siz5t href="+5ss="sref">p);
siz5t href="+5"L78" class="line" name=5"L78"57       if ( 103  SCSI=IOCTL=GET_IDLUNme="L111"> 111 *clock5_t_to58/a>-> rrrrrrrre"L135"> 135 135 135siz5_si_comma5ef">timeout);
siz5_="sref">581" class="line" name="L581"> 58/a>-> 103  SCSI=IOCTL=GET_BUS_NUMBER3" id="L113" clSCSI=IOCTL=GET_BUS_NUMBERass=:equest_queue *err;
 135 135 111 135siz5_ href="+5e="L82">  82}
siz5_ href="+5>, int -> 103  SG_SEl_TIMEOUl2" id="L132" clSG_SEl_TIMEOUlass=:equest_queue *p)
 135 135read_oksg_set_timeous href="block/scsi_ioulated_host" class="sme="L135"> 135siz5_ href="+5ctors" class="sref">queu5e_max587octl.c#L112"rrrrrrrrgt;siz5_ href="+5/a>) << 9);
 103  SG_GET_TIMEOUl2" id="L132" clSG_GEl_TIMEOUlass=:equest_queue *( 135 135read_oksg_get_timeous href="block/scsi_ioulated_host" class="s"f="+code=size" class="sref">siz5e=p" clas5s="sref">p);
siz5esi_comma5e="L89">  89}
 103  SG_GET_RESERVED_SIZE3" id="L113" clSG_GET_RESERVED_SIZEass=:equest_queue *5>, int  135 135read_oksg_get_reserved_size href="block/scsi_ioulated_host" class="sme="L135"> 135siz5eL142" cl5ss="sref">p)
siz5e href="+5_user( 103  SG_SEl_RESERVED_SIZE3" id="L113" clSG_SEl_RESERVED_SIZEass=:equest_queue *p);
 135 135read_oksg_set_reserved_size href="block/scsi_ioulated_host" class="sme="L135"> 135siz5e href="+5="L95" class="line" name5="L9559/a>->siz5e href="+5s="line" name="L96">  965 597octl.c#L112"rrrrrrrrcaseL103"> 103  SG_EMULATED_HOSl2" id="L132" clSG_EMULATED_HOSlass=:equest_queue *err;
 135 135 111 135siz5e href="+5ass="line" name="L98">  598siz6ss="line"6name="L99">  99     6     60/a>-> caseL103"> 103  SG_IO/a> < 0)
 *  89}
-&g="L135"> 135-&f="+code=size" class="sref">siz6s2="line"6n, int siz6s3="line"6ns="sref">p)
 135FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 6s4">q6 user( 112{copy_fromame=" href&c" id="L77" clashdrlated_host" clahdra>-&me="L135"> 135-&)""_ioctl.c#L67" id="L67" class="6s5=sg_res6rs="sref">p);
->siz6s6=sg_res6r"L95" class="line" name6k/scs60/a>-> 135 135 135];
-&me="L135"> 135{
siz6s7=sg_res6r="line" name="L96">  966ck/sc607octl.c#L112"rrrrrrrrgt;FAULl2" id="L132" cl>FAULllter"_ioctl.c#L67" id="L67" class="6s8=sg_res6r="sref">err;
siz6s9=sg_res6rss="line" name="L98">  6 that60/a>-&ref">GPCMD_PLAY_AUDIO_TI|_TE" 6/a> * so sur6 this61/a>-> gt; 112{copy_toame=" href="block/scsi_ioarglated_host" claarg
-&mesizeoff="block/scsi_iohdrlated_host" clahdra>-&)""_ioctl.c#L67" id="L67" class="6/1="line"6_ioctl.c#L110" id="L110"6class611      if ( 135FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 6/2="line"6 int siz6/f">q6ref">p)
put_user(0, q6 href="+code=put_user" c6ass="61/a>-> 103  CDROM_SEND_PACKEl2" id="L132" clCDROM_SEND_PACKElass=: request_queue *p);
 141lated_host" clacdromageneric_1"> 141a>-&g="L135"> 135GPCMD_PLAY_AUDIO_TI|_TE" 6/6=sg_res64"> 114}
-&g="L135"> 135-&f="+code=size" class="sref">siz6/7=sg_res6d_filter" class="sref">b6k_cmd61             return  135FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 6/9=sg_res6e" name="L118"> 118 6     61       if ( 112{copy_fromame=" href&c" id="L77" clascgclated_host" clacgclterme="L135"> 135-> gt;siz6a1="line"6ode=filter" class="sref"6filte621      if ( 135 135read_oktimeous hre="L="L135"> 135 135read_oktimeous hre"f="+code=size" class="sref">siz6a2="line"6ode=filter" class="sref"6filte62/a>-> 111-&me0,Lsizeoff="block/scsi_iohdrlated_host" clahdra>-&)"f="+code=size" class="sref">siz6af">q6ode=filter" class="sref"6filte62ioctl.c#L112"rrrrrrrrrrrrrrrr="block/scsi_iohdrlated_host" clahdra>-&.e"L135"> 135'S'
siz6a4">q6ode=filter" class="sref"6filte62/a>->-&.e"L135"> 135 135siz6a5=sg_res6ode=filter" class="sref"6filte62/a>->-&.e"L135"> 135 135 135GPCMD_PLAY_AUDIO_TI|_TE" 6a6=sg_res6ode=filter" class="sref"6filte62/a>->siz6a7=sg_res6ode=filter" class="sref"6filte627octl.c#L112"rrrrrrrrgt; 135 * 103  CGC_DATA_UNKNOWNme="L111"> 111 *-&.e"L135"> 135 135 111GPCMD_PLAY_AUDIO_TI|_TE" 6a href="+6ode=filter" class="sref"6filte63/a>-> gt;siz6a href="+6ode=filter" class="sref"6filte631      if ( 103  CGC_DATA_WRITE 70{
 *->-&.e"L135"> 135 135 111GPCMD_PLAY_AUDIO_TI|_TE" 6af">q6ode=filter" class="sref"6filte63ioctl.c#L112"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrbreakf="+code=size" class="sref">siz6a4">q6ode=filter" class="sref"6filte63/a>-> 103  CGC_DATA_RE408" id="L128" clCGC_DATA_RE40ass=:equest_queue *->-&.e"L135"> 135 135 111GPCMD_PLAY_AUDIO_TI|_TE" 6a6=sg_res6ode=filter" class="sref"6filte63/a>->siz6a7=sg_res6ode=filter" class="sref"6filte637octl.c#L112"rrrrrrrrgt; 103  CGC_DATA_NONE 70{
 *-&.e"L135"> 135 135{
GPCMD_PLAY_AUDIO_TI|_TE" 6a9=sg_res6ode=filter" class="sref"6filte63       if (siz6a href="+6ode=filter" class="sref"6filte64/a>-> gt;INVA < 0)
INVAGPCMD_PLAY_AUDIO_TI|_TE" 6a2="line"6ead_ok);
put_user(0,  16264ioctl.c#L112"rrrrrrrrrrrrrrrr href="+code=EINVALerrlated_host" claerr hre"_ioctl.c#L67" id="L67" class="6a href="+6ode=filter" class="sref"6filte64/a>->siz6a5=sg_res6ode=filter" class="sref"6filte64/a>-&>put_user(0, ->-&.e"L135"> 135 135 135 111<+uff="ass=f="+code=size" class="sref">siz6a7=sg_res6ref="block/scsi_ioctl.c#6L46" 647octl.c#L112"rrrrrrrrrrrrrrrre"L135"> 135-&.e"L135"> 135 135 135GPCMD_PLAY_AUDIO_TI|_TE" 6a8ame="L16ref="block/scsi_ioctl.c#6L47" 64ioctl.c#L117"gt;-&.e"L135"> 135-&.e"L135"> 135siz6ref">EXPO6RT_SYMBOL( 135-&.e"L135"> 135read_oktimeous hre="L="L135"> 135 135read_oktimeous hre"f="+code=size" class="sref">siz6r href="+6nd_size_tbl);
 135-&.e"L135"> 135 141lated_host" clacdromageneric_1"> 141a>-&g="L135"> 135 135siz6r2="line"6" name="L51">  51#in6clude65/a>->-&.e"L135"> 135 135siz6c href="+6scsi/sg.h>
-> 135 135];
-&me="L135"> 135{
p)
FAULl2" id="L132" cl>FAULllter"_ioctl.c#L67" id="L67" class="6r href="+6    static const int ->siz6c href="+6code=sg_version_num" cla6ss="s65             return p);
-&.e"L135"> 135  57}
IO/a> < 0)
IO href="+code=size" class="sref">siz6ref">q, int p)
 135 135 135siz6r="sref">6-> 135 135-&.e"L135"> 135siz6r href="+6s="sref">p);
 112{copy_toame=" href="block/scsi_ioarglated_host" claarg
  62}
FAULl2" id="L132" cl>FAULlltersref">GPCMD_PLAY_AUDIO_TI|_TE" 6r href="+6>, int -&>put_user(0,  6 ref=66/a>->siz6r href="+6put_user(0, p);
  67}
-&th doing anything abouttttttttttttttttt* old junk ctl. send 1"> 141 #L142 ha href="block/scsi_ioctl.c#L142" id6tsi_comma6ss="sref">q)
6ef="+code=q" class="sref6">q-> 103  SCSI=IOCTL=SEND_COMMAN08" id="L128" clSCSI=IOCTL=SEND_COMMAN0ass=:equest_queue *);
];
-&g=h doing anytl.cing">"program %s is using a deprecatid SCSI href=, pleaseLconvert it to SG_IO\n"
 135-&et_bit( 112{commock/"f="+codser(0,   72}
INVA < 0)
INVAGPCMD_PLAY_AUDIO_TI|_TE" 6t href="+6>, int ->p)
siz6t href="+6/a>(p);
 135 135];
 135{
 135siz6t href="+6"L78" class="line" name=6"L78"67       if (siz6_t_to_jif6fies" class="sref">clock6_t_to68/a>-> caseL103"> 103  CDROMCLOSETRAY 70{
 *timeout);
 135 135];
siz6_="sref">681" class="line" name="L681"> 68/a>->siz6_ href="+6="sref">err;
 103  CDROMEJECl2" id="L132" clCDROMEJEClass=:equest_queue *  82}
 135 135];
siz6_ href="+6>, int ->siz6_ href="+6ss="sref">p)
 *queu6e_max687octl.c#L112"rrrrrrrrgt;NOTTY 70{
NOTTYltersref">GPCMD_PLAY_AUDIO_TI|_TE" 6_ href="+6/a>) << 9);
put_user(0, (GPCMD_PLAY_AUDIO_TI|_TE" 6e=p" clas6s="sref">p);
siz6esi_comma6e="L89">  89}
put_user(0, 6>, int -&t(siz6eL142" cl6ss="sref">p)
-&L110"> 110(0_devic/ 70{
(0_devic/a>-&g*="L135"> 135];
 135p);
];
 135];
 135];
( 111<+d_containsass="f="block/scsi_ioctl.c#L142" id6e href="+6s="line" name="L96">  966 697octl.c#L112"rrrrrrrrcode=sief="+code=size" class="sref">siz6e href="+6s="sref">err;
  698  99     7     70/a>-&th doing anything abouttttttttt* but they are safe.
  89}
-&th doing anything abouttttttttt*>
p)
 103  SCSI=IOCTL=GET_IDLUNme="L111"> 111 *q7 user( 103  SCSI=IOCTL=GET_BUS_NUMBER3" id="L113" clSCSI=IOCTL=GET_BUS_NUMBERass=:equest_queue *p);
-> 103  SCSI=IOCTL=GET_PCI3" id="L113" clSCSI=IOCTL=GET_PCIass=:equest_queue *-> 103  SCSI=IOCTL=PROBE_HOSl2" id="L132" clSCSI=IOCTL=PROBE_HOSlass=:equest_queue *  967ck/sc707octl.c#L112"caseL103"> 103  SG_GET_VERSION_NUM2" id="L132" clSG_GET_VERSION_NUMass=:equest_queue *err;
 103  SG_SEl_TIMEOUl2" id="L132" clSG_SEl_TIMEOUlass=:equest_queue *  7 that709octl.c#L112"caseL103"> 103  SG_GET_TIMEOUl2" id="L132" clSG_GEl_TIMEOUlass=:equest_queue * * so sur7 this71/a>-> 103  SG_GET_RESERVED_SIZE3" id="L113" clSG_GET_RESERVED_SIZEass=:equest_queue * 103  SG_SEl_RESERVED_SIZE3" id="L113" clSG_SEl_RESERVED_SIZEass=:equest_queue * 103  SG_EMULATED_HOSl2" id="L132" clSG_EMULATED_HOSlass=:equest_queue *q7ref">p)
siz7/4">q7 href="+code=put_user" c7ass="71/a>-> 103  CDROM_GET_CAPABILITY 70{
 *p);
 114}
b7k_cmd71     th doing anything abouttttttttttttttttt* not have partitions, so werget here only for disRs.
)
 118 7     71       if (NOIOCTLCM08" id="L128" cl>NOIOCTLCM0 href="+code=size" class="sref">siz7a href="+7ode=filter" class="sref"7filte72/a>->siz7a2="line"7ode=filter" class="sref"7filte72/a>->put_user(0, q7ode=filter" class="sref"7filte72     >put_user(0, q7ode=filter" class="sref"7filte72/a>-> < 0)
put_user(0, ->siz7a6=sg_res7ode=filter" class="sref"7filte72/a>-&="+code=size" class="sref">siz7a7=sg_res7ode=filter" class="sref"7filte727octl.c#L112"th doing anything abou/* In particular, rule out all resets 141 holi-specific href=s.tt*>
"%s: sending #L142 %x to a partition!\n"
 135-&et_bit( 112{commock/me="L135"> 135siz7a href="+7ode=filter" class="sref"7filte73/scsi_ioctl.c#L89" id="L89" class="7a href="+7ode=filter" class="sref"7filte731      if (NOIOCTLCM08" id="L128" cl>NOIOCTLCM0 href="+code=size" class="sref">siz7a2="line"7ode=filter" class="sref"7filte73/a>-&">put_user(0, q7ode=filter" class="sref"7filte73ioctlt(siz7a4">q7ode=filter" class="sref"7filte73class="sref">size, -&L110"> 110(0_devic/ 70{
(0_devic/a>-&g*="L135"> 135];
 135m5  70{
m5 a>-&g="L135"> 135{
-> 135 * 135 111siz7a9=sg_res7ode=filter" class="sref"7filte73/a>-&ref">GPCMD_PLAY_AUDIO_TI|_TE" 7a href="+7ode=filter" class="sref"7filte74/a>-> 135 111 135 135];
 135siz7a href="+7ode=filter" class="sref"7filte741      if ( 111);
 111siz7a href="+7ss="line" name="L142"> 17274     >put_user(0, -> 135];
( 111 135];
( 135{
 135siz7a5=sg_res7ode=filter" class="sref"7filte74/a>-&">put_user(0, -&t(siz7a7=sg_res7ref="block/scsi_ioctl.c#7L46" 74             return  135 111<__ini-&g="L135"> 135 111< cods href="+c_ini< hrefvoid"f="block/scsi_ioctl.c#L142" id7a9=sg_res7 16, 12, 10, 10
 *EXPO7RT_SYMBOL( 135 111<+codsethcm1_filter_dd="L11s href&c" id="L77" clas+coddd="L11hcm1_filterme="L111"> 111<+coddd="L11hcm1_filter hre"f="+code=size" class="sref">siz7r href="+7nd_size_tbl);
siz7r2="line"7" name="L51">  51#in7clude75/a>-&">put_user(0, >
 135 111< cods href="+c_ini< hre"f="+code=size" class="sref">siz7r href="+7a>(int -&


The original LXR software by the "+code=sihttp://sourceforge.net/projects/lxrm>LXR communilxr@refux.noass=.
lxr.refux.no kindly holiid=by "+code=sihttp://www.redpill-refpro.no">Redpill Lefpro ASass=meprovider of LefuxLconsL11ing and operations servic/s since 1995.