drivers: qcom: rpmh: use struct_size() in kzalloc()
Subsystems (2)
PATCH 1/1 drivers: qcom: rpmh: use struct_size() in kzalloc()
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct foo {
int stuff;
void *entry[];
};instance = kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_ATOMIC);
Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_ATOMIC);
This issue was detected with the help of Coccinelle.
--- drivers/soc/qcom/rpmh.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/soc/qcom/rpmh.c +1 -2
@@ -362,8 +362,7 @@ int rpmh_write_batch(const struct device *dev, enum rpmh_state state,if (!count)return -EINVAL ; - req =kzalloc (sizeof (*req) + count *sizeof (req->rpm_msgs[0 ]), -GFP_ATOMIC ); + req =kzalloc (struct_size (req, rpm_msgs, count),GFP_ATOMIC );if (!req)return -ENOMEM ; req->count = count;
Signature · 1 line
2.7.4
Quoted 11 lines · Gustavo A. R. Silva
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct foo { int stuff; void *entry[]; };instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_ATOMIC);
Quoted 8 lines
Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
kzalloc(struct_size(instance, entry, count), GFP_ATOMIC);This issue was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
-Kees
Quoted 21 lines
--- drivers/soc/qcom/rpmh.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)drivers/soc/qcom/rpmh.c +1
-3@@ -362,8 +362,7 @@ int rpmh_write_batch(const struct device *dev, enum rpmh_state state,if (!count)return -EINVAL ; - req =kzalloc (sizeof (*req) + count *sizeof (req->rpm_msgs[0 ]), -GFP_ATOMIC ); + req =kzalloc (struct_size (req, rpm_msgs, count),GFP_ATOMIC );if (!req)return -ENOMEM ; req->count = count; --2.7.4
Signature · 2 lines
Kees Cook Pixel Security
Quoted 11 lines · Gustavo A. R. Silva
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct foo { int stuff; void *entry[]; };instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_ATOMIC);
Quoted 8 lines
Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
kzalloc(struct_size(instance, entry, count), GFP_ATOMIC);This issue was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
Regards,
Bjorn
Quoted 21 lines
--- drivers/soc/qcom/rpmh.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)drivers/soc/qcom/rpmh.c +1
-2@@ -362,8 +362,7 @@ int rpmh_write_batch(const struct device *dev, enum rpmh_state state,if (!count)return -EINVAL ; - req =kzalloc (sizeof (*req) + count *sizeof (req->rpm_msgs[0 ]), -GFP_ATOMIC ); + req =kzalloc (struct_size (req, rpm_msgs, count),GFP_ATOMIC );if (!req)return -ENOMEM ; req->count = count;Signature · 1 line
2.7.4