[X25]: Avoid divides and sparse warnings

CHECK   net/x25/af_x25.c
net/x25/af_x25.c:117:46: warning: expensive signed divide
   CHECK   net/x25/x25_facilities.c
net/x25/x25_facilities.c:209:30: warning: expensive signed divide
   CHECK   net/x25/x25_in.c
net/x25/x25_in.c:250:26: warning: expensive signed divide
   CHECK   net/x25/x25_proc.c
net/x25/x25_proc.c:48:11: warning: context imbalance in 'x25_seq_route_start'
- wrong count at exit
net/x25/x25_proc.c:72:13: warning: context imbalance in 'x25_seq_route_stop' -
unexpected unlock
net/x25/x25_proc.c:112:11: warning: context imbalance in
'x25_seq_socket_start' - wrong count at exit
net/x25/x25_proc.c:129:13: warning: context imbalance in 'x25_seq_socket_stop'
- unexpected unlock
net/x25/x25_proc.c:190:11: warning: context imbalance in
'x25_seq_forward_start' - wrong count at exit
net/x25/x25_proc.c:215:13: warning: context imbalance in
'x25_seq_forward_stop' - unexpected unlock
   CHECK   net/x25/x25_subr.c
net/x25/x25_subr.c:362:57: warning: expensive signed divide

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2008-01-13 22:27:52 -08:00 committed by David S. Miller
parent 4dde4610c4
commit 6bf1574ee3
5 changed files with 11 additions and 7 deletions

View file

@ -83,9 +83,9 @@ struct compat_x25_subscrip_struct {
int x25_addr_ntoa(unsigned char *p, struct x25_address *called_addr, int x25_addr_ntoa(unsigned char *p, struct x25_address *called_addr,
struct x25_address *calling_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; called_len = (*p >> 0) & 0x0F;
calling_len = (*p >> 4) & 0x0F; calling_len = (*p >> 4) & 0x0F;

View file

@ -205,9 +205,7 @@ int x25_create_facilities(unsigned char *buffer,
} }
if (dte_facs->calling_len && (facil_mask & X25_MASK_CALLING_AE)) { if (dte_facs->calling_len && (facil_mask & X25_MASK_CALLING_AE)) {
unsigned bytecount = (dte_facs->calling_len % 2) ? unsigned bytecount = (dte_facs->calling_len + 1) >> 1;
dte_facs->calling_len / 2 + 1 :
dte_facs->calling_len / 2;
*p++ = X25_FAC_CALLING_AE; *p++ = X25_FAC_CALLING_AE;
*p++ = 1 + bytecount; *p++ = 1 + bytecount;
*p++ = dte_facs->calling_len; *p++ = dte_facs->calling_len;

View file

@ -247,7 +247,7 @@ static int x25_state3_machine(struct sock *sk, struct sk_buff *skb, int frametyp
break; break;
} }
if (atomic_read(&sk->sk_rmem_alloc) > if (atomic_read(&sk->sk_rmem_alloc) >
(sk->sk_rcvbuf / 2)) (sk->sk_rcvbuf >> 1))
x25->condition |= X25_COND_OWN_RX_BUSY; x25->condition |= X25_COND_OWN_RX_BUSY;
} }
/* /*

View file

@ -41,6 +41,7 @@ found:
} }
static void *x25_seq_route_start(struct seq_file *seq, loff_t *pos) static void *x25_seq_route_start(struct seq_file *seq, loff_t *pos)
__acquires(x25_route_list_lock)
{ {
loff_t l = *pos; loff_t l = *pos;
@ -70,6 +71,7 @@ out:
} }
static void x25_seq_route_stop(struct seq_file *seq, void *v) static void x25_seq_route_stop(struct seq_file *seq, void *v)
__releases(x25_route_list_lock)
{ {
read_unlock_bh(&x25_route_list_lock); read_unlock_bh(&x25_route_list_lock);
} }
@ -105,6 +107,7 @@ found:
} }
static void *x25_seq_socket_start(struct seq_file *seq, loff_t *pos) static void *x25_seq_socket_start(struct seq_file *seq, loff_t *pos)
__acquires(x25_list_lock)
{ {
loff_t l = *pos; loff_t l = *pos;
@ -127,6 +130,7 @@ out:
} }
static void x25_seq_socket_stop(struct seq_file *seq, void *v) static void x25_seq_socket_stop(struct seq_file *seq, void *v)
__releases(x25_list_lock)
{ {
read_unlock_bh(&x25_list_lock); read_unlock_bh(&x25_list_lock);
} }
@ -183,6 +187,7 @@ found:
} }
static void *x25_seq_forward_start(struct seq_file *seq, loff_t *pos) static void *x25_seq_forward_start(struct seq_file *seq, loff_t *pos)
__acquires(x25_forward_list_lock)
{ {
loff_t l = *pos; loff_t l = *pos;
@ -213,6 +218,7 @@ out:
} }
static void x25_seq_forward_stop(struct seq_file *seq, void *v) static void x25_seq_forward_stop(struct seq_file *seq, void *v)
__releases(x25_forward_list_lock)
{ {
read_unlock_bh(&x25_forward_list_lock); read_unlock_bh(&x25_forward_list_lock);
} }

View file

@ -359,7 +359,7 @@ void x25_check_rbuf(struct sock *sk)
{ {
struct x25_sock *x25 = x25_sk(sk); struct x25_sock *x25 = x25_sk(sk);
if (atomic_read(&sk->sk_rmem_alloc) < (sk->sk_rcvbuf / 2) && if (atomic_read(&sk->sk_rmem_alloc) < (sk->sk_rcvbuf >> 1) &&
(x25->condition & X25_COND_OWN_RX_BUSY)) { (x25->condition & X25_COND_OWN_RX_BUSY)) {
x25->condition &= ~X25_COND_OWN_RX_BUSY; x25->condition &= ~X25_COND_OWN_RX_BUSY;
x25->condition &= ~X25_COND_ACK_PENDING; x25->condition &= ~X25_COND_ACK_PENDING;