Fix the hang issue when unload the fastsocket with selinux enabled

Root reason:
There will be duplicated security inode free when unload the fastsocket.
When load the fastsocket, kernel will allocate one non-socket inode.
When unload the fastsocket, kernel invokes destroy_inode to destory
the inode.
As a result, there are duplicated security free.
1. destroy_inode->__destroy_inode->security_inode_free;
2. destroy_inode->fastsock_destroy_inode->security_inode_free;

Fix:
Add S_ISSOCK check before security_inode_free in fastsock_destroy_inode.
1. For the non-socket inode, it could avoid duplicated security_inode_free call;
2. For fastsocket inode, it still invokes security_inode_free;
Merge branch 'master' of github.com:fastos/fastsocket
fix typo bobin -> robin
Merge pull request #24 from foobar/typo-fix

fix typo bobin -> robin
Remove useless dentry check in dput_fastsocket

1. Remove dentry check in dput_fastsocket, because its caller "dput" has already check it;
2. Change dput_fastsocket as static function;
Remove FMODE_FASTSOCKET check in filp_close

It is unnecessary to check whether the file is fastsocket file in filp_close;
There are two kinds of file type which fastsocket could create
1. The file which is open with file "/dev/fastsocket": The mode of
this file will not be set the flag "FMODE_FASTSOCKET". And the
fsocket_release will be invoked by filp_close->fput->__fput.
2. The file which is allocated by the socket injected by fastsocket:
The socket close is also injected by fastsocket, so it will reach
fsocket_close instead of the filp_close.

To summarize, it is unnecessary to check fastsocket file in filp_close.
Merge branch 'master' of github.com:fastos/fastsocket
Refactor the codes, split fastsocket.c to fastsocket_api.c and fastsocket_core.c

1. There are too many functions which have similar names, so that it is
not easy to maintain and understand.

So I split the fastsocket.c to fastsocket_api.c and fastsocket_core.c

The API functions are in the fastsocket_api.c, including the user API
and the functions invoked by kernel when load/unload. The worker
functions are in the fastsocket_core.c.

And we should use different prefix to differentiate the API functions
and the worker functions. The former uses "fastsocket", while the
latter ones use "fsocket".

There still are some worker functions left which are not named by the
right style. They will be enhanced later.

2. Add one new proc file /proc/net/fsocket_stats to show the fastsocket stats to help we debug and enhancement.
It only show the fsocket cache alloc/free now. But it will show more stats later.
Remove useless fsocket_alloc, SOCKET_INODE, and INODE_SOCKET

1. The struct fsocket_alloc is same as the kernel struct socket_alloc
actually. So it is unnecessary to bring new one.
And the kernel also provide similar functions like SOCKET_INODE and
INODE_SOCKET. So they are useless too.
Actually you could find the INODE_SOCKET uses socket_alloc instead of
fsocket_alloc.

So remove the useless codes to clean.

2. Rename fastsocket_socket_cache to fsocket_socket_cache
Merge branch 'master' of github.com:fastos/fastsocket