From: tang.junhui Date: Fri, 28 Oct 2016 07:54:07 +0000 (+0800) Subject: scsi: scsi_dh_alua: fix missing kref_put() in alua_rtpg_work() X-Git-Tag: v4.8.9~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5fac70d772a4d360eb3453f76f860c68eb192f1d;p=thirdparty%2Fkernel%2Fstable.git scsi: scsi_dh_alua: fix missing kref_put() in alua_rtpg_work() commit 1fdd14279eab2e9f79745631379f0c53cb8f9a5a upstream. Reference count of pg leaks in alua_rtpg_work() since kref_put() is not called to decrease the reference count of pg when the condition pg->rtpg_sdev==NULL satisfied (actually it is easy to satisfy), it would cause memory of pg leakage. Signed-off-by: tang.junhui Reviewed-by: Hannes Reinecke Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 752b5c9d1ab27..6e825036be898 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -792,6 +792,7 @@ static void alua_rtpg_work(struct work_struct *work) WARN_ON(pg->flags & ALUA_PG_RUN_RTPG); WARN_ON(pg->flags & ALUA_PG_RUN_STPG); spin_unlock_irqrestore(&pg->lock, flags); + kref_put(&pg->kref, release_port_group); return; } if (pg->flags & ALUA_SYNC_STPG)