mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
block-6.12-20241004
-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmcAA+4QHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgprKuD/99KWHNFwDyhwPVRlK8ZiCo556DWJ9sT6aJ ICt0MAehx2KUgjQTcOoAE0gPAd2ASJA+hisvY5yiMtXNvOgyYXcUfH+UqYoFWSO8 O7vm7/w/YK3jvuwRwTDSH2s3+L/j3oROHZQSZVAkoi9KcbAaPt5FbFbpqWmAuBgJ ymsGWybW27GSOCDh55Jnm4IDaHMUfpcsvEg8Ryl6DyD2C0ZkMy64DmGiopUKCyML ceeiVUboNzWYg9qeZswKm1OVSSzZWocy4zDbJYjueVPmr7juvQ4ILxHDqKhTOZpO JHBnI1c3i6pOyZqtyaU3Eb/I0b3ZebwFhY3p1+CxkW1FIatrML86/b0ZIxowEiJO a8tRHkk2fXaTyuaxTPlkaE9P5cIK/BpEvxn/v8mddVPTwjAAAULINfZAYoGhwWyF cSQuN+BOJnxU6DUp66OVKlxhLiZAttBy+kyCPaLUVLyJX7w/VaQz2PwQjzHybjy7 zNz7M4x4/06bFC3ykmLgIRM+Hqo+El0SE6wx/GHi70GuC+cqkHnfUL4Yscj1t6SD Uadul3PYaxVBZ7lcdHy09iD8JxdF1wYxyqiGULi7DPyUqBJ2r4e/TH2x2MxZ3sKA CEWBVHZ8yNdfckhybLArbdkQYd+GaiFna/ySUvMjrAdF2Hes42uo9eF4L5tAFtxq pKg3IPp0oA== =ujN7 -----END PGP SIGNATURE----- Merge tag 'block-6.12-20241004' of git://git.kernel.dk/linux Pull block fixes from Jens Axboe: - Fix another use-after-free in aoe - Fixup wrong nested non-saving irq disable/restore in blk-iocost - Fixup a kerneldoc complaint introduced by a merge window patch * tag 'block-6.12-20241004' of git://git.kernel.dk/linux: aoe: fix the potential use-after-free problem in more places blk_iocost: remove some duplicate irq disable/enables block: fix blk_rq_map_integrity_sg kernel-doc
This commit is contained in:
commit
360c1f1f24
@ -56,8 +56,7 @@ new_segment:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* blk_rq_map_integrity_sg - Map integrity metadata into a scatterlist
|
* blk_rq_map_integrity_sg - Map integrity metadata into a scatterlist
|
||||||
* @q: request queue
|
* @rq: request to map
|
||||||
* @bio: bio with integrity metadata attached
|
|
||||||
* @sglist: target scatterlist
|
* @sglist: target scatterlist
|
||||||
*
|
*
|
||||||
* Description: Map the integrity vectors in request into a
|
* Description: Map the integrity vectors in request into a
|
||||||
|
@ -3166,7 +3166,7 @@ static u64 ioc_qos_prfill(struct seq_file *sf, struct blkg_policy_data *pd,
|
|||||||
if (!dname)
|
if (!dname)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
spin_lock_irq(&ioc->lock);
|
spin_lock(&ioc->lock);
|
||||||
seq_printf(sf, "%s enable=%d ctrl=%s rpct=%u.%02u rlat=%u wpct=%u.%02u wlat=%u min=%u.%02u max=%u.%02u\n",
|
seq_printf(sf, "%s enable=%d ctrl=%s rpct=%u.%02u rlat=%u wpct=%u.%02u wlat=%u min=%u.%02u max=%u.%02u\n",
|
||||||
dname, ioc->enabled, ioc->user_qos_params ? "user" : "auto",
|
dname, ioc->enabled, ioc->user_qos_params ? "user" : "auto",
|
||||||
ioc->params.qos[QOS_RPPM] / 10000,
|
ioc->params.qos[QOS_RPPM] / 10000,
|
||||||
@ -3179,7 +3179,7 @@ static u64 ioc_qos_prfill(struct seq_file *sf, struct blkg_policy_data *pd,
|
|||||||
ioc->params.qos[QOS_MIN] % 10000 / 100,
|
ioc->params.qos[QOS_MIN] % 10000 / 100,
|
||||||
ioc->params.qos[QOS_MAX] / 10000,
|
ioc->params.qos[QOS_MAX] / 10000,
|
||||||
ioc->params.qos[QOS_MAX] % 10000 / 100);
|
ioc->params.qos[QOS_MAX] % 10000 / 100);
|
||||||
spin_unlock_irq(&ioc->lock);
|
spin_unlock(&ioc->lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3366,14 +3366,14 @@ static u64 ioc_cost_model_prfill(struct seq_file *sf,
|
|||||||
if (!dname)
|
if (!dname)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
spin_lock_irq(&ioc->lock);
|
spin_lock(&ioc->lock);
|
||||||
seq_printf(sf, "%s ctrl=%s model=linear "
|
seq_printf(sf, "%s ctrl=%s model=linear "
|
||||||
"rbps=%llu rseqiops=%llu rrandiops=%llu "
|
"rbps=%llu rseqiops=%llu rrandiops=%llu "
|
||||||
"wbps=%llu wseqiops=%llu wrandiops=%llu\n",
|
"wbps=%llu wseqiops=%llu wrandiops=%llu\n",
|
||||||
dname, ioc->user_cost_model ? "user" : "auto",
|
dname, ioc->user_cost_model ? "user" : "auto",
|
||||||
u[I_LCOEF_RBPS], u[I_LCOEF_RSEQIOPS], u[I_LCOEF_RRANDIOPS],
|
u[I_LCOEF_RBPS], u[I_LCOEF_RSEQIOPS], u[I_LCOEF_RRANDIOPS],
|
||||||
u[I_LCOEF_WBPS], u[I_LCOEF_WSEQIOPS], u[I_LCOEF_WRANDIOPS]);
|
u[I_LCOEF_WBPS], u[I_LCOEF_WSEQIOPS], u[I_LCOEF_WRANDIOPS]);
|
||||||
spin_unlock_irq(&ioc->lock);
|
spin_unlock(&ioc->lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,6 +361,7 @@ ata_rw_frameinit(struct frame *f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ah->cmdstat = ATA_CMD_PIO_READ | writebit | extbit;
|
ah->cmdstat = ATA_CMD_PIO_READ | writebit | extbit;
|
||||||
|
dev_hold(t->ifp->nd);
|
||||||
skb->dev = t->ifp->nd;
|
skb->dev = t->ifp->nd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,6 +402,8 @@ aoecmd_ata_rw(struct aoedev *d)
|
|||||||
__skb_queue_head_init(&queue);
|
__skb_queue_head_init(&queue);
|
||||||
__skb_queue_tail(&queue, skb);
|
__skb_queue_tail(&queue, skb);
|
||||||
aoenet_xmit(&queue);
|
aoenet_xmit(&queue);
|
||||||
|
} else {
|
||||||
|
dev_put(f->t->ifp->nd);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -483,10 +486,13 @@ resend(struct aoedev *d, struct frame *f)
|
|||||||
memcpy(h->dst, t->addr, sizeof h->dst);
|
memcpy(h->dst, t->addr, sizeof h->dst);
|
||||||
memcpy(h->src, t->ifp->nd->dev_addr, sizeof h->src);
|
memcpy(h->src, t->ifp->nd->dev_addr, sizeof h->src);
|
||||||
|
|
||||||
|
dev_hold(t->ifp->nd);
|
||||||
skb->dev = t->ifp->nd;
|
skb->dev = t->ifp->nd;
|
||||||
skb = skb_clone(skb, GFP_ATOMIC);
|
skb = skb_clone(skb, GFP_ATOMIC);
|
||||||
if (skb == NULL)
|
if (skb == NULL) {
|
||||||
|
dev_put(t->ifp->nd);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
f->sent = ktime_get();
|
f->sent = ktime_get();
|
||||||
__skb_queue_head_init(&queue);
|
__skb_queue_head_init(&queue);
|
||||||
__skb_queue_tail(&queue, skb);
|
__skb_queue_tail(&queue, skb);
|
||||||
@ -617,6 +623,8 @@ probe(struct aoetgt *t)
|
|||||||
__skb_queue_head_init(&queue);
|
__skb_queue_head_init(&queue);
|
||||||
__skb_queue_tail(&queue, skb);
|
__skb_queue_tail(&queue, skb);
|
||||||
aoenet_xmit(&queue);
|
aoenet_xmit(&queue);
|
||||||
|
} else {
|
||||||
|
dev_put(f->t->ifp->nd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1395,6 +1403,7 @@ aoecmd_ata_id(struct aoedev *d)
|
|||||||
ah->cmdstat = ATA_CMD_ID_ATA;
|
ah->cmdstat = ATA_CMD_ID_ATA;
|
||||||
ah->lba3 = 0xa0;
|
ah->lba3 = 0xa0;
|
||||||
|
|
||||||
|
dev_hold(t->ifp->nd);
|
||||||
skb->dev = t->ifp->nd;
|
skb->dev = t->ifp->nd;
|
||||||
|
|
||||||
d->rttavg = RTTAVG_INIT;
|
d->rttavg = RTTAVG_INIT;
|
||||||
@ -1404,6 +1413,8 @@ aoecmd_ata_id(struct aoedev *d)
|
|||||||
skb = skb_clone(skb, GFP_ATOMIC);
|
skb = skb_clone(skb, GFP_ATOMIC);
|
||||||
if (skb)
|
if (skb)
|
||||||
f->sent = ktime_get();
|
f->sent = ktime_get();
|
||||||
|
else
|
||||||
|
dev_put(t->ifp->nd);
|
||||||
|
|
||||||
return skb;
|
return skb;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user