Commit 2445eb62 authored by Jean Delvare's avatar Jean Delvare Committed by Greg Kroah-Hartman

[PATCH] i2c: Documentation update

Update the i2c documentation: kzalloc should be used instead of
kmalloc.

I also fixed a couple other things nearby in writing-clients, as several
past changes had never been reported there.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent deb875c7
...@@ -82,7 +82,7 @@ Technical changes: ...@@ -82,7 +82,7 @@ Technical changes:
exit and exit_free. For i2c+isa drivers, labels should be named exit and exit_free. For i2c+isa drivers, labels should be named
ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before
jumping to error labels. By the way, labels should be left-aligned. jumping to error labels. By the way, labels should be left-aligned.
Use memset to fill the client and data area with 0x00. Use kzalloc instead of kmalloc.
Use i2c_set_clientdata to set the client data (as opposed to Use i2c_set_clientdata to set the client data (as opposed to
a direct access to client->data). a direct access to client->data).
Use strlcpy instead of strcpy to copy the client name. Use strlcpy instead of strcpy to copy the client name.
......
...@@ -55,6 +55,7 @@ be very useful. ...@@ -55,6 +55,7 @@ be very useful.
An example structure is below. An example structure is below.
struct foo_data { struct foo_data {
struct i2c_client client;
struct semaphore lock; /* For ISA access in `sensors' drivers. */ struct semaphore lock; /* For ISA access in `sensors' drivers. */
int sysctl_id; /* To keep the /proc directory entry for int sysctl_id; /* To keep the /proc directory entry for
`sensors' drivers. */ `sensors' drivers. */
...@@ -307,22 +308,15 @@ For now, you can ignore the `flags' parameter. It is there for future use. ...@@ -307,22 +308,15 @@ For now, you can ignore the `flags' parameter. It is there for future use.
client structure, even though we cannot fill it completely yet. client structure, even though we cannot fill it completely yet.
But it allows us to access several i2c functions safely */ But it allows us to access several i2c functions safely */
/* Note that we reserve some space for foo_data too. If you don't if (!(data = kzalloc(sizeof(struct foo_data), GFP_KERNEL))) {
need it, remove it. We do it here to help to lessen memory
fragmentation. */
if (! (new_client = kmalloc(sizeof(struct i2c_client) +
sizeof(struct foo_data),
GFP_KERNEL))) {
err = -ENOMEM; err = -ENOMEM;
goto ERROR0; goto ERROR0;
} }
/* This is tricky, but it will set the data to the right value. */ new_client = &data->client;
client->data = new_client + 1; i2c_set_clientdata(new_client, data);
data = (struct foo_data *) (client->data);
new_client->addr = address; new_client->addr = address;
new_client->data = data;
new_client->adapter = adapter; new_client->adapter = adapter;
new_client->driver = &foo_driver; new_client->driver = &foo_driver;
new_client->flags = 0; new_client->flags = 0;
...@@ -448,7 +442,7 @@ much simpler than the attachment code, fortunately! ...@@ -448,7 +442,7 @@ much simpler than the attachment code, fortunately!
release_region(client->addr,LM78_EXTENT); release_region(client->addr,LM78_EXTENT);
/* HYBRID SENSORS CHIP ONLY END */ /* HYBRID SENSORS CHIP ONLY END */
kfree(client); /* Frees client data too, if allocated at the same time */ kfree(data);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment