mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: IB/iser: Support iSCSI PDU padding IBiser: Fix wrong mask when sizeof (dma_addr_t) > sizeof (unsigned long) IPoIB: Fix possible NULL dereference in ipoib_start_xmit()
This commit is contained in:
commit
fbad8991ef
@ -717,11 +717,13 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct ipoib_dev_priv *priv = netdev_priv(dev);
|
||||
struct ipoib_neigh *neigh;
|
||||
struct neighbour *n;
|
||||
struct neighbour *n = NULL;
|
||||
unsigned long flags;
|
||||
|
||||
n = dst_get_neighbour(skb_dst(skb));
|
||||
if (likely(skb_dst(skb) && n)) {
|
||||
if (likely(skb_dst(skb)))
|
||||
n = dst_get_neighbour(skb_dst(skb));
|
||||
|
||||
if (likely(n)) {
|
||||
if (unlikely(!*to_ipoib_neigh(n))) {
|
||||
ipoib_path_lookup(skb, dev);
|
||||
return NETDEV_TX_OK;
|
||||
|
@ -101,13 +101,17 @@ iscsi_iser_recv(struct iscsi_conn *conn,
|
||||
|
||||
/* verify PDU length */
|
||||
datalen = ntoh24(hdr->dlength);
|
||||
if (datalen != rx_data_len) {
|
||||
printk(KERN_ERR "iscsi_iser: datalen %d (hdr) != %d (IB) \n",
|
||||
datalen, rx_data_len);
|
||||
if (datalen > rx_data_len || (datalen + 4) < rx_data_len) {
|
||||
iser_err("wrong datalen %d (hdr), %d (IB)\n",
|
||||
datalen, rx_data_len);
|
||||
rc = ISCSI_ERR_DATALEN;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (datalen != rx_data_len)
|
||||
iser_dbg("aligned datalen (%d) hdr, %d (IB)\n",
|
||||
datalen, rx_data_len);
|
||||
|
||||
/* read AHS */
|
||||
ahslen = hdr->hlength * 4;
|
||||
|
||||
|
@ -89,7 +89,7 @@
|
||||
} while (0)
|
||||
|
||||
#define SHIFT_4K 12
|
||||
#define SIZE_4K (1UL << SHIFT_4K)
|
||||
#define SIZE_4K (1ULL << SHIFT_4K)
|
||||
#define MASK_4K (~(SIZE_4K-1))
|
||||
|
||||
/* support up to 512KB in one RDMA */
|
||||
|
@ -412,7 +412,7 @@ int iser_send_control(struct iscsi_conn *conn,
|
||||
memcpy(iser_conn->ib_conn->login_buf, task->data,
|
||||
task->data_count);
|
||||
tx_dsg->addr = iser_conn->ib_conn->login_dma;
|
||||
tx_dsg->length = data_seg_len;
|
||||
tx_dsg->length = task->data_count;
|
||||
tx_dsg->lkey = device->mr->lkey;
|
||||
mdesc->num_sge = 2;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user