svn commit: r249115 - in head: sbin/camcontrol sys/sys
Alexey Dokuchaev
danfe at freebsd.org
Tue Nov 27 13:45:14 UTC 2018
On Thu, Apr 04, 2013 at 11:19:52PM +0000, Steven Hartland wrote:
> New Revision: 249115
> URL: http://svnweb.freebsd.org/changeset/base/249115
>
> Log:
> Adds security options to camcontrol this includes the ability to secure
> erase disks such as SSD's
>
> Adds the ability to run ATA commands via the SCSI ATA Pass-Through(16)
> com[m]and
>
> Modified: head/sbin/camcontrol/camcontrol.c
>
> [...]
> +static int
> +ata_do_identify(struct cam_device *device, int retry_count, int timeout,
> + union ccb *ccb, struct ata_params** ident_bufp)
> +{
> [...]
> +
> + error = ata_do_28bit_cmd(device,
> + ccb,
> + /*retries*/retry_count,
> + /*flags*/CAM_DIR_IN,
> + /*protocol*/AP_PROTO_PIO_IN,
> + /*tag_action*/MSG_SIMPLE_Q_TAG,
> + /*command*/command,
> + /*features*/0,
> + /*lba*/0,
> + /*sector_count*/(u_int8_t)sizeof(struct ata_params),
This looks strange: sizeof(struct ata_params) is 512, but it is too wide
for u_int8_t, so it would be truncated to zero. Should it be 1 (one) here
instead for ATA_ATA_IDENTIFY command, since it normally returns some data
which typically fits one sector (>=512 bytes)?
> + /*data_ptr*/(u_int8_t *)ptr,
> + /*dxfer_len*/sizeof(struct ata_params),
> + /*timeout*/timeout ? timeout : 30 * 1000,
> + /*quiet*/1);
>
> [...]
> + error = ata_do_28bit_cmd(device,
> + ccb,
> + /*retries*/retry_count,
> + /*flags*/CAM_DIR_IN,
> + /*protocol*/AP_PROTO_PIO_IN,
> + /*tag_action*/MSG_SIMPLE_Q_TAG,
> + /*command*/retry_command,
> + /*features*/0,
> + /*lba*/0,
> + /*sector_count*/(u_int8_t)
> + sizeof(struct ata_params),
Same here.
> + /*data_ptr*/(u_int8_t *)ptr,
> + /*dxfer_len*/sizeof(struct ata_params),
> + /*timeout*/timeout ? timeout : 30 * 1000,
> + /*quiet*/0);
./danfe
More information about the svn-src-all
mailing list