iscsi bugfixes: dont use GFP_KERNEL for sending errors
PATCH 7/11 iscsi bugfixes: dont use GFP_KERNEL for sending errors
iscsi_tcp can send error events from soft irq context so we cannot use GFP_KERNEL.
Signed-off-by Mike Christie <[email protected]>
drivers/scsi/scsi_transport_iscsi.c +5 -5
@@ -634,13 +634,13 @@ mempool_zone_get_skb(struct mempool_zone }static int -iscsi_broadcast_skb (struct mempool_zone *zone,struct sk_buff *skb) +iscsi_broadcast_skb (struct mempool_zone *zone,struct sk_buff *skb,gfp_t gfp) {unsigned long flags;int rc;skb_get (skb); - rc =netlink_broadcast (nls, skb,0 ,1 ,GFP_KERNEL ); + rc =netlink_broadcast (nls, skb,0 ,1 , gfp);if (rc <0 ) {mempool_free (skb, zone->pool);printk (KERN_ERR "iscsi: can not broadcast skb (%d)\n" , rc);
@@ -749,7 +749,7 @@ void iscsi_conn_error(struct iscsi_cls_c ev->r.connerror.cid = conn->cid; ev->r.connerror.sid =iscsi_conn_get_sid (conn); -iscsi_broadcast_skb (conn->z_error, skb); +iscsi_broadcast_skb (conn->z_error, skb,GFP_ATOMIC );dev_printk (KERN_INFO , &conn->dev,"iscsi: detected conn error (%d)\n" , error);
@@ -895,7 +895,7 @@ int iscsi_if_destroy_session_done(struct* this will occur if the daemon is not up, so we just warn * the user and when the daemon is restarted it will handle it */ - rc =iscsi_broadcast_skb (conn->z_pdu, skb); + rc =iscsi_broadcast_skb (conn->z_pdu, skb,GFP_KERNEL );if (rc <0 )dev_printk (KERN_ERR , &conn->dev,"Cannot notify userspace of " "session destruction event. Check iscsi daemon\n" );
@@ -958,7 +958,7 @@ int iscsi_if_create_session_done(struct* this will occur if the daemon is not up, so we just warn * the user and when the daemon is restarted it will handle it */ - rc =iscsi_broadcast_skb (conn->z_pdu, skb); + rc =iscsi_broadcast_skb (conn->z_pdu, skb,GFP_KERNEL );if (rc <0 )dev_printk (KERN_ERR , &conn->dev,"Cannot notify userspace of " "session creation event. Check iscsi daemon\n" );