diff mbox

[RFC,2/3] module: Ignore delete_id parameter

Message ID 1506544822-2632-3-git-send-email-jonathan.derrick@intel.com (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Jon Derrick Sept. 27, 2017, 8:40 p.m. UTC
The PCI driver delete_id parameter is handled in each individual driver
registration callback.

Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
---
 kernel/module.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Dan Williams Sept. 28, 2017, 6:03 a.m. UTC | #1
On Wed, Sep 27, 2017 at 1:40 PM, Jon Derrick <jonathan.derrick@intel.com> wrote:
> The PCI driver delete_id parameter is handled in each individual driver
> registration callback.
>
> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
> ---
>  kernel/module.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/kernel/module.c b/kernel/module.c
> index de66ec8..2b2dccf 100644
> --- a/kernel/module.c
> +++ b/kernel/module.c
> @@ -3620,6 +3620,13 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname,
>                 return 0;
>         }
>
> +       /*
> +        * Ignore driver delete list arguments. They are handled by driver
> +        * registration callbacks
> +        */
> +       if (strcmp(param, "delete_id") == 0)
> +               return 0;
> +

Does this preclude something like:

    modprobe ahci delete_id=1234:5678?
Greg Kroah-Hartman Sept. 28, 2017, 9:02 a.m. UTC | #2
On Wed, Sep 27, 2017 at 04:40:21PM -0400, Jon Derrick wrote:
> The PCI driver delete_id parameter is handled in each individual driver
> registration callback.
> 
> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
> ---
>  kernel/module.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/kernel/module.c b/kernel/module.c
> index de66ec8..2b2dccf 100644
> --- a/kernel/module.c
> +++ b/kernel/module.c
> @@ -3620,6 +3620,13 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname,
>  		return 0;
>  	}
>  
> +	/*
> +	 * Ignore driver delete list arguments. They are handled by driver
> +	 * registration callbacks
> +	 */
> +	if (strcmp(param, "delete_id") == 0)
> +		return 0;

Why?  This is only for the PCI core as you have defined it in this
patchset, but you just broke this module id for all other kernel modules
in the system :(

If you want to do this, you need to provide this feature for _all_
kernel drivers...

thanks,

greg k-h
Jon Derrick Sept. 28, 2017, 3:57 p.m. UTC | #3
On 09/28/2017 03:02 AM, Greg Kroah-Hartman wrote:
> On Wed, Sep 27, 2017 at 04:40:21PM -0400, Jon Derrick wrote:
>> The PCI driver delete_id parameter is handled in each individual driver
>> registration callback.
>>
>> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
>> ---
>>  kernel/module.c | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/kernel/module.c b/kernel/module.c
>> index de66ec8..2b2dccf 100644
>> --- a/kernel/module.c
>> +++ b/kernel/module.c
>> @@ -3620,6 +3620,13 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname,
>>  		return 0;
>>  	}
>>  
>> +	/*
>> +	 * Ignore driver delete list arguments. They are handled by driver
>> +	 * registration callbacks
>> +	 */
>> +	if (strcmp(param, "delete_id") == 0)
>> +		return 0;
> 
> Why?  This is only for the PCI core as you have defined it in this
> patchset, but you just broke this module id for all other kernel modules
> in the system :(
> 
> If you want to do this, you need to provide this feature for _all_
> kernel drivers...
> 
> thanks,
> 
> greg k-h
> 
Yes I'm not particularly happy about this one either. I will make this
more robust if the blacklisting idea is sound.
Jon Derrick Sept. 28, 2017, 3:57 p.m. UTC | #4
On 09/28/2017 12:03 AM, Dan Williams wrote:
> On Wed, Sep 27, 2017 at 1:40 PM, Jon Derrick <jonathan.derrick@intel.com> wrote:
>> The PCI driver delete_id parameter is handled in each individual driver
>> registration callback.
>>
>> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
>> ---
>>  kernel/module.c | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/kernel/module.c b/kernel/module.c
>> index de66ec8..2b2dccf 100644
>> --- a/kernel/module.c
>> +++ b/kernel/module.c
>> @@ -3620,6 +3620,13 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname,
>>                 return 0;
>>         }
>>
>> +       /*
>> +        * Ignore driver delete list arguments. They are handled by driver
>> +        * registration callbacks
>> +        */
>> +       if (strcmp(param, "delete_id") == 0)
>> +               return 0;
>> +
> 
> Does this preclude something like:
> 
>     modprobe ahci delete_id=1234:5678?
> 

It does seem like it would. I can look into calling into the pci
callback for this, but val is a struct module here and I haven't figured
out the plumbing to get the [correct] driver from that.

Maybe if I enforce the format of 'modprobe ahci ahci.delete_id=xxxx' to
ensure the driver is specified (and would be required in cases with
multi-driver modules).
diff mbox

Patch

diff --git a/kernel/module.c b/kernel/module.c
index de66ec8..2b2dccf 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3620,6 +3620,13 @@  static int unknown_module_param_cb(char *param, char *val, const char *modname,
 		return 0;
 	}
 
+	/*
+	 * Ignore driver delete list arguments. They are handled by driver
+	 * registration callbacks
+	 */
+	if (strcmp(param, "delete_id") == 0)
+		return 0;
+
 	/* Check for magic 'dyndbg' arg */
 	ret = ddebug_dyndbg_module_param_cb(param, val, modname);
 	if (ret != 0)