--- affix-kernel-3.2.0/include/uart.h 2004-07-29 13:44:58.000000000 +0200 +++ affix-kernel-3.2.0-jm/include/uart.h 2005-10-01 21:35:23.111982656 +0200 @@ -231,7 +231,7 @@ static inline unsigned int serial_in(str #endif case SERIAL_IO_MEM: offset <<= btuart->ser.iomem_reg_shift; - return readb((unsigned long) btuart->ser.iomem_base + offset); + return readb(btuart->ser.iomem_base + offset); default: return inb(btuart->ser.port + offset); } @@ -248,7 +248,7 @@ static inline void serial_out(struct aff #endif case SERIAL_IO_MEM: offset <<= btuart->ser.iomem_reg_shift; - writeb(value, (unsigned long) btuart->ser.iomem_base + offset); + writeb(value, btuart->ser.iomem_base + offset); break; default: outb(value, btuart->ser.port + offset); diff -up ../affix-kernel-3.2.0/drivers/btuart_tty.c affix-kernel-3.2.0-jm/drivers/btuart_tty.c --- affix-kernel-3.2.0/drivers/btuart_tty.c 2004-07-29 13:44:58.000000000 +0200 +++ affix-kernel-3.2.0-jm/drivers/btuart_tty.c 2005-10-01 19:04:37.000000000 +0200 @@ -286,7 +286,7 @@ int btuart_tty_write(struct affix_uart * DBFENTER; //btuart->tty->flags |= (1 << TTY_DO_WRITE_WAKEUP); set_bit(TTY_DO_WRITE_WAKEUP, &btuart->tty->flags); - actual = btuart->tty->driver->write(btuart->tty, 0, data, size); + actual = btuart->tty->driver->write(btuart->tty, data, size); DBFEXIT; return actual; } --- affix-kernel-3.2.0/include/bluetooth.h 2004-05-17 20:21:55.000000000 +0200 +++ affix-kernel-3.2.0-jm/include/bluetooth.h 2005-10-02 23:37:18.637975496 +0200 @@ -789,6 +811,7 @@ int hci_exec_cmd1(int fd, __u16 opcode, static inline _syscall3(int,ioctl,int,fd,unsigned int,cmd, void*,arg); static inline _syscall3(int,poll,struct pollfd*,ufds,unsigned int,nfds,int,timeout); static inline _syscall2(int,socketcall,int,call,unsigned long*,args); +static inline _syscall1(int,close,int,fd); static inline int btsys_socket(int domain, int type, int protocol) { --- affix-kernel-3.2.0/include/hci.h 2005-10-02 23:47:32.751616032 +0200 +++ affix-kernel-3.2.0-jm/include/hci.h 2005-10-02 21:43:54.218404504 +0200 @@ -599,8 +599,10 @@ typedef struct { struct list_head q; struct sock *sk; + struct sock *sk_pair; int dport, sport; } affix_sock_t; +#define affix_sk_pair(sk) (((affix_sock_t*)sk->sk_prot)->sk_pair) typedef int (*affix_do_connect_t)(struct sock *sk, struct sockaddr_affix *addr); typedef void (*affix_do_destroy_t)(struct sock *sk); --- affix-kernel-3.2.0/btcore/hci.c 2005-10-02 21:27:07.052516992 +0200 +++ affix-kernel-3.2.0-jm/btcore/hci.c 2005-10-02 23:35:32.743073968 +0200 @@ -2106,7 +2106,7 @@ void affix_sock_reset(struct sock *sk, i if (!sock_flag(sk, SOCK_DEAD)) { sk->sk_state_change(sk); } - if (sk->sk_pair && destroy) // not owned by the socket yet + if (affix_sk_pair(sk) && destroy) // not owned by the socket yet destroy(sk); sock_put(sk); DBFEXIT; @@ -2115,7 +2115,7 @@ void affix_sock_reset(struct sock *sk, i int affix_sock_ready(struct sock *sk) { struct sk_buff *skb; - struct sock *pair = sk->sk_pair; + struct sock *pair = affix_sk_pair(sk); if (sock_flag(pair, SOCK_DEAD)) return -1; @@ -2127,7 +2127,7 @@ int affix_sock_ready(struct sock *sk) skb_queue_tail(&pair->sk_receive_queue, skb); pair->sk_data_ready(pair, skb->len); sock_put(pair); /* put pair, not needed */ - sk->sk_pair = NULL; + affix_sk_pair(sk) = NULL; return 0; } --- affix-kernel-3.2.0/btcore/af_hci.c 2004-05-17 20:21:55.000000000 +0200 +++ affix-kernel-3.2.0-jm/btcore/af_hci.c 2005-10-02 21:46:30.099706944 +0200 @@ -165,10 +165,10 @@ void hpf_destroy(struct sock *sk) hcc_close(hsk->con); hsk->con = NULL; } - if (sk->sk_pair) { - sk->sk_pair->sk_ack_backlog--; - sock_put(sk->sk_pair); - sk->sk_pair = NULL; + if (affix_sk_pair(sk)) { + affix_sk_pair(sk)->sk_ack_backlog--; + sock_put(affix_sk_pair(sk)); + affix_sk_pair(sk) = NULL; } if (hsk->flags & AFFIX_FLAGS_CTLMASK) affix_ctl_mode &= ~(hsk->flags & AFFIX_FLAGS_CTLMASK); @@ -366,7 +366,7 @@ struct sock *hpf_dup(struct sock *osk) sk = hpf_create(NULL, PF_AFFIX, GFP_ATOMIC, 1); if (!sk) return NULL; - sk->sk_pair = osk; + affix_sk_pair(sk) = osk; sk->sk_protocol = osk->sk_protocol; sk->sk_type = osk->sk_type; sk->sk_destruct = osk->sk_destruct; @@ -434,7 +434,7 @@ int hpf_connect_cfm(hci_con *con, int st hsk->con = con; hcc_hold(con); } - if (sk->sk_pair){ /* incomming connection */ + if (affix_sk_pair(sk)){ /* incomming connection */ sock_hold(pair); pair->sk_ack_backlog++; if (affix_sock_ready(sk) != 0) { --- affix-kernel-3.2.0/btcore/af_l2cap.c 2004-05-17 20:21:55.000000000 +0200 +++ affix-kernel-3.2.0-jm/btcore/af_l2cap.c 2005-10-02 21:48:22.000000000 +0200 @@ -142,10 +142,10 @@ int lpf_close(struct sock *sk) l2ca_put(lsk->ch); lsk->ch = NULL; } - if (sk->sk_pair) { - sk->sk_pair->sk_ack_backlog--; - sock_put(sk->sk_pair); - sk->sk_pair = NULL; + if (affix_sk_pair(sk)) { + affix_sk_pair(sk)->sk_ack_backlog--; + sock_put(affix_sk_pair(sk)); + affix_sk_pair(sk) = NULL; } /* remove all packets and check if threre is a connection in the queue */ while((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { @@ -279,7 +279,7 @@ struct sock *lpf_dup(struct sock *osk) if (!sk) return NULL; - sk->sk_pair = osk; + affix_sk_pair(sk) = osk; sk->sk_protocol = osk->sk_protocol; sk->sk_type = osk->sk_type; sk->sk_destruct = osk->sk_destruct; @@ -344,7 +344,7 @@ int lpf_connect_cfm(l2cap_ch *ch, int re #else lsk->mtu = l2ca_get_mtu(ch); #endif - if (sk->sk_pair){ /* incomming connection */ + if (affix_sk_pair(sk)){ /* incomming connection */ if (affix_sock_ready(sk)) goto err; } else if (!sock_flag(sk, SOCK_DEAD)) { --- affix-kernel-3.2.0/rfcomm/af_rfcomm.c 2004-05-17 20:21:55.000000000 +0200 +++ affix-kernel-3.2.0-jm/rfcomm/af_rfcomm.c 2005-10-02 21:50:58.000000000 +0200 @@ -212,9 +212,9 @@ int rpf_close(struct sock *sk) rfcon_orphan(rsk->con); rfcon_put(xchg(&rsk->con, NULL)); } - if (sk->sk_pair) { - sk->sk_pair->sk_ack_backlog--; - sock_put(xchg(&sk->sk_pair, NULL)); + if (affix_sk_pair(sk)) { + affix_sk_pair(sk)->sk_ack_backlog--; + sock_put(xchg(&affix_sk_pair(sk), NULL)); } while((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { if (skb->sk != sk) { @@ -364,7 +364,7 @@ struct sock *rpf_dup(struct sock *osk) sk = rpf_create(NULL, PF_AFFIX, GFP_ATOMIC, 1); if (!sk) return NULL; - sk->sk_pair = osk; + affix_sk_pair(sk) = osk; sk->sk_protocol = osk->sk_protocol; sk->sk_type = osk->sk_type; sk->sk_destruct = osk->sk_destruct; @@ -434,7 +434,7 @@ int rpf_connect_cfm(rfcomm_con *con, int // enable rfcon_set_rxfc(con, AFFIX_FLOW_ON); } - if (sk->sk_pair){ /* incomming connection */ + if (affix_sk_pair(sk)){ /* incomming connection */ if (affix_sock_ready(sk)) goto err; } else if (!sock_flag(sk, SOCK_DEAD)) {