forked from luck/tmp_suning_uos_patched
for-linus-20180920
-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAlukFZsQHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgpi5MD/424bOq72KPsGNGU6io2c56ecIDItpZiDvq srDPKN/pdGQ5WZuP2E21Zz+Ry/LP4niUvjZmY88UC9SXx9nxkESyCccxVFGmlGXN Ttno1l47bu9nvAVPBdZ8brvsODCXk03RiJUDf9NrJsROMB3Xhbo1DtxyjwFwJ/Fr aokAD3KvFitIbrHhTozxyvzpT55icVu+ykNQypnwdmWSyvebuCvrnQTxRJDNyrgk wYUB9bhjGaCJzfBT4U7Pi5Is7t16cOSLmw0nv7uo/CUvk1xmSNajxRybCG1IEIFs eg7Xyo2AFd/+BMwp7cFdOncjLbLzNJW0tJn3bsoJXPVE+MAy2EYYgk760fgqePMV 8afzG6l+obDCefCySj6SMVhXZi3YE640MHWeRBxGJVW5HmWq7Himlt2BUJBvcP72 y6syVoU5gkOTtUun60uF4Lloc0If6MPqvHA5mfDQx6hmQEi/H2XBE0YJxyQoxsZg 8FDq6KMBlmBlxdzfCtOMGNPPS9LIilvgFUpfsR3XzbY5nUhKB4ZZmMCWe9qm6hOl 1yoT6RS1tNV5PL1wQu1cj+d/RHaM7ok0F9FeKhofh1w3NG2x1qajTLNHLb/no7u2 eOJ8mmDxOvJOmU+9H7/Eu4jb2jhpaZPlrX//lxF3VzJcfGwU1wprjsbAjB9mxN1i 4k8CjG0h6w== =z9pB -----END PGP SIGNATURE----- Merge tag 'for-linus-20180920' of git://git.kernel.dk/linux-block Jens writes: "Storage fixes for 4.19-rc5 - Fix for leaking kernel pointer in floppy ioctl (Andy Whitcroft) - NVMe pull request from Christoph, and a single ANA log page fix (Hannes) - Regression fix for libata qd32 support, where we trigger an illegal active command transition. This fixes a CD-ROM detection issue that was reported, but could also trigger premature completion of the internal tag (me)" * tag 'for-linus-20180920' of git://git.kernel.dk/linux-block: floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl libata: mask swap internal and hardware tag nvme: count all ANA groups for ANA Log page
This commit is contained in:
commit
211b100a5c
|
@ -5359,10 +5359,20 @@ void ata_qc_complete(struct ata_queued_cmd *qc)
|
||||||
*/
|
*/
|
||||||
int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active)
|
int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active)
|
||||||
{
|
{
|
||||||
|
u64 done_mask, ap_qc_active = ap->qc_active;
|
||||||
int nr_done = 0;
|
int nr_done = 0;
|
||||||
u64 done_mask;
|
|
||||||
|
|
||||||
done_mask = ap->qc_active ^ qc_active;
|
/*
|
||||||
|
* If the internal tag is set on ap->qc_active, then we care about
|
||||||
|
* bit0 on the passed in qc_active mask. Move that bit up to match
|
||||||
|
* the internal tag.
|
||||||
|
*/
|
||||||
|
if (ap_qc_active & (1ULL << ATA_TAG_INTERNAL)) {
|
||||||
|
qc_active |= (qc_active & 0x01) << ATA_TAG_INTERNAL;
|
||||||
|
qc_active ^= qc_active & 0x01;
|
||||||
|
}
|
||||||
|
|
||||||
|
done_mask = ap_qc_active ^ qc_active;
|
||||||
|
|
||||||
if (unlikely(done_mask & qc_active)) {
|
if (unlikely(done_mask & qc_active)) {
|
||||||
ata_port_err(ap, "illegal qc_active transition (%08llx->%08llx)\n",
|
ata_port_err(ap, "illegal qc_active transition (%08llx->%08llx)\n",
|
||||||
|
|
|
@ -3467,6 +3467,9 @@ static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode, unsigned int
|
||||||
(struct floppy_struct **)&outparam);
|
(struct floppy_struct **)&outparam);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
memcpy(&inparam.g, outparam,
|
||||||
|
offsetof(struct floppy_struct, name));
|
||||||
|
outparam = &inparam.g;
|
||||||
break;
|
break;
|
||||||
case FDMSGON:
|
case FDMSGON:
|
||||||
UDP->flags |= FTD_MSG;
|
UDP->flags |= FTD_MSG;
|
||||||
|
|
|
@ -245,6 +245,10 @@ static void nvmet_execute_get_log_page_ana(struct nvmet_req *req)
|
||||||
offset += len;
|
offset += len;
|
||||||
ngrps++;
|
ngrps++;
|
||||||
}
|
}
|
||||||
|
for ( ; grpid <= NVMET_MAX_ANAGRPS; grpid++) {
|
||||||
|
if (nvmet_ana_group_enabled[grpid])
|
||||||
|
ngrps++;
|
||||||
|
}
|
||||||
|
|
||||||
hdr.chgcnt = cpu_to_le64(nvmet_ana_chgcnt);
|
hdr.chgcnt = cpu_to_le64(nvmet_ana_chgcnt);
|
||||||
hdr.ngrps = cpu_to_le16(ngrps);
|
hdr.ngrps = cpu_to_le16(ngrps);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user