Commit 5122e517 authored by Borislav Petkov's avatar Borislav Petkov
Browse files

ide-floppy/ide_floppy_format_unit: use local buffer



Pass the buffer into ide_floppy_create_format_unit_cmd instead of using
pc->buf.

There should be no functional change resulting from this patch.

Signed-off-by: default avatarBorislav Petkov <petkovbb@gmail.com>
parent 802e6634
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -93,24 +93,25 @@ static int ide_floppy_get_format_capacities(ide_drive_t *drive,
	return 0;
}

static void ide_floppy_create_format_unit_cmd(struct ide_atapi_pc *pc, int b,
		int l, int flags)
static void ide_floppy_create_format_unit_cmd(struct ide_atapi_pc *pc,
					      u8 *buf, int b, int l,
					      int flags)
{
	ide_init_pc(pc);
	pc->c[0] = GPCMD_FORMAT_UNIT;
	pc->c[1] = 0x17;

	memset(pc->buf, 0, 12);
	pc->buf[1] = 0xA2;
	memset(buf, 0, 12);
	buf[1] = 0xA2;
	/* Default format list header, u8 1: FOV/DCRT/IMM bits set */

	if (flags & 1)				/* Verify bit on... */
		pc->buf[1] ^= 0x20;		/* ... turn off DCRT bit */
	pc->buf[3] = 8;
		buf[1] ^= 0x20;			/* ... turn off DCRT bit */
	buf[3] = 8;

	put_unaligned(cpu_to_be32(b), (unsigned int *)(&pc->buf[4]));
	put_unaligned(cpu_to_be32(l), (unsigned int *)(&pc->buf[8]));
	pc->buf_size = 12;
	put_unaligned(cpu_to_be32(b), (unsigned int *)(&buf[4]));
	put_unaligned(cpu_to_be32(l), (unsigned int *)(&buf[8]));
	pc->req_xfer = 12;
	pc->flags |= PC_FLAG_WRITING;
}

@@ -137,6 +138,7 @@ static int ide_floppy_format_unit(ide_drive_t *drive, struct ide_atapi_pc *pc,
				  int __user *arg)
{
	struct ide_disk_obj *floppy = drive->driver_data;
	u8 buf[12];
	int blocks, length, flags, err = 0;

	if (floppy->openers > 1) {
@@ -170,9 +172,9 @@ static int ide_floppy_format_unit(ide_drive_t *drive, struct ide_atapi_pc *pc,
	}

	ide_floppy_get_sfrp_bit(drive, pc);
	ide_floppy_create_format_unit_cmd(pc, blocks, length, flags);
	ide_floppy_create_format_unit_cmd(pc, buf, blocks, length, flags);

	if (ide_queue_pc_tail(drive, floppy->disk, pc, pc->buf, pc->req_xfer))
	if (ide_queue_pc_tail(drive, floppy->disk, pc, buf, pc->req_xfer))
		err = -EIO;

out: