[RFC]__sock_create() change
Razvan Deaconescu
razvan at anaconda.cs.pub.ro
Mon May 14 02:59:53 CDT 2007
pradeep singh wrote:
> Hi All,
>
> the __sock_create in net/socket.c has the following code snippet.
>
> if (family == PF_INET && type == SOCK_PACKET) {
> static int warned;
> if (!warned) {
> warned = 1;
> printk(KERN_INFO "%s uses obsolete (PF_INET,SOCK_PACKET)\n",
> current->comm);
> }
> family = PF_PACKET;
> }
>
> this may be in place to emit a harmless warning , but why not change it
> to -
> if (family == PF_INET && type == SOCK_PACKET) {
>
> printk(KERN_INFO "%s uses obsolete (PF_INET,SOCK_PACKET)\n",
> current->comm);
>
> family = PF_PACKET;
> }
>
> Because anyway if(!warning) is going to result in true everytime we
> enter the function, as static int warning has scope limited to the outer
> if block.
Not quite so. The warning variable may only have scope within its block
,but (being static) is stored in a reserved memory area (I think this is
called linkage ... not sure though). The second time someone would try
creating a socket using PF_INET and SOCK_PACKET, he/she would not get
that warning as 'warning' is already set (warning = 1, that is).
Razvan
More information about the Kernel-mentors
mailing list