* [X25]: Avoid divides and sparse warnings
@ 2008-01-13 10:33 Eric Dumazet
2008-01-14 6:29 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Eric Dumazet @ 2008-01-13 10:33 UTC (permalink / raw)
To: David S. Miller; +Cc: Linux Netdev List
[-- Attachment #1: Type: text/plain, Size: 1299 bytes --]
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>
net/x25/af_x25.c | 4 ++--
net/x25/x25_facilities.c | 4 +---
net/x25/x25_in.c | 2 +-
net/x25/x25_proc.c | 6 ++++++
net/x25/x25_subr.c | 2 +-
5 files changed, 11 insertions(+), 7 deletions(-)
[-- Attachment #2: x25.patch --]
[-- Type: text/plain, Size: 3081 bytes --]
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 92cfe8e..07fad7c 100644
--- 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 called_len, calling_len;
+ unsigned int called_len, calling_len;
char *called, *calling;
- int i;
+ unsigned int i;
called_len = (*p >> 0) & 0x0F;
calling_len = (*p >> 4) & 0x0F;
diff --git a/net/x25/x25_facilities.c b/net/x25/x25_facilities.c
index dec404a..a21f664 100644
--- a/net/x25/x25_facilities.c
+++ b/net/x25/x25_facilities.c
@@ -205,9 +205,7 @@ int x25_create_facilities(unsigned char *buffer,
}
if (dte_facs->calling_len && (facil_mask & X25_MASK_CALLING_AE)) {
- unsigned bytecount = (dte_facs->calling_len % 2) ?
- dte_facs->calling_len / 2 + 1 :
- dte_facs->calling_len / 2;
+ unsigned bytecount = (dte_facs->calling_len + 1) >> 1;
*p++ = X25_FAC_CALLING_AE;
*p++ = 1 + bytecount;
*p++ = dte_facs->calling_len;
diff --git a/net/x25/x25_in.c b/net/x25/x25_in.c
index 1c88762..7d7c3ab 100644
--- a/net/x25/x25_in.c
+++ b/net/x25/x25_in.c
@@ -247,7 +247,7 @@ static int x25_state3_machine(struct sock *sk, struct sk_buff *skb, int frametyp
break;
}
if (atomic_read(&sk->sk_rmem_alloc) >
- (sk->sk_rcvbuf / 2))
+ (sk->sk_rcvbuf >> 1))
x25->condition |= X25_COND_OWN_RX_BUSY;
}
/*
diff --git a/net/x25/x25_proc.c b/net/x25/x25_proc.c
index 7d55e50..78b0534 100644
--- a/net/x25/x25_proc.c
+++ b/net/x25/x25_proc.c
@@ -41,6 +41,7 @@ found:
}
static void *x25_seq_route_start(struct seq_file *seq, loff_t *pos)
+ __acquires(x25_route_list_lock)
{
loff_t l = *pos;
@@ -70,6 +71,7 @@ out:
}
static void x25_seq_route_stop(struct seq_file *seq, void *v)
+ __releases(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)
+ __acquires(x25_list_lock)
{
loff_t l = *pos;
@@ -127,6 +130,7 @@ out:
}
static void x25_seq_socket_stop(struct seq_file *seq, void *v)
+ __releases(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)
+ __acquires(x25_forward_list_lock)
{
loff_t l = *pos;
@@ -213,6 +218,7 @@ out:
}
static void x25_seq_forward_stop(struct seq_file *seq, void *v)
+ __releases(x25_forward_list_lock)
{
read_unlock_bh(&x25_forward_list_lock);
}
diff --git a/net/x25/x25_subr.c b/net/x25/x25_subr.c
index 8d6220a..511a598 100644
--- a/net/x25/x25_subr.c
+++ b/net/x25/x25_subr.c
@@ -359,7 +359,7 @@ void x25_check_rbuf(struct sock *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_ACK_PENDING;
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [X25]: Avoid divides and sparse warnings
2008-01-13 10:33 [X25]: Avoid divides and sparse warnings Eric Dumazet
@ 2008-01-14 6:29 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2008-01-14 6:29 UTC (permalink / raw)
To: dada1; +Cc: netdev
From: Eric Dumazet <dada1@cosmosbay.com>
Date: Sun, 13 Jan 2008 11:33:01 +0100
> 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>
Applied, thanks Eric.
We might just want to make sk_rcvbuf et al. unsigned, it
crops up a lot and I can't see any valid reason for it
to be negative or for uses of it to matter with other
signed values.
Or did we discuss that to death already? :-)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-01-14 6:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-13 10:33 [X25]: Avoid divides and sparse warnings Eric Dumazet
2008-01-14 6:29 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).