mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
nvme fixes for 5.11:
- don't initialize hwmon for discover controllers (Sagi Grimberg) - fix iov_iter handling in nvme-tcp (Sagi Grimberg) - fix a preempt warning in nvme-tcp (Sagi Grimberg) - fix a possible NULL pointer dereference in nvme (Israel Rukshin) -----BEGIN PGP SIGNATURE----- iQI/BAABCgApFiEEgdbnc3r/njty3Iq9D55TZVIEUYMFAmAAm0ULHGhjaEBsc3Qu ZGUACgkQD55TZVIEUYMm/hAAn0MWP9KhG2lM2nN+GyxktrCG9znX2qy4t5ykOfro 2G3flWZP4eP0c0M2VbG22UAIAkMGbzXquVQEk7xK6mPt2fw0AJvK5GJrh9GncaZF RyNiz+Pj9KNJYNZYmqhMwiGR8ULSVcHKqD1qgQGOJQzExQKFvluXdEmHcsodgoA5 35FNlnjU9W7NdD03nSzRl4T7qYuQI5mA42XYu8t9ObGW1eg7e5PWtbN9n8BVPxbM bGQa1UUXYYTJlNIbu0o9Ij7UUiR2dGUa4Gb2u9BzpIogrdniHz/lIDdaVmt9jETW PJGcuFRfDTikqGJAu6LOXtyT7gM596psCLxUoBg+sVXxvttCOfB/xNqZz+XqG41g 6yZ/VRq7P34h71cGESUNEpRxUYmQLd58j7NuZ9lzVGqgT8VWKnNQZwb7TGiBZKyG LGcUlWnUuO33n0mGx+dlAO9IGSSN4hdvOwP64PFPfd4V7mu0KOjmPkWg4B+F26eE 9L1otfMee+K0Z/8Z6SOY2/QwsBpkxRQyN2eJXvZfWex8tgZB8ZzvQiGnmeG455MF urAgHez0K3pE1BAdfQxq0ql60JlgnyVX+RSd7JnUwnYpsNfFEYyxkrnAR6m+0jO7 gHAWkDvX7IoEnJH0ZF50VxrP5ByURqHY0WSRD2dKhAUL7fJ+OPLP/57blIEC8V21 H4E= =bI86 -----END PGP SIGNATURE----- Merge tag 'nvme-5.11-2021-01-14' of git://git.infradead.org/nvme into block-5.11 Pull NVMe fixes from Christoph: "nvme fixes for 5.11: - don't initialize hwmon for discover controllers (Sagi Grimberg) - fix iov_iter handling in nvme-tcp (Sagi Grimberg) - fix a preempt warning in nvme-tcp (Sagi Grimberg) - fix a possible NULL pointer dereference in nvme (Israel Rukshin)" * tag 'nvme-5.11-2021-01-14' of git://git.infradead.org/nvme: nvme: don't intialize hwmon for discovery controllers nvme-tcp: fix possible data corruption with bio merges nvme-tcp: Fix warning with CONFIG_DEBUG_PREEMPT nvmet-rdma: Fix NULL deref when setting pi_enable and traddr INADDR_ANY
This commit is contained in:
commit
b4f664252f
@ -2856,6 +2856,11 @@ static const struct attribute_group *nvme_subsys_attrs_groups[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static inline bool nvme_discovery_ctrl(struct nvme_ctrl *ctrl)
|
||||
{
|
||||
return ctrl->opts && ctrl->opts->discovery_nqn;
|
||||
}
|
||||
|
||||
static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
|
||||
struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id)
|
||||
{
|
||||
@ -2875,7 +2880,7 @@ static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
|
||||
}
|
||||
|
||||
if ((id->cmic & NVME_CTRL_CMIC_MULTI_CTRL) ||
|
||||
(ctrl->opts && ctrl->opts->discovery_nqn))
|
||||
nvme_discovery_ctrl(ctrl))
|
||||
continue;
|
||||
|
||||
dev_err(ctrl->device,
|
||||
@ -3144,7 +3149,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
if (!ctrl->opts->discovery_nqn && !ctrl->kas) {
|
||||
if (!nvme_discovery_ctrl(ctrl) && !ctrl->kas) {
|
||||
dev_err(ctrl->device,
|
||||
"keep-alive support is mandatory for fabrics\n");
|
||||
ret = -EINVAL;
|
||||
@ -3184,7 +3189,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (!ctrl->identified) {
|
||||
if (!ctrl->identified && !nvme_discovery_ctrl(ctrl)) {
|
||||
ret = nvme_hwmon_init(ctrl);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
@ -201,7 +201,7 @@ static inline size_t nvme_tcp_req_cur_offset(struct nvme_tcp_request *req)
|
||||
|
||||
static inline size_t nvme_tcp_req_cur_length(struct nvme_tcp_request *req)
|
||||
{
|
||||
return min_t(size_t, req->iter.bvec->bv_len - req->iter.iov_offset,
|
||||
return min_t(size_t, iov_iter_single_seg_count(&req->iter),
|
||||
req->pdu_len - req->pdu_sent);
|
||||
}
|
||||
|
||||
@ -286,7 +286,7 @@ static inline void nvme_tcp_queue_request(struct nvme_tcp_request *req,
|
||||
* directly, otherwise queue io_work. Also, only do that if we
|
||||
* are on the same cpu, so we don't introduce contention.
|
||||
*/
|
||||
if (queue->io_cpu == smp_processor_id() &&
|
||||
if (queue->io_cpu == __smp_processor_id() &&
|
||||
sync && empty && mutex_trylock(&queue->send_mutex)) {
|
||||
queue->more_requests = !last;
|
||||
nvme_tcp_send_all(queue);
|
||||
|
@ -1220,6 +1220,14 @@ nvmet_rdma_find_get_device(struct rdma_cm_id *cm_id)
|
||||
}
|
||||
ndev->inline_data_size = nport->inline_data_size;
|
||||
ndev->inline_page_count = inline_page_count;
|
||||
|
||||
if (nport->pi_enable && !(cm_id->device->attrs.device_cap_flags &
|
||||
IB_DEVICE_INTEGRITY_HANDOVER)) {
|
||||
pr_warn("T10-PI is not supported by device %s. Disabling it\n",
|
||||
cm_id->device->name);
|
||||
nport->pi_enable = false;
|
||||
}
|
||||
|
||||
ndev->device = cm_id->device;
|
||||
kref_init(&ndev->ref);
|
||||
|
||||
@ -1855,14 +1863,6 @@ static int nvmet_rdma_enable_port(struct nvmet_rdma_port *port)
|
||||
goto out_destroy_id;
|
||||
}
|
||||
|
||||
if (port->nport->pi_enable &&
|
||||
!(cm_id->device->attrs.device_cap_flags &
|
||||
IB_DEVICE_INTEGRITY_HANDOVER)) {
|
||||
pr_err("T10-PI is not supported for %pISpcs\n", addr);
|
||||
ret = -EINVAL;
|
||||
goto out_destroy_id;
|
||||
}
|
||||
|
||||
port->cm_id = cm_id;
|
||||
return 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user