* [patch net-next 0/3] net/sched: Improve getting objects by indexes
[not found] <1502849538-14284-1-git-send-email-chrism@mellanox.com>
@ 2017-08-16 21:51 ` Frank Rowand
[not found] ` <1502849538-14284-2-git-send-email-chrism@mellanox.com>
1 sibling, 0 replies; 2+ messages in thread
From: Frank Rowand @ 2017-08-16 21:51 UTC (permalink / raw)
To: linux-arm-kernel
I deleted most of the distribution list. My email server rejects an email
with this many recipients.
On 08/15/17 19:12, Chris Mi wrote:
> IDR uses internally radix tree which uses unsigned long. It doesn't
> makes sense to have index as signed value.
>
> Signed-off-by: Chris Mi <chrism@mellanox.com>
> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
> ---
< snip >
> drivers/of/overlay.c | 15 +++----
> drivers/of/unittest.c | 25 ++++++-----
< snip >
> include/linux/of.h | 4 +-
< snip >
Split the patch apart.
> diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
> index c0e4ee1..e5cfe01 100644
> --- a/drivers/of/overlay.c
> +++ b/drivers/of/overlay.c
> @@ -373,10 +373,11 @@ static int of_free_overlay_info(struct of_overlay *ov)
> *
> * Returns the id of the created overlay, or a negative error number
> */
> -int of_overlay_create(struct device_node *tree)
> +int of_overlay_create(struct device_node *tree, unsigned long *id)
Added parameter *id, but never assigned a value to it.
> {
> struct of_overlay *ov;
> - int err, id;
> + unsigned long idr_index;
> + int err;
>
> /* allocate the overlay structure */
> ov = kzalloc(sizeof(*ov), GFP_KERNEL);
> @@ -390,12 +391,10 @@ int of_overlay_create(struct device_node *tree)
>
> mutex_lock(&of_mutex);
>
> - id = idr_alloc(&ov_idr, ov, 0, 0, GFP_KERNEL);
> - if (id < 0) {
> - err = id;
> + err = idr_alloc(&ov_idr, ov, &idr_index, 0, 0, GFP_KERNEL);
> + if (err)
> goto err_destroy_trans;
> - }
> - ov->id = id;
> + ov->id = idr_index;
>
> /* build the overlay info structures */
> err = of_build_overlay_info(ov, tree);
> @@ -430,7 +429,7 @@ int of_overlay_create(struct device_node *tree)
>
> mutex_unlock(&of_mutex);
>
> - return id;
> + return err;
>
> err_revert_overlay:
> err_abort_trans:
> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> index 0107fc6..ac7cc76 100644
> --- a/drivers/of/unittest.c
> +++ b/drivers/of/unittest.c
> @@ -1242,7 +1242,8 @@ static int of_unittest_apply_overlay(int overlay_nr, int unittest_nr,
> int *overlay_id)
> {
> struct device_node *np = NULL;
> - int ret, id = -1;
> + unsigned long id = -1;
Assigns a negative value to an unsigned.
> + int ret;
>
> np = of_find_node_by_path(overlay_path(overlay_nr));
> if (np == NULL) {
> @@ -1252,17 +1253,14 @@ static int of_unittest_apply_overlay(int overlay_nr, int unittest_nr,
> goto out;
> }
>
> - ret = of_overlay_create(np);
> - if (ret < 0) {
> + ret = of_overlay_create(np, &id);
> + if (ret) {
> unittest(0, "could not create overlay from \"%s\"\n",
> overlay_path(overlay_nr));
> goto out;
> }
> - id = ret;
> of_unittest_track_overlay(id);
>
> - ret = 0;
> -
> out:
> of_node_put(np);
>
> @@ -1442,6 +1440,7 @@ static void of_unittest_overlay_6(void)
> int ret, i, ov_id[2];
> int overlay_nr = 6, unittest_nr = 6;
> int before = 0, after = 1;
> + unsigned long id;
>
> /* unittest device must be in before state */
> for (i = 0; i < 2; i++) {
> @@ -1466,13 +1465,13 @@ static void of_unittest_overlay_6(void)
> return;
> }
>
> - ret = of_overlay_create(np);
> - if (ret < 0) {
> + ret = of_overlay_create(np, &id);
> + if (ret) {
> unittest(0, "could not create overlay from \"%s\"\n",
> overlay_path(overlay_nr + i));
> return;
> }
> - ov_id[i] = ret;
> + ov_id[i] = id;
> of_unittest_track_overlay(ov_id[i]);
> }
>
> @@ -2094,6 +2093,7 @@ static int __init overlay_data_add(int onum)
> int ret;
> u32 size;
> u32 size_from_header;
> + unsigned long id;
>
> for (k = 0, info = overlays; info; info++, k++) {
> if (k == onum)
> @@ -2138,13 +2138,12 @@ static int __init overlay_data_add(int onum)
> goto out_free_np_overlay;
> }
>
> - ret = of_overlay_create(info->np_overlay);
> - if (ret < 0) {
> + ret = of_overlay_create(info->np_overlay, &id);
> + if (ret) {
> pr_err("of_overlay_create() (ret=%d), %d\n", ret, onum);
> goto out_free_np_overlay;
> } else {
> - info->overlay_id = ret;
> - ret = 0;
> + info->overlay_id = id;
> }
>
> pr_debug("__dtb_overlay_begin applied, overlay id %d\n", ret);
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 4a8a709..ceb14bf 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -1307,7 +1307,7 @@ struct of_overlay_notify_data {
> #ifdef CONFIG_OF_OVERLAY
>
> /* ID based overlays; the API for external users */
> -int of_overlay_create(struct device_node *tree);
> +int of_overlay_create(struct device_node *tree, *unsigned long *id);
*unsigned long *id should be: unsigned long *id
How did you test this patch?
> int of_overlay_destroy(int id);
> int of_overlay_destroy_all(void);
>
> @@ -1316,7 +1316,7 @@ struct of_overlay_notify_data {
>
> #else
>
> -static inline int of_overlay_create(struct device_node *tree)
> +static inline int of_overlay_create(struct device_node *tree, unsigned long *id)
> {
> return -ENOTSUPP;
> }
^ permalink raw reply [flat|nested] 2+ messages in thread
* [patch net-next 1/3] idr: Use unsigned long instead of int
[not found] ` <1502849538-14284-2-git-send-email-chrism@mellanox.com>
@ 2017-08-16 21:56 ` Frank Rowand
0 siblings, 0 replies; 2+ messages in thread
From: Frank Rowand @ 2017-08-16 21:56 UTC (permalink / raw)
To: linux-arm-kernel
I replied to patch 0/3 when I to trim the distribution list. I meant to
reply to patch 1/3.
On 08/16/17 14:51, Frank Rowand wrote:
> I deleted most of the distribution list. My email server rejects an email
> with this many recipients.
>
>
> On 08/15/17 19:12, Chris Mi wrote:
>> IDR uses internally radix tree which uses unsigned long. It doesn't
>> makes sense to have index as signed value.
>>
>> Signed-off-by: Chris Mi <chrism@mellanox.com>
>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
>> ---
>
> < snip >
>
>> drivers/of/overlay.c | 15 +++----
>> drivers/of/unittest.c | 25 ++++++-----
>
> < snip >
>
>> include/linux/of.h | 4 +-
>
> < snip >
>
> Split the patch apart.
>
>
>> diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
>> index c0e4ee1..e5cfe01 100644
>> --- a/drivers/of/overlay.c
>> +++ b/drivers/of/overlay.c
>> @@ -373,10 +373,11 @@ static int of_free_overlay_info(struct of_overlay *ov)
>> *
>> * Returns the id of the created overlay, or a negative error number
>> */
>> -int of_overlay_create(struct device_node *tree)
>> +int of_overlay_create(struct device_node *tree, unsigned long *id)
>
> Added parameter *id, but never assigned a value to it.
>
>> {
>> struct of_overlay *ov;
>> - int err, id;
>> + unsigned long idr_index;
>> + int err;
>>
>> /* allocate the overlay structure */
>> ov = kzalloc(sizeof(*ov), GFP_KERNEL);
>> @@ -390,12 +391,10 @@ int of_overlay_create(struct device_node *tree)
>>
>> mutex_lock(&of_mutex);
>>
>> - id = idr_alloc(&ov_idr, ov, 0, 0, GFP_KERNEL);
>> - if (id < 0) {
>> - err = id;
>> + err = idr_alloc(&ov_idr, ov, &idr_index, 0, 0, GFP_KERNEL);
>> + if (err)
>> goto err_destroy_trans;
>> - }
>> - ov->id = id;
>> + ov->id = idr_index;
>>
>> /* build the overlay info structures */
>> err = of_build_overlay_info(ov, tree);
>> @@ -430,7 +429,7 @@ int of_overlay_create(struct device_node *tree)
>>
>> mutex_unlock(&of_mutex);
>>
>> - return id;
>> + return err;
>>
>> err_revert_overlay:
>> err_abort_trans:
>> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
>> index 0107fc6..ac7cc76 100644
>> --- a/drivers/of/unittest.c
>> +++ b/drivers/of/unittest.c
>> @@ -1242,7 +1242,8 @@ static int of_unittest_apply_overlay(int overlay_nr, int unittest_nr,
>> int *overlay_id)
>> {
>> struct device_node *np = NULL;
>> - int ret, id = -1;
>> + unsigned long id = -1;
>
> Assigns a negative value to an unsigned.
>
>
>> + int ret;
>>
>> np = of_find_node_by_path(overlay_path(overlay_nr));
>> if (np == NULL) {
>> @@ -1252,17 +1253,14 @@ static int of_unittest_apply_overlay(int overlay_nr, int unittest_nr,
>> goto out;
>> }
>>
>> - ret = of_overlay_create(np);
>> - if (ret < 0) {
>> + ret = of_overlay_create(np, &id);
>> + if (ret) {
>> unittest(0, "could not create overlay from \"%s\"\n",
>> overlay_path(overlay_nr));
>> goto out;
>> }
>> - id = ret;
>> of_unittest_track_overlay(id);
>>
>> - ret = 0;
>> -
>> out:
>> of_node_put(np);
>>
>> @@ -1442,6 +1440,7 @@ static void of_unittest_overlay_6(void)
>> int ret, i, ov_id[2];
>> int overlay_nr = 6, unittest_nr = 6;
>> int before = 0, after = 1;
>> + unsigned long id;
>>
>> /* unittest device must be in before state */
>> for (i = 0; i < 2; i++) {
>> @@ -1466,13 +1465,13 @@ static void of_unittest_overlay_6(void)
>> return;
>> }
>>
>> - ret = of_overlay_create(np);
>> - if (ret < 0) {
>> + ret = of_overlay_create(np, &id);
>> + if (ret) {
>> unittest(0, "could not create overlay from \"%s\"\n",
>> overlay_path(overlay_nr + i));
>> return;
>> }
>> - ov_id[i] = ret;
>> + ov_id[i] = id;
>> of_unittest_track_overlay(ov_id[i]);
>> }
>>
>> @@ -2094,6 +2093,7 @@ static int __init overlay_data_add(int onum)
>> int ret;
>> u32 size;
>> u32 size_from_header;
>> + unsigned long id;
>>
>> for (k = 0, info = overlays; info; info++, k++) {
>> if (k == onum)
>> @@ -2138,13 +2138,12 @@ static int __init overlay_data_add(int onum)
>> goto out_free_np_overlay;
>> }
>>
>> - ret = of_overlay_create(info->np_overlay);
>> - if (ret < 0) {
>> + ret = of_overlay_create(info->np_overlay, &id);
>> + if (ret) {
>> pr_err("of_overlay_create() (ret=%d), %d\n", ret, onum);
>> goto out_free_np_overlay;
>> } else {
>> - info->overlay_id = ret;
>> - ret = 0;
>> + info->overlay_id = id;
>> }
>>
>> pr_debug("__dtb_overlay_begin applied, overlay id %d\n", ret);
>
>
>
>> diff --git a/include/linux/of.h b/include/linux/of.h
>> index 4a8a709..ceb14bf 100644
>> --- a/include/linux/of.h
>> +++ b/include/linux/of.h
>> @@ -1307,7 +1307,7 @@ struct of_overlay_notify_data {
>> #ifdef CONFIG_OF_OVERLAY
>>
>> /* ID based overlays; the API for external users */
>> -int of_overlay_create(struct device_node *tree);
>> +int of_overlay_create(struct device_node *tree, *unsigned long *id);
>
> *unsigned long *id should be: unsigned long *id
>
> How did you test this patch?
>
>
>> int of_overlay_destroy(int id);
>> int of_overlay_destroy_all(void);
>>
>> @@ -1316,7 +1316,7 @@ struct of_overlay_notify_data {
>>
>> #else
>>
>> -static inline int of_overlay_create(struct device_node *tree)
>> +static inline int of_overlay_create(struct device_node *tree, unsigned long *id)
>> {
>> return -ENOTSUPP;
>> }
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-08-16 21:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1502849538-14284-1-git-send-email-chrism@mellanox.com>
2017-08-16 21:51 ` [patch net-next 0/3] net/sched: Improve getting objects by indexes Frank Rowand
[not found] ` <1502849538-14284-2-git-send-email-chrism@mellanox.com>
2017-08-16 21:56 ` [patch net-next 1/3] idr: Use unsigned long instead of int Frank Rowand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).