Message ID | 1485285847-7006-1-git-send-email-bhumirks@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 970d14e |
Headers | show |
On Tue, Jan 24, 2017 at 11:24 AM, Bhumika Goyal <bhumirks@gmail.com> wrote: > Declare device_type structure as const as it is only stored in the > type field of a device structure. This field is of type const, so add > const to declaration of device_type structure. > > File size before: > text data bss dec hex filename > 19278 3199 16 22493 57dd nvdimm/namespace_devs.o > > File size after: > text data bss dec hex filename > 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o > > Signed-off-by: Bhumika Goyal <bhumirks@gmail.com> Looks good to me, thanks, applied for 4.11.
On Wed, 2017-01-25 at 00:54 +0530, Bhumika Goyal wrote: > Declare device_type structure as const as it is only stored in the > type field of a device structure. This field is of type const, so add > const to declaration of device_type structure. > > File size before: > text data bss dec hex filename > 19278 3199 16 22493 57dd nvdimm/namespace_devs.o > > File size after: > text data bss dec hex filename > 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o Fine, but are you sure about the sizes? It seems odd the text went up 651 bytes while the data went down just 39 bytes.
On Tue, Jan 24, 2017 at 6:37 PM, Joe Perches <joe@perches.com> wrote: > On Wed, 2017-01-25 at 00:54 +0530, Bhumika Goyal wrote: >> Declare device_type structure as const as it is only stored in the >> type field of a device structure. This field is of type const, so add >> const to declaration of device_type structure. >> >> File size before: >> text data bss dec hex filename >> 19278 3199 16 22493 57dd nvdimm/namespace_devs.o >> >> File size after: >> text data bss dec hex filename >> 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o > > Fine, but are you sure about the sizes? > > It seems odd the text went up 651 bytes > while the data went down just 39 bytes. > Right, the size data wasn't why I applied it. It was the general rule of "make function pointer data read-only whenever possible to eliminate a kernel attack vector". Bhumika, you might want to mention this as the motivating reason to apply the patch if you do more of these changes.
On Tue, 2017-01-24 at 18:40 -0800, Dan Williams wrote: > On Tue, Jan 24, 2017 at 6:37 PM, Joe Perches <joe@perches.com> wrote: > > On Wed, 2017-01-25 at 00:54 +0530, Bhumika Goyal wrote: > > > Declare device_type structure as const as it is only stored in the > > > type field of a device structure. This field is of type const, so add > > > const to declaration of device_type structure. > > > > > > File size before: > > > text data bss dec hex filename > > > 19278 3199 16 22493 57dd nvdimm/namespace_devs.o > > > > > > File size after: > > > text data bss dec hex filename > > > 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o > > > > Fine, but are you sure about the sizes? > > > > It seems odd the text went up 651 bytes > > while the data went down just 39 bytes. > > > > Right, the size data wasn't why I applied it. It was the general rule > of "make function pointer data read-only whenever possible to > eliminate a kernel attack vector". Exactly the correct reason it's a fine patch and one that should be applied. > Bhumika, you might want to mention > this as the motivating reason to apply the patch if you do more of > these changes. Regardless, the object sizes are still odd. The config should be mentioned because actually, the commonly compiles sizes reported are not correct. with an x86-64 defconfig I get: $ size drivers/nvdimm/namespace_devs.o* text data bss dec hex filename 14615 519 16 15150 3b2e drivers/nvdimm/namespace_devs.o.new 14439 695 16 15150 3b2e drivers/nvdimm/namespace_devs.o.old
On Tue, 24 Jan 2017, Joe Perches wrote: > On Tue, 2017-01-24 at 18:40 -0800, Dan Williams wrote: > > On Tue, Jan 24, 2017 at 6:37 PM, Joe Perches <joe@perches.com> wrote: > > > On Wed, 2017-01-25 at 00:54 +0530, Bhumika Goyal wrote: > > > > Declare device_type structure as const as it is only stored in the > > > > type field of a device structure. This field is of type const, so add > > > > const to declaration of device_type structure. > > > > > > > > File size before: > > > > text data bss dec hex filename > > > > 19278 3199 16 22493 57dd nvdimm/namespace_devs.o > > > > > > > > File size after: > > > > text data bss dec hex filename > > > > 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o > > > > > > Fine, but are you sure about the sizes? > > > > > > It seems odd the text went up 651 bytes > > > while the data went down just 39 bytes. > > > > > > > Right, the size data wasn't why I applied it. It was the general rule > > of "make function pointer data read-only whenever possible to > > eliminate a kernel attack vector". > > Exactly the correct reason it's a fine patch and one > that should be applied. > > > Bhumika, you might want to mention > > this as the motivating reason to apply the patch if you do more of > > these changes. > > Regardless, the object sizes are still odd. > > The config should be mentioned because actually, > the commonly compiles sizes reported are not correct. > > with an x86-64 defconfig I get: > > $ size drivers/nvdimm/namespace_devs.o* > text data bss dec hex filename > 14615 519 16 15150 3b2e drivers/nvdimm/namespace_devs.o.new > 14439 695 16 15150 3b2e drivers/nvdimm/namespace_devs.o.old What does the data column actually represent? I tried size on the .o file generated from: commit a65f0161f4d69d6738d4821e649448312cd818e2 Author: Stephen Rothwell <sfr@canb.auug.org.au> Date: Tue Jan 17 15:22:28 2017 +1100 with CONFIG_X86_64=y and I get: text data bss dec hex filename 19726 3480 16 23222 5ab6 drivers/nvdimm/namespace_devs.o but when I run objdump -sh drivers/nvdimm/namespace_devs.o, I find a .data segment of size 1008 and a .data.unlikely segment of size 8, which don't match up with the results of size. julia
On Wed, 2017-01-25 at 07:49 +0100, Julia Lawall wrote: > What does the data column actually represent? I tried size on the .o file > generated from: > > commit a65f0161f4d69d6738d4821e649448312cd818e2 > Author: Stephen Rothwell <sfr@canb.auug.org.au> > Date: Tue Jan 17 15:22:28 2017 +1100 > > with CONFIG_X86_64=y and I get: > > text data bss dec hex filename > 19726 3480 16 23222 5ab6 drivers/nvdimm/namespace_devs.o > > but when I run objdump -sh drivers/nvdimm/namespace_devs.o, I find a .data > segment of size 1008 and a .data.unlikely segment of size 8, which don't > match up with the results of size. Likely you have dynamic_debug enabled and you need to include these additional sections: __jump_table __verbose If user_mode_linux is enabled, add sections: .fini_array .init_array
On Wed, 25 Jan 2017, Joe Perches wrote: > On Wed, 2017-01-25 at 07:49 +0100, Julia Lawall wrote: > > What does the data column actually represent? I tried size on the .o file > > generated from: > > > > commit a65f0161f4d69d6738d4821e649448312cd818e2 > > Author: Stephen Rothwell <sfr@canb.auug.org.au> > > Date: Tue Jan 17 15:22:28 2017 +1100 > > > > with CONFIG_X86_64=y and I get: > > > > text data bss dec hex filename > > 19726 3480 16 23222 5ab6 drivers/nvdimm/namespace_devs.o > > > > but when I run objdump -sh drivers/nvdimm/namespace_devs.o, I find a .data > > segment of size 1008 and a .data.unlikely segment of size 8, which don't > > match up with the results of size. > > Likely you have dynamic_debug enabled and you > need to include these additional sections: > > __jump_table > __verbose > > If user_mode_linux is enabled, add sections: > > .fini_array > .init_array Ah, thanks for the explanations. julia
On Wed, Jan 25, 2017 at 9:31 PM, Joe Perches <joe@perches.com> wrote: > On Wed, 2017-01-25 at 07:49 +0100, Julia Lawall wrote: >> What does the data column actually represent? I tried size on the .o file >> generated from: >> >> commit a65f0161f4d69d6738d4821e649448312cd818e2 >> Author: Stephen Rothwell <sfr@canb.auug.org.au> >> Date: Tue Jan 17 15:22:28 2017 +1100 >> >> with CONFIG_X86_64=y and I get: >> >> text data bss dec hex filename >> 19726 3480 16 23222 5ab6 drivers/nvdimm/namespace_devs.o >> >> but when I run objdump -sh drivers/nvdimm/namespace_devs.o, I find a .data >> segment of size 1008 and a .data.unlikely segment of size 8, which don't >> match up with the results of size. > > Likely you have dynamic_debug enabled and you > need to include these additional sections: > > __jump_table > __verbose > > If user_mode_linux is enabled, add sections: > > .fini_array > .init_array > Thanks for the explanation. I also compiled the patch for x86-64 but couldn't find what went wrong but this solved the problem. Thanks, Bhumika
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c index 6307088..b8c40b8 100644 --- a/drivers/nvdimm/namespace_devs.c +++ b/drivers/nvdimm/namespace_devs.c @@ -52,17 +52,17 @@ static void namespace_blk_release(struct device *dev) kfree(nsblk); } -static struct device_type namespace_io_device_type = { +static const struct device_type namespace_io_device_type = { .name = "nd_namespace_io", .release = namespace_io_release, }; -static struct device_type namespace_pmem_device_type = { +static const struct device_type namespace_pmem_device_type = { .name = "nd_namespace_pmem", .release = namespace_pmem_release, }; -static struct device_type namespace_blk_device_type = { +static const struct device_type namespace_blk_device_type = { .name = "nd_namespace_blk", .release = namespace_blk_release, };
Declare device_type structure as const as it is only stored in the type field of a device structure. This field is of type const, so add const to declaration of device_type structure. File size before: text data bss dec hex filename 19278 3199 16 22493 57dd nvdimm/namespace_devs.o File size after: text data bss dec hex filename 19929 3160 16 23105 5a41 nvdimm/namespace_devs.o Signed-off-by: Bhumika Goyal <bhumirks@gmail.com> --- drivers/nvdimm/namespace_devs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)