Re: [PATCH] SCSI: fix /proc memory leak in the SCSI core

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alan Stern wrote:
> The SCSI core calls scsi_proc_hostdir_add() from within
> scsi_host_alloc(), but the corresponding scsi_proc_hostdir_rm()
> routine is called from within scsi_remove_host().  As a result, if a
> host is allocated and then deallocated without ever being registered,
> the host's directory in /proc is leaked.
> 
> This patch (as1181) fixes this bug in the SCSI core by moving
> scsi_proc_hostdir_add() into scsi_host_add().
> 
> Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> 

Nice this also fixes the premature visibility of the directory
and the theoretical races, that can cause.

> ---
> 
> Can somebody check to make sure this is compatible with legacy drivers 
> using the non-hotplug API?
> 
> 
> 
> Index: usb-2.6/drivers/scsi/hosts.c
> ===================================================================
> --- usb-2.6.orig/drivers/scsi/hosts.c
> +++ usb-2.6/drivers/scsi/hosts.c
> @@ -206,9 +206,10 @@ int scsi_add_host(struct Scsi_Host *shos
>  	if (error)
>  		goto fail;
>  
> +	scsi_proc_hostdir_add(shost->hostt);
> +
>  	if (!shost->shost_gendev.parent)
>  		shost->shost_gendev.parent = dev ? dev : &platform_bus;
> -
>  	error = device_add(&shost->shost_gendev);
>  	if (error)
>  		goto out;
> @@ -259,6 +260,7 @@ int scsi_add_host(struct Scsi_Host *shos
>   out_del_gendev:
>  	device_del(&shost->shost_gendev);
>   out:
> +	scsi_proc_hostdir_rm(shost->hostt);
>  	scsi_destroy_command_freelist(shost);
>   fail:
>  	return error;
> @@ -407,7 +409,6 @@ struct Scsi_Host *scsi_host_alloc(struct
>  		goto fail_kfree;
>  	}
>  
> -	scsi_proc_hostdir_add(shost->hostt);
>  	return shost;
>  
>   fail_kfree:
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux