Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1463526 > unrolled thread
| Started by | LABBE Corentin <clabbe.montjoie@gmail.com> |
|---|---|
| First post | 2016-08-16 10:20 +0200 |
| Last post | 2016-08-16 10:20 +0200 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH 1/2] mfd: mc13xxx: constify mc13xxx_variant LABBE Corentin <clabbe.montjoie@gmail.com> - 2016-08-16 10:20 +0200
[PATCH 2/2] mfd: mc13xxx: fix a possible NULL dereference LABBE Corentin <clabbe.montjoie@gmail.com> - 2016-08-16 10:20 +0200
| From | LABBE Corentin <clabbe.montjoie@gmail.com> |
|---|---|
| Date | 2016-08-16 10:20 +0200 |
| Subject | [PATCH 1/2] mfd: mc13xxx: constify mc13xxx_variant |
| Message-ID | <s6HLk-BJ-15@gated-at.bofh.it> |
The mc13xxx_variant structure is never modified, this patch set it as
const.
Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
---
drivers/mfd/mc13xxx-core.c | 6 +++---
drivers/mfd/mc13xxx-i2c.c | 2 +-
drivers/mfd/mc13xxx-spi.c | 2 +-
drivers/mfd/mc13xxx.h | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
index d7f54e4..3a008e6 100644
--- a/drivers/mfd/mc13xxx-core.c
+++ b/drivers/mfd/mc13xxx-core.c
@@ -202,19 +202,19 @@ static void mc34708_print_revision(struct mc13xxx *mc13xxx, u32 revision)
}
/* These are only exported for mc13xxx-i2c and mc13xxx-spi */
-struct mc13xxx_variant mc13xxx_variant_mc13783 = {
+const struct mc13xxx_variant mc13xxx_variant_mc13783 = {
.name = "mc13783",
.print_revision = mc13xxx_print_revision,
};
EXPORT_SYMBOL_GPL(mc13xxx_variant_mc13783);
-struct mc13xxx_variant mc13xxx_variant_mc13892 = {
+const struct mc13xxx_variant mc13xxx_variant_mc13892 = {
.name = "mc13892",
.print_revision = mc13xxx_print_revision,
};
EXPORT_SYMBOL_GPL(mc13xxx_variant_mc13892);
-struct mc13xxx_variant mc13xxx_variant_mc34708 = {
+const struct mc13xxx_variant mc13xxx_variant_mc34708 = {
.name = "mc34708",
.print_revision = mc34708_print_revision,
};
diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c
index 67e4c9a..3c00ccb 100644
--- a/drivers/mfd/mc13xxx-i2c.c
+++ b/drivers/mfd/mc13xxx-i2c.c
@@ -82,7 +82,7 @@ static int mc13xxx_i2c_probe(struct i2c_client *client,
of_match_device(mc13xxx_dt_ids, &client->dev);
mc13xxx->variant = of_id->data;
} else {
- mc13xxx->variant = (void *)id->driver_data;
+ mc13xxx->variant = (const struct mc13xxx_variant *)id->driver_data;
}
return mc13xxx_common_init(&client->dev);
diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c
index cbc1e5e..6100025 100644
--- a/drivers/mfd/mc13xxx-spi.c
+++ b/drivers/mfd/mc13xxx-spi.c
@@ -162,7 +162,7 @@ static int mc13xxx_spi_probe(struct spi_device *spi)
} else {
const struct spi_device_id *id_entry = spi_get_device_id(spi);
- mc13xxx->variant = (void *)id_entry->driver_data;
+ mc13xxx->variant = (const struct mc13xxx_variant *)id_entry->driver_data;
}
return mc13xxx_common_init(&spi->dev);
diff --git a/drivers/mfd/mc13xxx.h b/drivers/mfd/mc13xxx.h
index 33677d1..6d7fce5 100644
--- a/drivers/mfd/mc13xxx.h
+++ b/drivers/mfd/mc13xxx.h
@@ -24,7 +24,7 @@ struct mc13xxx_variant {
void (*print_revision)(struct mc13xxx *mc13xxx, u32 revision);
};
-extern struct mc13xxx_variant
+extern const struct mc13xxx_variant
mc13xxx_variant_mc13783,
mc13xxx_variant_mc13892,
mc13xxx_variant_mc34708;
--
2.7.3
[toc] | [next] | [standalone]
| From | LABBE Corentin <clabbe.montjoie@gmail.com> |
|---|---|
| Date | 2016-08-16 10:20 +0200 |
| Subject | [PATCH 2/2] mfd: mc13xxx: fix a possible NULL dereference |
| Message-ID | <s6HLk-BJ-25@gated-at.bofh.it> |
| In reply to | #1463526 |
of_match_device could return NULL, and so cause a NULL pointer
dereference later.
For fixing this problem, we use of_device_get_match_data(), this will
simplify the code a little by using a standard function for
getting the match data.
Reported-by: coverity (CID 986513)
Reported-by: coverity (CID 986514)
Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
---
drivers/mfd/mc13xxx-i2c.c | 4 +---
drivers/mfd/mc13xxx-spi.c | 5 +----
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c
index 3c00ccb..8ad7593 100644
--- a/drivers/mfd/mc13xxx-i2c.c
+++ b/drivers/mfd/mc13xxx-i2c.c
@@ -78,9 +78,7 @@ static int mc13xxx_i2c_probe(struct i2c_client *client,
}
if (client->dev.of_node) {
- const struct of_device_id *of_id =
- of_match_device(mc13xxx_dt_ids, &client->dev);
- mc13xxx->variant = of_id->data;
+ mc13xxx->variant = of_device_get_match_data(&client->dev);
} else {
mc13xxx->variant = (const struct mc13xxx_variant *)id->driver_data;
}
diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c
index 6100025..3b4f5ba 100644
--- a/drivers/mfd/mc13xxx-spi.c
+++ b/drivers/mfd/mc13xxx-spi.c
@@ -155,10 +155,7 @@ static int mc13xxx_spi_probe(struct spi_device *spi)
}
if (spi->dev.of_node) {
- const struct of_device_id *of_id =
- of_match_device(mc13xxx_dt_ids, &spi->dev);
-
- mc13xxx->variant = of_id->data;
+ mc13xxx->variant = of_device_get_match_data(&spi->dev);
} else {
const struct spi_device_id *id_entry = spi_get_device_id(spi);
--
2.7.3
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web