[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