Loading drivers/ide/ide-floppy_ioctl.c +13 −11 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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) { Loading Loading @@ -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: Loading Loading
drivers/ide/ide-floppy_ioctl.c +13 −11 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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) { Loading Loading @@ -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: Loading