linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: tj@kernel.org, "James E.J. Bottomley" <JBottomley@parallels.com>,
	linux-scsi@vger.kernel.org, Jens Axboe <axboe@kernel.dk>
Subject: [PATCH v3 part3 3/7] sg_io: cleanup and complete whitelist for rare device types
Date: Thu, 23 May 2013 15:59:31 +0200	[thread overview]
Message-ID: <1369317575-4236-4-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1369317575-4236-1-git-send-email-pbonzini@redhat.com>

Start cleaning up the table, moving out of the way four rare & obsolete
device types: printers, communication devices (network cards), and
processor devices.

This patch is included mostly for tidiness, so that flags for obsolete
device types do not clutter the other entries.  However, it adds two
commands for printers: SLEW AND PRINT and SYNCHRONIZE BUFFER.  These are
present even in SCSI-2 (dated 1994).

Processor devices could also do EXTENDED COPY operations, but these
should not be allowed for unprivileged users because they can read/write
to other devices.

Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/scsi_ioctl.c | 41 ++++++++++++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 9 deletions(-)

diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 8f0344f..41bbd93 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -142,7 +142,7 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
 	sgio_bitmap_set(0x03, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C, read);  /* REQUEST SENSE */
 	sgio_bitmap_set(0x12, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C, read);  /* INQUIRY */
 	sgio_bitmap_set(0x1A, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C, read);  /* MODE SENSE(6) */
-	sgio_bitmap_set(0x1B, D|T|L|  W|R|O|M|A|  B|K|V|F  , read);  /* START STOP UNIT */
+	sgio_bitmap_set(0x1B, D|T|    W|R|O|M|A|  B|K|V|F  , read);  /* START STOP UNIT */
 	sgio_bitmap_set(0x1C, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C, read);  /* RECEIVE DIAGNOSTIC RESULTS */
 	sgio_bitmap_set(0x2B, D|T|    W|R|O|M|      K      , read);  /* SEEK(10) */
 	sgio_bitmap_set(0x3C, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C, read);  /* READ BUFFER */
@@ -161,21 +161,21 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
 
 	/* read */
 
-	sgio_bitmap_set(0x08, D|T|  P|W|  O|              C, read);  /* READ(6) */
+	sgio_bitmap_set(0x08, D|T|    W|  O                , read);  /* READ(6) */
 	sgio_bitmap_set(0x25, D|      W|R|O|      B|K      , read);  /* READ CAPACITY(10) */
-	sgio_bitmap_set(0x28, D|      W|R|O|      B|K|    C, read);  /* READ(10) */
+	sgio_bitmap_set(0x28, D|      W|R|O|      B|K      , read);  /* READ(10) */
 	sgio_bitmap_set(0x2F, D|      W|R|O                , read);  /* VERIFY(10) */
 	sgio_bitmap_set(0x37, D|          O|M              , read);  /* READ DEFECT DATA(10) */
 	sgio_bitmap_set(0x3E, D|      W|  O                , read);  /* READ LONG(10) */
 	sgio_bitmap_set(0x88, D|T|    W|  O|      B        , read);  /* READ(16) */
 	sgio_bitmap_set(0x8F, D|T|    W|  O|      B        , read);  /* VERIFY(16) */
-	sgio_bitmap_set(0xA8, D|      W|R|O|              C, read);  /* READ(12) */
+	sgio_bitmap_set(0xA8, D|      W|R|O                , read);  /* READ(12) */
 
 	/* write */
 
-	sgio_bitmap_set(0x04, D|T|L|    R|O                , write); /* FORMAT UNIT */
-	sgio_bitmap_set(0x0A, D|T|L|P|W|  O|              C, write); /* WRITE(6) */
-	sgio_bitmap_set(0x2A, D|      W|R|O|      B|K|    C, write); /* WRITE(10) */
+	sgio_bitmap_set(0x04, D|T|      R|O                , write); /* FORMAT UNIT */
+	sgio_bitmap_set(0x0A, D|T|    W|  O                , write); /* WRITE(6) */
+	sgio_bitmap_set(0x2A, D|      W|R|O|      B|K      , write); /* WRITE(10) */
 	sgio_bitmap_set(0x2E, D|      W|R|O|      B|K      , write); /* WRITE AND VERIFY(10) */
 	sgio_bitmap_set(0x35, D|      W|R|O|      B|K      , write); /* SYNCHRONIZE CACHE(10) */
 	sgio_bitmap_set(0x3F, D|      W|  O                , write); /* WRITE LONG(10) */
@@ -183,11 +183,20 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
 	sgio_bitmap_set(0x48, D|                  B        , write); /* SANITIZE */
 	sgio_bitmap_set(0x51, D                            , write); /* XPWRITE(10) */
 	sgio_bitmap_set(0x8A, D|T|    W|  O|      B        , write); /* WRITE(16) */
-	sgio_bitmap_set(0xAA, D|      W|R|O|              C, write); /* WRITE(12) */
+	sgio_bitmap_set(0xAA, D|      W|R|O                , write); /* WRITE(12) */
 	sgio_bitmap_set(0xAC,             O                , write); /* ERASE(12) */
 	sgio_bitmap_set(0xAE, D|      W|  O                , write); /* WRITE AND VERIFY(12) */
 	sgio_bitmap_set(0xEA, D|      W|  O                , write); /* WRITE_LONG_2 ?? */
 
+	/* printer */
+
+	sgio_bitmap_set(0x04,     L                        , write); /* FORMAT */
+	sgio_bitmap_set(0x0A,     L                        , write); /* PRINT */
+	sgio_bitmap_set(0x0B,     L                        , write); /* SLEW AND PRINT */
+	sgio_bitmap_set(0x10,     L                        , write); /* SYNCHRONIZE BUFFER */
+	sgio_bitmap_set(0x14,     L                        , write); /* RECOVER BUFFERED DATA */
+	sgio_bitmap_set(0x1B,     L                        , write); /* STOP PRINT */
+
 	/* MMC */
 
 	sgio_bitmap_set(0x23,           R                  , read);  /* READ FORMAT CAPACITIES */
@@ -230,6 +239,20 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
 
 	sgio_bitmap_set(0x19,   T                          , write); /* ERASE(6) */
 
+	/* communication devices (obsolete) */
+
+	sgio_bitmap_set(0x08,                             C, read);  /* GET MESSAGE(6) */
+	sgio_bitmap_set(0x28,                             C, read);  /* GET MESSAGE(10) */
+	sgio_bitmap_set(0xA8,                             C, read);  /* GET MESSAGE(12) */
+	sgio_bitmap_set(0x0A,                             C, write); /* SEND MESSAGE(6) */
+	sgio_bitmap_set(0x2A,                             C, write); /* SEND MESSAGE(10) */
+	sgio_bitmap_set(0xAA,                             C, write); /* SEND MESSAGE(12) */
+
+	/* processor devices (mostly obsolete, SPC-2) */
+
+	sgio_bitmap_set(0x08,       P                      , read);  /* RECEIVE(6) */
+	sgio_bitmap_set(0x0A,       P                      , write); /* SEND(6) */
+
 #undef D
 #undef T
 #undef L
-- 
1.8.1.4

  parent reply	other threads:[~2013-05-23 13:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1369317575-4236-1-git-send-email-pbonzini@redhat.com>
2013-05-23 13:59 ` [PATCH v3 part3 1/7] sg_io: complete transition to per-class lists of allowed commands Paolo Bonzini
2013-05-23 13:59 ` [PATCH v3 part3 2/7] sg_io: create separate entries for conflicting commands Paolo Bonzini
2013-05-23 13:59 ` Paolo Bonzini [this message]
2013-05-23 13:59 ` [PATCH v3 part3 4/7] sg_io: whitelist another command for multimedia devices Paolo Bonzini
2013-05-23 13:59 ` [PATCH v3 part3 5/7] sg_io: cleanup and complete whitelist for media changers Paolo Bonzini
2013-05-23 13:59 ` [PATCH v3 part3 6/7] sg_io: cleanup and complete whitelist for tapes Paolo Bonzini
2013-05-23 13:59 ` [PATCH v3 part3 7/7] sg_io: cleanup and complete whitelist for disks Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1369317575-4236-4-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=JBottomley@parallels.com \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).