+int firmware_class_hotplug(struct class_device *class_dev, char **envp,
+ int num_envp, char *buffer, int buffer_size)
+{
+ struct firmware_priv *fw_priv = class_get_devdata(class_dev);
+ int i=0;
+ char *scratch=buffer;
+
+ if (buffer_size < (FIRMWARE_NAME_MAX+10))
+ return -ENOMEM;
+
+ envp [i++] = scratch;
+ scratch += sprintf(scratch, "FIRMWARE=%s", fw_priv->fw_id) + 1;
+ return 0;
+}
+
First, I do not understand how the environment is handled here. You're
just setting first element of provided environment to "FIRMWARE=%s",
possibly overwriting the existing value. Then why are you incrementing
`i'? Why are you using `i' at all? Why are you incrementing `scratch'?
Ah, it seems like you should be using num_envp somehow, and you're not.
Also, environment pointer list must be terminated with a NULL pointer. Is
it not done or is that handled somewhere else? The machine I have 2.5.69
sources is not reachable now so I cannot check it. Sorry if I am wrong.
--alexm
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/