git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
i2c: Drop stray references to lm_sensors
[safe/jmp/linux-2.6]
/
net
/
x25
/
af_x25.c
diff --git
a/net/x25/af_x25.c
b/net/x25/af_x25.c
index
a198843
..
6ba67c5
100644
(file)
--- a/
net/x25/af_x25.c
+++ b/
net/x25/af_x25.c
@@
-83,9
+83,9
@@
struct compat_x25_subscrip_struct {
int x25_addr_ntoa(unsigned char *p, struct x25_address *called_addr,
struct x25_address *calling_addr)
{
int x25_addr_ntoa(unsigned char *p, struct x25_address *called_addr,
struct x25_address *calling_addr)
{
- int called_len, calling_len;
+
unsigned
int called_len, calling_len;
char *called, *calling;
char *called, *calling;
- int i;
+
unsigned
int i;
called_len = (*p >> 0) & 0x0F;
calling_len = (*p >> 4) & 0x0F;
called_len = (*p >> 0) & 0x0F;
calling_len = (*p >> 4) & 0x0F;
@@
-191,6
+191,9
@@
static int x25_device_event(struct notifier_block *this, unsigned long event,
struct net_device *dev = ptr;
struct x25_neigh *nb;
struct net_device *dev = ptr;
struct x25_neigh *nb;
+ if (dev_net(dev) != &init_net)
+ return NOTIFY_DONE;
+
if (dev->type == ARPHRD_X25
#if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE)
|| dev->type == ARPHRD_ETHER
if (dev->type == ARPHRD_X25
#if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE)
|| dev->type == ARPHRD_ETHER
@@
-466,10
+469,10
@@
static struct proto x25_proto = {
.obj_size = sizeof(struct x25_sock),
};
.obj_size = sizeof(struct x25_sock),
};
-static struct sock *x25_alloc_socket(
void
)
+static struct sock *x25_alloc_socket(
struct net *net
)
{
struct x25_sock *x25;
{
struct x25_sock *x25;
- struct sock *sk = sk_alloc(
AF_X25, GFP_ATOMIC, &x25_proto, 1
);
+ struct sock *sk = sk_alloc(
net, AF_X25, GFP_ATOMIC, &x25_proto
);
if (!sk)
goto out;
if (!sk)
goto out;
@@
-485,17
+488,20
@@
out:
return sk;
}
return sk;
}
-static int x25_create(struct socket *sock, int protocol)
+static int x25_create(struct
net *net, struct
socket *sock, int protocol)
{
struct sock *sk;
struct x25_sock *x25;
int rc = -ESOCKTNOSUPPORT;
{
struct sock *sk;
struct x25_sock *x25;
int rc = -ESOCKTNOSUPPORT;
+ if (net != &init_net)
+ return -EAFNOSUPPORT;
+
if (sock->type != SOCK_SEQPACKET || protocol)
goto out;
rc = -ENOMEM;
if (sock->type != SOCK_SEQPACKET || protocol)
goto out;
rc = -ENOMEM;
- if ((sk = x25_alloc_socket()) == NULL)
+ if ((sk = x25_alloc_socket(
net
)) == NULL)
goto out;
x25 = x25_sk(sk);
goto out;
x25 = x25_sk(sk);
@@
-543,7
+549,7
@@
static struct sock *x25_make_new(struct sock *osk)
if (osk->sk_type != SOCK_SEQPACKET)
goto out;
if (osk->sk_type != SOCK_SEQPACKET)
goto out;
- if ((sk = x25_alloc_socket()) == NULL)
+ if ((sk = x25_alloc_socket(
sock_net(osk)
)) == NULL)
goto out;
x25 = x25_sk(sk);
goto out;
x25 = x25_sk(sk);
@@
-951,7
+957,7
@@
int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
* Incoming Call User Data.
*/
if (skb->len >= 0) {
* Incoming Call User Data.
*/
if (skb->len >= 0) {
-
memcpy(makex25->calluserdata.cuddata, skb->
data, skb->len);
+
skb_copy_from_linear_data(skb, makex25->calluserdata.cud
data, skb->len);
makex25->calluserdata.cudlength = skb->len;
}
makex25->calluserdata.cudlength = skb->len;
}
@@
-1058,9
+1064,10
@@
static int x25_sendmsg(struct kiocb *iocb, struct socket *sock,
*/
SOCK_DEBUG(sk, "x25_sendmsg: Copying user data\n");
*/
SOCK_DEBUG(sk, "x25_sendmsg: Copying user data\n");
- asmptr = skb->h.raw = skb_put(skb, len);
+ skb_reset_transport_header(skb);
+ skb_put(skb, len);
- rc = memcpy_fromiovec(
asmptr
, msg->msg_iov, len);
+ rc = memcpy_fromiovec(
skb_transport_header(skb)
, msg->msg_iov, len);
if (rc)
goto out_kfree_skb;
if (rc)
goto out_kfree_skb;
@@
-1210,8
+1217,7
@@
static int x25_recvmsg(struct kiocb *iocb, struct socket *sock,
}
}
}
}
- skb->h.raw = skb->data;
-
+ skb_reset_transport_header(skb);
copied = skb->len;
if (copied > size) {
copied = skb->len;
if (copied > size) {
@@
-1605,7
+1611,6
@@
static const struct proto_ops SOCKOPS_WRAPPED(x25_proto_ops) = {
.sendpage = sock_no_sendpage,
};
.sendpage = sock_no_sendpage,
};
-#include <linux/smp_lock.h>
SOCKOPS_WRAP(x25_proto, AF_X25);
static struct packet_type x25_packet_type = {
SOCKOPS_WRAP(x25_proto, AF_X25);
static struct packet_type x25_packet_type = {
@@
-1647,7
+1652,7
@@
static int __init x25_init(void)
register_netdevice_notifier(&x25_dev_notifier);
register_netdevice_notifier(&x25_dev_notifier);
- printk(KERN_INFO "X.25 for Linux
. Version 0.2 for Linux 2.1.15
\n");
+ printk(KERN_INFO "X.25 for Linux
Version 0.2
\n");
#ifdef CONFIG_SYSCTL
x25_register_sysctl();
#ifdef CONFIG_SYSCTL
x25_register_sysctl();