Commit f2235125 authored by Jon Mason's avatar Jon Mason Committed by Greg Kroah-Hartman

NTB: variable dereferenced before check

commit 186f27ff upstream.

Correct instances of variable dereferencing before checking its value on
the functions exported to the client drivers.  Also, add sanity checks
for all exported functions.
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarJon Mason <jon.mason@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1435b05b
...@@ -1210,12 +1210,14 @@ EXPORT_SYMBOL_GPL(ntb_transport_create_queue); ...@@ -1210,12 +1210,14 @@ EXPORT_SYMBOL_GPL(ntb_transport_create_queue);
*/ */
void ntb_transport_free_queue(struct ntb_transport_qp *qp) void ntb_transport_free_queue(struct ntb_transport_qp *qp)
{ {
struct pci_dev *pdev = ntb_query_pdev(qp->ndev); struct pci_dev *pdev;
struct ntb_queue_entry *entry; struct ntb_queue_entry *entry;
if (!qp) if (!qp)
return; return;
pdev = ntb_query_pdev(qp->ndev);
cancel_delayed_work_sync(&qp->link_work); cancel_delayed_work_sync(&qp->link_work);
ntb_unregister_db_callback(qp->ndev, qp->qp_num); ntb_unregister_db_callback(qp->ndev, qp->qp_num);
...@@ -1371,12 +1373,13 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_up); ...@@ -1371,12 +1373,13 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_up);
*/ */
void ntb_transport_link_down(struct ntb_transport_qp *qp) void ntb_transport_link_down(struct ntb_transport_qp *qp)
{ {
struct pci_dev *pdev = ntb_query_pdev(qp->ndev); struct pci_dev *pdev;
int rc, val; int rc, val;
if (!qp) if (!qp)
return; return;
pdev = ntb_query_pdev(qp->ndev);
qp->client_ready = NTB_LINK_DOWN; qp->client_ready = NTB_LINK_DOWN;
rc = ntb_read_local_spad(qp->ndev, QP_LINKS, &val); rc = ntb_read_local_spad(qp->ndev, QP_LINKS, &val);
...@@ -1408,6 +1411,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_down); ...@@ -1408,6 +1411,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_down);
*/ */
bool ntb_transport_link_query(struct ntb_transport_qp *qp) bool ntb_transport_link_query(struct ntb_transport_qp *qp)
{ {
if (!qp)
return false;
return qp->qp_link == NTB_LINK_UP; return qp->qp_link == NTB_LINK_UP;
} }
EXPORT_SYMBOL_GPL(ntb_transport_link_query); EXPORT_SYMBOL_GPL(ntb_transport_link_query);
...@@ -1422,6 +1428,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_query); ...@@ -1422,6 +1428,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_link_query);
*/ */
unsigned char ntb_transport_qp_num(struct ntb_transport_qp *qp) unsigned char ntb_transport_qp_num(struct ntb_transport_qp *qp)
{ {
if (!qp)
return 0;
return qp->qp_num; return qp->qp_num;
} }
EXPORT_SYMBOL_GPL(ntb_transport_qp_num); EXPORT_SYMBOL_GPL(ntb_transport_qp_num);
...@@ -1436,6 +1445,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_qp_num); ...@@ -1436,6 +1445,9 @@ EXPORT_SYMBOL_GPL(ntb_transport_qp_num);
*/ */
unsigned int ntb_transport_max_size(struct ntb_transport_qp *qp) unsigned int ntb_transport_max_size(struct ntb_transport_qp *qp)
{ {
if (!qp)
return 0;
return qp->tx_max_frame - sizeof(struct ntb_payload_header); return qp->tx_max_frame - sizeof(struct ntb_payload_header);
} }
EXPORT_SYMBOL_GPL(ntb_transport_max_size); EXPORT_SYMBOL_GPL(ntb_transport_max_size);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment