Sorry, you cannot do this.
You are adding a new lock and insert into a global list for
pretty much every socket created, that will destroy performance.
I think there are no serious performance penalty in generally use.
Most frequently used types of sockets like tcp, udp, and unix are not
stored to the global list and don't touch the new lock at all.
Please, look at has_own_proc_entry in struct proto.
You also cannnot add new fields to socket listing procfs files,
it will break existing application which depend upon the existing
exact layout of those fields.
Is there any strcut which can be extended?
Extending struct sock is o.k.?
Masatake YAMATO