Date: Tue, 27 Nov 2018 13:45:14 +0000 From: Alexey Dokuchaev <danfe@freebsd.org> To: Steven Hartland <smh@freebsd.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r249115 - in head: sbin/camcontrol sys/sys Message-ID: <20181127134514.GA1580@FreeBSD.org> In-Reply-To: <201304042319.r34NJqIP040377@svn.freebsd.org> References: <201304042319.r34NJqIP040377@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20181127134514.GA1580>