Hello,

When compiling GNU/Hurd, quite a few warnings were generated. I fixed some of
them, and now it compiles with flags:
CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -Werror \
                    -Werror=old-style-definition \
                    -Werror=implicit-function-declaration \
                    -Werror=strict-prototypes \
                    -g -O3 -fno-strict-aliasing $($*-CFLAGS)
Completes successfully.

I have a few questions:
1. Is this flag even necessary?
2. Should I remove the -fno-strict-aliasing flag? I didn't remove it, so the
   -Wstrict-aliasing warnings are ignored.
3. Should I add the -Wextra flag?

I agree that warnings are sometimes annoying, but I believe that catching a
real error at compile time can save a lot of time searching for it in the
code. However, I'd still like to hear people's opinions on this matter.

Now on to the patches.
I'm not sure about some of them, and they probably require more time to
study. For example, in pfinet/linux-src/include/linux/in_route.h there was
#define RTCF_NAT (RTCF_DNAT|RTCF_SNAT) (0x08000000|0x00800000), but
previously in tools-i686/include/net/route.h there was also #define RTCF_NAT
0x00800000. The same problem occurs with #define NET_MAX_FILTER 512 from
libbpf/bpf_impl.h and #define NET_MAX_FILTER 128 from
tools-i686/include/device/net_status.h.

I simply removed unused variables and moved unused functions to #if 0.

pfinet encountered a false-positive warning -Werror=array-bounds in the queue
handling functions. I couldn't find a simple solution, so I simply added
-Wno-array-bounds to the pfinet Makefile.

And a few places that were unclear to me:
The -Werror=maybe-uninitialized warning was in
pfinet/linux-src/net/ipv4/igmp.c because im->loaded = 0 was only set within
CONFIG_IP_MULTICAST, and the igmp_group_added function checked im->loaded
for 0 when it was called.
The -Werror=address warning was in pfinet/linux-src/net/ipv4/devinet.c
because ifa->ifa_label is an array, not a pointer, so the if (ifa->ifa_label)
condition is always true. I removed this check and left only
strcpy(ifr.ifr_name, ifa->ifa_label).
The Werror=shift-overflow warning was in the libps/ps.h file: #define
PSTAT_USER_BASE 0x20000000, and #define W_PSTAT_LOGIN (PSTAT_USER_BASE << 3),
so the result didn't fit into the int type. I added the ULL suffix to
0x20000000 and that solved the problem.

The fixing-structure-declaration-inside-parameter-list.patch patch applies to
the libtirpc-1.3.6/tirpc/rpc/rpc_msg.h file. It must be applied separately.

Thanks,

--
Mikhail Karpov
From d14a9ab2dbe63dac54f0a6588f0bca9b59145d56 Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 14:53:35 +0700
Subject: [PATCH] Fixing discarded qualifiers and pointer sign

---
 libdiskfs/diskfs.h                      |  2 +-
 libdiskfs/lookup.c                      |  4 ++--
 libstore/device.c                       |  2 +-
 libstore/nbd.c                          |  4 ++--
 pfinet/linux-src/net/core/iovec.c       |  3 ++-
 pfinet/linux-src/net/ethernet/eth.c     |  3 ++-
 pfinet/linux-src/net/ipv4/arp.c         |  8 ++++----
 pfinet/linux-src/net/ipv4/igmp.c        |  4 ++--
 pfinet/linux-src/net/ipv4/ip_output.c   |  4 ++--
 pfinet/linux-src/net/ipv4/ip_sockglue.c |  2 +-
 pfinet/linux-src/net/ipv4/raw.c         |  4 ++--
 pfinet/linux-src/net/ipv4/tcp.c         |  9 +++++----
 pfinet/linux-src/net/ipv4/tcp_ipv4.c    |  8 +++++---
 pfinet/linux-src/net/ipv4/tcp_output.c  |  7 ++++---
 pfinet/linux-src/net/ipv4/udp.c         | 20 ++++++++++++--------
 pfinet/linux-src/net/ipv6/icmpv6.c      |  8 ++++----
 pfinet/linux-src/net/ipv6/ip6_output.c  |  4 ++--
 pfinet/linux-src/net/ipv6/mcast.c       |  2 +-
 pfinet/linux-src/net/ipv6/ndisc.c       |  4 ++--
 pfinet/linux-src/net/ipv6/raw_ipv6.c    |  6 +++---
 pfinet/linux-src/net/ipv6/tcp_ipv6.c    | 11 ++++++-----
 pfinet/linux-src/net/ipv6/udp_ipv6.c    |  8 ++++----
 procfs/process.c                        |  2 +-
 23 files changed, 70 insertions(+), 59 deletions(-)

diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h
index d95e1b80..b8316d96 100644
--- a/libdiskfs/diskfs.h
+++ b/libdiskfs/diskfs.h
@@ -890,7 +890,7 @@ diskfs_disknode_node (struct disknode *disknode)
    This function is a wrapper for diskfs_lookup_hard.
 */
 error_t diskfs_lookup (struct node *dp,
-		       char *name, lookup_flags_t l_flags,
+		       const char *name, lookup_flags_t l_flags,
 		       struct node **np, struct dirstat *ds,
 		       struct protid *cred);
 
diff --git a/libdiskfs/lookup.c b/libdiskfs/lookup.c
index 87b54c01..06b03b69 100644
--- a/libdiskfs/lookup.c
+++ b/libdiskfs/lookup.c
@@ -71,7 +71,7 @@
 
    This function is a wrapper for diskfs_lookup_hard.  */
 error_t
-diskfs_lookup (struct node *dp, char *name, lookup_flags_t l_flags,
+diskfs_lookup (struct node *dp, const char *name, lookup_flags_t l_flags,
 	       struct node **np, struct dirstat *ds, struct protid *cred)
 {
   error_t err;
@@ -99,7 +99,7 @@ diskfs_lookup (struct node *dp, char *name, lookup_flags_t l_flags,
     }
   else
     {
-      char *p = strchr (name, '/');
+      char *p = (char *) strchr (name, '/');
       if (p != 0)
 	{
 	  *p = '\0';
diff --git a/libstore/device.c b/libstore/device.c
index 56f3d93d..15f346e4 100644
--- a/libstore/device.c
+++ b/libstore/device.c
@@ -128,7 +128,7 @@ dopen (const char *name, device_t *device, int *mod_flags)
   char *rest;
 
   /* Parse @master:/dev/hello */
-  if ( (name[0] == '@') && (pos = strchr (name, ':')) )
+  if ( (name[0] == '@') && (pos = (char *) strchr (name, ':')) )
     {
       master = strndup (name+1, pos-(name+1));
       rest = pos+1;
diff --git a/libstore/nbd.c b/libstore/nbd.c
index 556222e1..e2699e76 100644
--- a/libstore/nbd.c
+++ b/libstore/nbd.c
@@ -299,12 +299,12 @@ static error_t
 nbd_validate_name (const char *name,
 		   const struct store_class *const *classes)
 {
-  char *p, *endp;
+  char *endp;
 
   if (!strncmp (name, url_prefix, sizeof url_prefix - 1))
     name += sizeof url_prefix - 1;
 
-  p = strchr (name, ':');
+  const char *p = strchr (name, ':');
   if (p == 0)
     return EINVAL;
   endp = 0;
diff --git a/pfinet/linux-src/net/core/iovec.c b/pfinet/linux-src/net/core/iovec.c
index c20f8530..5c9660f9 100644
--- a/pfinet/linux-src/net/core/iovec.c
+++ b/pfinet/linux-src/net/core/iovec.c
@@ -259,7 +259,8 @@ int csum_partial_copy_fromiovecend(unsigned char *kdata, struct iovec *iov,
 		}
 
 		if (copy) {
-			csum = csum_and_copy_from_user(base, kdata, copy,
+			csum = csum_and_copy_from_user((const char *) base,
+							(char *) kdata, copy,
 							csum, &err);
 			if (err)
 				goto out;
diff --git a/pfinet/linux-src/net/ethernet/eth.c b/pfinet/linux-src/net/ethernet/eth.c
index 945f4a06..c33c25b8 100644
--- a/pfinet/linux-src/net/ethernet/eth.c
+++ b/pfinet/linux-src/net/ethernet/eth.c
@@ -291,7 +291,8 @@ void eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int length, int
 	if ((ip_length <= length) && (ip_length > 7))
 		length=ip_length;
 
-	dest->csum=csum_partial_copy(src+sizeof(struct iphdr)+ETH_HLEN,dest->data+sizeof(struct iphdr)+ETH_HLEN,length,base);
+	dest->csum=csum_partial_copy((const char *)src+sizeof(struct iphdr)+ETH_HLEN,
+				     (char *)dest->data+sizeof(struct iphdr)+ETH_HLEN,length,base);
 	dest->ip_summed=1;
 }
 
diff --git a/pfinet/linux-src/net/ipv4/arp.c b/pfinet/linux-src/net/ipv4/arp.c
index 53d155a9..5329ebb4 100644
--- a/pfinet/linux-src/net/ipv4/arp.c
+++ b/pfinet/linux-src/net/ipv4/arp.c
@@ -197,13 +197,13 @@ int arp_mc_map(u32 addr, u8 *haddr, struct device *dev, int dir)
 	switch (dev->type) {
 	case ARPHRD_ETHER:
 	case ARPHRD_FDDI:
-		ip_eth_mc_map(addr, haddr) ; 
+		ip_eth_mc_map(addr, (char *) haddr);
 		return 0 ; 
 	case ARPHRD_IEEE802:
 		if ( (dev->name[0] == 't') && (dev->name[1] == 'r')) /* Token Ring */
-			ip_tr_mc_map(addr,haddr) ; 
+			ip_tr_mc_map(addr, (char *) haddr);
 		else  
-			ip_eth_mc_map(addr, haddr);
+			ip_eth_mc_map(addr, (char *) haddr);
 		return 0;
 	default:
 		if (dir) {
@@ -825,7 +825,7 @@ int arp_req_set(struct arpreq *r, struct device * dev)
 		if (r->arp_flags & ATF_PERM)
 			state = NUD_PERMANENT;
 		err = neigh_update(neigh, (r->arp_flags&ATF_COM) ?
-				   r->arp_ha.sa_data : NULL, state, 1, 0);
+				   (unsigned char *) r->arp_ha.sa_data : NULL, state, 1, 0);
 		neigh_release(neigh);
 	}
 	end_bh_atomic();
diff --git a/pfinet/linux-src/net/ipv4/igmp.c b/pfinet/linux-src/net/ipv4/igmp.c
index 46269106..ad5c0a97 100644
--- a/pfinet/linux-src/net/ipv4/igmp.c
+++ b/pfinet/linux-src/net/ipv4/igmp.c
@@ -352,7 +352,7 @@ static void ip_mc_filter_add(struct in_device *in_dev, u32 addr)
 	   if (dev->mc_list && dev->flags&IFF_MULTICAST) { do it; }
 	   --ANK
 	 */
-	if (arp_mc_map(addr, buf, dev, 0) == 0)
+	if (arp_mc_map(addr, (unsigned char *) buf, dev, 0) == 0)
 		dev_mc_add(dev,buf,dev->addr_len,0);
 }
 
@@ -365,7 +365,7 @@ static void ip_mc_filter_del(struct in_device *in_dev, u32 addr)
 	char buf[MAX_ADDR_LEN];
 	struct device *dev = in_dev->dev;
 
-	if (arp_mc_map(addr, buf, dev, 0) == 0)
+	if (arp_mc_map(addr, (unsigned char *) buf, dev, 0) == 0)
 		dev_mc_delete(dev,buf,dev->addr_len,0);
 }
 
diff --git a/pfinet/linux-src/net/ipv4/ip_output.c b/pfinet/linux-src/net/ipv4/ip_output.c
index f43f4ffd..7556042a 100644
--- a/pfinet/linux-src/net/ipv4/ip_output.c
+++ b/pfinet/linux-src/net/ipv4/ip_output.c
@@ -488,7 +488,7 @@ int ip_build_xmit_slow(struct sock *sk,
 	 */
 	 
 	do {
-		char *data;
+		unsigned char *data;
 		struct sk_buff * skb;
 
 		/*
@@ -555,7 +555,7 @@ int ip_build_xmit_slow(struct sock *sk,
 		 *	User data callback
 		 */
 
-		if (getfrag(frag, data, offset, fraglen-fragheaderlen)) {
+		if (getfrag(frag, (char *) data, offset, fraglen-fragheaderlen)) {
 			err = -EFAULT;
 			kfree_skb(skb);
 			goto error;
diff --git a/pfinet/linux-src/net/ipv4/ip_sockglue.c b/pfinet/linux-src/net/ipv4/ip_sockglue.c
index 369a6770..bac90766 100644
--- a/pfinet/linux-src/net/ipv4/ip_sockglue.c
+++ b/pfinet/linux-src/net/ipv4/ip_sockglue.c
@@ -405,7 +405,7 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char *optval, int opt
 			struct ip_options * opt = NULL;
 			if (optlen > 40 || optlen < 0)
 				return -EINVAL;
-			err = ip_options_get(&opt, optval, optlen, 1);
+			err = ip_options_get(&opt, (unsigned char *) optval, optlen, 1);
 			if (err)
 				return err;
 			lock_sock(sk);
diff --git a/pfinet/linux-src/net/ipv4/raw.c b/pfinet/linux-src/net/ipv4/raw.c
index a0aaa82e..5460ff35 100644
--- a/pfinet/linux-src/net/ipv4/raw.c
+++ b/pfinet/linux-src/net/ipv4/raw.c
@@ -210,7 +210,7 @@ struct rawfakehdr
 static int raw_getfrag(const void *p, char *to, unsigned int offset, unsigned int fraglen)
 {
 	struct rawfakehdr *rfh = (struct rawfakehdr *) p;
-	return memcpy_fromiovecend(to, rfh->iov, offset, fraglen);
+	return memcpy_fromiovecend((unsigned char *) to, rfh->iov, offset, fraglen);
 }
 
 /*
@@ -221,7 +221,7 @@ static int raw_getrawfrag(const void *p, char *to, unsigned int offset, unsigned
 {
 	struct rawfakehdr *rfh = (struct rawfakehdr *) p;
 
-	if (memcpy_fromiovecend(to, rfh->iov, offset, fraglen))
+	if (memcpy_fromiovecend((unsigned char *) to, rfh->iov, offset, fraglen))
 		return -EFAULT;
 
 	if (offset==0) {
diff --git a/pfinet/linux-src/net/ipv4/tcp.c b/pfinet/linux-src/net/ipv4/tcp.c
index 13e57954..5a04c2d2 100644
--- a/pfinet/linux-src/net/ipv4/tcp.c
+++ b/pfinet/linux-src/net/ipv4/tcp.c
@@ -863,7 +863,8 @@ int tcp_do_sendmsg(struct sock *sk, struct msghdr *msg)
 					} else {
 						skb->csum =
 							csum_and_copy_from_user(
-							from, skb_put(skb, copy),
+							(const char *) from,
+							(char *) skb_put(skb, copy),
 							copy, skb->csum, &err);
 					}
 
@@ -976,8 +977,8 @@ int tcp_do_sendmsg(struct sock *sk, struct msghdr *msg)
 			 * Reserve header space and checksum the data.
 			 */
 			skb_reserve(skb, MAX_HEADER + sk->prot->max_header);
-			skb->csum = csum_and_copy_from_user(from,
-					skb_put(skb, copy), copy, 0, &err);
+			skb->csum = csum_and_copy_from_user((const char *) from,
+					(char *) skb_put(skb, copy), copy, 0, &err);
 
 			if (err)
 				goto do_fault;
@@ -1069,7 +1070,7 @@ static int tcp_recv_urg(struct sock * sk, int nonblock,
 	lock_sock(sk);
 	if (tp->urg_data & URG_VALID) {
 		int err = 0;
-		char c = tp->urg_data;
+		unsigned char c = tp->urg_data;
 
 		if (!(flags & MSG_PEEK))
 			tp->urg_data = URG_READ;
diff --git a/pfinet/linux-src/net/ipv4/tcp_ipv4.c b/pfinet/linux-src/net/ipv4/tcp_ipv4.c
index ac55547a..82966b30 100644
--- a/pfinet/linux-src/net/ipv4/tcp_ipv4.c
+++ b/pfinet/linux-src/net/ipv4/tcp_ipv4.c
@@ -965,7 +965,8 @@ void tcp_v4_send_check(struct sock *sk, struct tcphdr *th, int len,
 {
 	th->check = 0;
 	th->check = tcp_v4_check(th, len, sk->saddr, sk->daddr,
-				 csum_partial((char *)th, th->doff<<2, skb->csum));
+				 csum_partial((const unsigned char *) th,
+					      th->doff<<2, skb->csum));
 }
 
 /*
@@ -1177,7 +1178,8 @@ static void tcp_v4_send_synack(struct sock *sk, struct open_request *req)
 
 		th->check = tcp_v4_check(th, skb->len,
 					 req->af.v4_req.loc_addr, req->af.v4_req.rmt_addr,
-					 csum_partial((char *)th, skb->len, skb->csum));
+					 csum_partial((const unsigned char *) th, skb->len,
+						      skb->csum));
 
 		ip_build_and_send_pkt(skb, sk, req->af.v4_req.loc_addr,
 				      req->af.v4_req.rmt_addr, req->af.v4_req.opt);
@@ -1723,7 +1725,7 @@ int tcp_v4_rcv(struct sk_buff *skb, unsigned short len)
 	/* Try to use the device checksum if provided. */
 	switch (skb->ip_summed) {
 	case CHECKSUM_NONE:
-		skb->csum = csum_partial((char *)th, len, 0);
+		skb->csum = csum_partial((const unsigned char *) th, len, 0);
 	case CHECKSUM_HW:
 		if (tcp_v4_check(th,len,skb->nh.iph->saddr,skb->nh.iph->daddr,skb->csum)) {
 			NETDEBUG(printk(KERN_DEBUG "TCPv4 bad checksum "
diff --git a/pfinet/linux-src/net/ipv4/tcp_output.c b/pfinet/linux-src/net/ipv4/tcp_output.c
index a15b7b30..cdb4204a 100644
--- a/pfinet/linux-src/net/ipv4/tcp_output.c
+++ b/pfinet/linux-src/net/ipv4/tcp_output.c
@@ -230,7 +230,8 @@ static int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len)
 	TCP_SKB_CB(buff)->sacked = 0;
 
 	/* Copy and checksum data tail into the new buffer. */
-	buff->csum = csum_partial_copy(skb->data + len, skb_put(buff, nsize),
+	buff->csum = csum_partial_copy((const char *) skb->data + len,
+				       (char *) skb_put(buff, nsize),
 				       nsize, 0);
 
 	/* This takes care of the FIN sequence number too. */
@@ -495,8 +496,8 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
 			/* Optimize, actually we could also combine next_skb->csum
 			 * to skb->csum using a single add w/carry operation too.
 			 */
-			skb->csum = csum_partial_copy(next_skb->data,
-						      skb_put(skb, next_skb_size),
+			skb->csum = csum_partial_copy((const char *) next_skb->data,
+						      (char *) skb_put(skb, next_skb_size),
 						      next_skb_size, skb->csum);
 		}
 	
diff --git a/pfinet/linux-src/net/ipv4/udp.c b/pfinet/linux-src/net/ipv4/udp.c
index 52bae18e..6c77412b 100644
--- a/pfinet/linux-src/net/ipv4/udp.c
+++ b/pfinet/linux-src/net/ipv4/udp.c
@@ -506,10 +506,12 @@ static int udp_getfrag(const void *p, char * to, unsigned int offset, unsigned i
 {
 	struct udpfakehdr *ufh = (struct udpfakehdr *)p;
 	if (offset==0) {
-		if (csum_partial_copy_fromiovecend(to+sizeof(struct udphdr), ufh->iov, offset,
-						   fraglen-sizeof(struct udphdr), &ufh->wcheck))
+		if (csum_partial_copy_fromiovecend((unsigned char *) to+sizeof(struct udphdr),
+						   ufh->iov, offset,
+						   fraglen-sizeof(struct udphdr),
+						   (int *) &ufh->wcheck))
 			return -EFAULT;
- 		ufh->wcheck = csum_partial((char *)ufh, sizeof(struct udphdr),
+		ufh->wcheck = csum_partial((const unsigned char *) ufh, sizeof(struct udphdr),
 					   ufh->wcheck);
 		ufh->uh.check = csum_tcpudp_magic(ufh->saddr, ufh->daddr,
 					  ntohs(ufh->uh.len),
@@ -519,8 +521,9 @@ static int udp_getfrag(const void *p, char * to, unsigned int offset, unsigned i
 		memcpy(to, ufh, sizeof(struct udphdr));
 		return 0;
 	}
-	if (csum_partial_copy_fromiovecend(to, ufh->iov, offset-sizeof(struct udphdr),
-					   fraglen, &ufh->wcheck))
+	if (csum_partial_copy_fromiovecend((unsigned char *) to, ufh->iov,
+					   offset-sizeof(struct udphdr),
+					   fraglen, (int *) &ufh->wcheck))
 		return -EFAULT;
 	return 0;
 }
@@ -538,10 +541,11 @@ static int udp_getfrag_nosum(const void *p, char * to, unsigned int offset, unsi
 
 	if (offset==0) {
 		memcpy(to, ufh, sizeof(struct udphdr));
-		return memcpy_fromiovecend(to+sizeof(struct udphdr), ufh->iov, offset,
+		return memcpy_fromiovecend((unsigned char *) to+sizeof(struct udphdr),
+					   ufh->iov, offset,
 					   fraglen-sizeof(struct udphdr));
 	}
-	return memcpy_fromiovecend(to, ufh->iov, offset-sizeof(struct udphdr),
+	return memcpy_fromiovecend((unsigned char *) to, ufh->iov, offset-sizeof(struct udphdr),
 				   fraglen);
 }
 
@@ -1102,7 +1106,7 @@ int udp_rcv(struct sk_buff *skb, unsigned short len)
 	if (uh->check &&
 	    (((skb->ip_summed==CHECKSUM_HW)&&udp_check(uh,ulen,saddr,daddr,skb->csum)) ||
 	     ((skb->ip_summed==CHECKSUM_NONE) &&
-	      (udp_check(uh,ulen,saddr,daddr, csum_partial((char*)uh, ulen, 0))))))
+	      (udp_check(uh,ulen,saddr,daddr, csum_partial((const unsigned char*) uh, ulen, 0))))))
 		goto csum_error;
 #else
 	if (uh->check==0)
diff --git a/pfinet/linux-src/net/ipv6/icmpv6.c b/pfinet/linux-src/net/ipv6/icmpv6.c
index 9d701764..38d93faa 100644
--- a/pfinet/linux-src/net/ipv6/icmpv6.c
+++ b/pfinet/linux-src/net/ipv6/icmpv6.c
@@ -364,7 +364,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
 	unsigned char *data;
 	int len;
 
-	data = (char *) (icmph + 1);
+	data = (unsigned char *) (icmph + 1);
 
 	saddr = &hdr->daddr;
 
@@ -474,7 +474,7 @@ int icmpv6_rcv(struct sk_buff *skb, unsigned long len)
 	/* Perform checksum. */
 	switch (skb->ip_summed) {	
 	case CHECKSUM_NONE:
-		skb->csum = csum_partial((char *)hdr, len, 0);
+		skb->csum = csum_partial((const unsigned char *) hdr, len, 0);
 	case CHECKSUM_HW:
 		if (csum_ipv6_magic(saddr, daddr, len, IPPROTO_ICMPV6, 
 				    skb->csum)) {
@@ -543,7 +543,7 @@ int icmpv6_rcv(struct sk_buff *skb, unsigned long len)
 	case ICMPV6_TIME_EXCEED:
 	case ICMPV6_PARAMPROB:
 		icmpv6_notify(skb, type, hdr->icmp6_code, hdr->icmp6_mtu,
-			      (char *) (hdr + 1), ulen);
+			      (unsigned char *) (hdr + 1), ulen);
 		break;
 
 	case NDISC_ROUTER_SOLICITATION:
@@ -579,7 +579,7 @@ int icmpv6_rcv(struct sk_buff *skb, unsigned long len)
 		 */
 
 		icmpv6_notify(skb, type, hdr->icmp6_code, hdr->icmp6_mtu,
-			      (char *) (hdr + 1), ulen);
+			      (unsigned char *) (hdr + 1), ulen);
 	};
 	kfree_skb(skb);
 	return 0;
diff --git a/pfinet/linux-src/net/ipv6/ip6_output.c b/pfinet/linux-src/net/ipv6/ip6_output.c
index e06ad59a..7b2b57e2 100644
--- a/pfinet/linux-src/net/ipv6/ip6_output.c
+++ b/pfinet/linux-src/net/ipv6/ip6_output.c
@@ -344,7 +344,7 @@ static int ip6_frag_xmit(struct sock *sk, inet_getfrag_t getfrag,
 	prev_hdr = ipv6_build_fraghdr(last_skb, prev_hdr, frag_off);
 	fhdr_dist = prev_hdr - last_skb->data;
 
-	err = getfrag(data, &hdr->saddr, last_skb->tail, data_off, last_len);
+	err = getfrag(data, &hdr->saddr, (char *) last_skb->tail, data_off, last_len);
 
 	if (!err) {
 		while (nfrags--) {
@@ -375,7 +375,7 @@ static int ip6_frag_xmit(struct sock *sk, inet_getfrag_t getfrag,
 				data_off = 0;
 			}
 
-			err = getfrag(data, &hdr->saddr,skb_put(skb, frag_len),
+			err = getfrag(data, &hdr->saddr, (char *) skb_put(skb, frag_len),
 				      data_off, frag_len);
 
 			if (err) {
diff --git a/pfinet/linux-src/net/ipv6/mcast.c b/pfinet/linux-src/net/ipv6/mcast.c
index 87e9e909..cd448d31 100644
--- a/pfinet/linux-src/net/ipv6/mcast.c
+++ b/pfinet/linux-src/net/ipv6/mcast.c
@@ -456,7 +456,7 @@ void igmp6_send(struct in6_addr *addr, struct device *dev, int type)
 	skb_reserve(skb, (dev->hard_header_len + 15) & ~15);
 	if (dev->hard_header) {
 		unsigned char ha[MAX_ADDR_LEN];
-		ndisc_mc_map(snd_addr, ha, dev, 1);
+		ndisc_mc_map(snd_addr, (char *) ha, dev, 1);
 		dev->hard_header(skb, dev, ETH_P_IPV6, ha, NULL, full_len);
 	}
 
diff --git a/pfinet/linux-src/net/ipv6/ndisc.c b/pfinet/linux-src/net/ipv6/ndisc.c
index 61f950d2..f04781d4 100644
--- a/pfinet/linux-src/net/ipv6/ndisc.c
+++ b/pfinet/linux-src/net/ipv6/ndisc.c
@@ -192,7 +192,7 @@ static int ndisc_constructor(struct neighbour *neigh)
 	} else {
 		if (addr_type&IPV6_ADDR_MULTICAST) {
 			neigh->nud_state = NUD_NOARP;
-			ndisc_mc_map(addr, neigh->ha, dev, 1);
+			ndisc_mc_map(addr, (char *) neigh->ha, dev, 1);
 		} else if (dev->flags&(IFF_NOARP|IFF_LOOPBACK)) {
 			neigh->nud_state = NUD_NOARP;
 			memcpy(neigh->ha, dev->dev_addr, dev->addr_len);
@@ -265,7 +265,7 @@ ndisc_build_ll_hdr(struct sk_buff *skb, struct device *dev,
 
 	if (dev->hard_header) {
 		if (ipv6_addr_type(daddr) & IPV6_ADDR_MULTICAST) {
-			ndisc_mc_map(daddr, ha, dev, 1);
+			ndisc_mc_map(daddr, (char *) ha, dev, 1);
 			h_dest = ha;
 		} else if (neigh) {
 			h_dest = neigh->ha;
diff --git a/pfinet/linux-src/net/ipv6/raw_ipv6.c b/pfinet/linux-src/net/ipv6/raw_ipv6.c
index 64bc247c..e9a64170 100644
--- a/pfinet/linux-src/net/ipv6/raw_ipv6.c
+++ b/pfinet/linux-src/net/ipv6/raw_ipv6.c
@@ -308,7 +308,7 @@ static int rawv6_getfrag(const void *data, struct in6_addr *saddr,
 {
 	struct iovec *iov = (struct iovec *) data;
 
-	return memcpy_fromiovecend(buff, iov, offset, len);
+	return memcpy_fromiovecend((unsigned char *) buff, iov, offset, len);
 }
 
 static int rawv6_frag_cksum(const void *data, struct in6_addr *addr,
@@ -317,8 +317,8 @@ static int rawv6_frag_cksum(const void *data, struct in6_addr *addr,
 {
 	struct rawv6_fakehdr *hdr = (struct rawv6_fakehdr *) data;
 	
-	if (csum_partial_copy_fromiovecend(buff, hdr->iov, offset, 
-						    len, &hdr->cksum))
+	if (csum_partial_copy_fromiovecend((unsigned char *) buff, hdr->iov, offset,
+						    len, (int *) &hdr->cksum))
 		return -EFAULT;
 	
 	if (offset == 0) {
diff --git a/pfinet/linux-src/net/ipv6/tcp_ipv6.c b/pfinet/linux-src/net/ipv6/tcp_ipv6.c
index cca5abf4..26404b00 100644
--- a/pfinet/linux-src/net/ipv6/tcp_ipv6.c
+++ b/pfinet/linux-src/net/ipv6/tcp_ipv6.c
@@ -816,7 +816,8 @@ static void tcp_v6_send_synack(struct sock *sk, struct open_request *req)
 
 		th->check = tcp_v6_check(th, skb->len,
 					 &req->af.v6_req.loc_addr, &req->af.v6_req.rmt_addr,
-					 csum_partial((char *)th, skb->len, skb->csum));
+					 csum_partial((const unsigned char *) th, skb->len,
+						      skb->csum));
 
 		fl.nl_u.ip6_u.daddr = &req->af.v6_req.rmt_addr;
 		ip6_xmit(sk, skb, &fl, opt);
@@ -960,7 +961,7 @@ static void tcp_v6_send_check(struct sock *sk, struct tcphdr *th, int len,
 	th->check = 0;
 	
 	th->check = csum_ipv6_magic(&np->saddr, &np->daddr, len, IPPROTO_TCP, 
-				    csum_partial((char *)th, th->doff<<2, 
+				    csum_partial((const unsigned char *) th, th->doff<<2,
 						 skb->csum));
 }
 
@@ -1150,7 +1151,7 @@ static void tcp_v6_send_reset(struct sk_buff *skb)
 			t1->ack_seq = htonl(ntohl(th->seq)+1);
 	}
 
-	buff->csum = csum_partial((char *)t1, sizeof(*t1), 0);
+	buff->csum = csum_partial((const unsigned char *) t1, sizeof(*t1), 0);
 
 	fl.nl_u.ip6_u.daddr = &skb->nh.ipv6h->saddr;
 	fl.nl_u.ip6_u.saddr = &skb->nh.ipv6h->daddr;
@@ -1204,7 +1205,7 @@ static void tcp_v6_send_ack(struct sk_buff *skb, __u32 seq, __u32 ack, __u16 win
 
 	t1->window = htons(window);
 
-	buff->csum = csum_partial((char *)t1, sizeof(*t1), 0);
+	buff->csum = csum_partial((const unsigned char *) t1, sizeof(*t1), 0);
 
 	fl.nl_u.ip6_u.daddr = &skb->nh.ipv6h->saddr;
 	fl.nl_u.ip6_u.saddr = &skb->nh.ipv6h->daddr;
@@ -1472,7 +1473,7 @@ int tcp_v6_rcv(struct sk_buff *skb, unsigned long len)
 
 	switch (skb->ip_summed) {
 	case CHECKSUM_NONE:
-		skb->csum = csum_partial((char *)th, len, 0);
+		skb->csum = csum_partial((const unsigned char *) th, len, 0);
 	case CHECKSUM_HW:
 		if (tcp_v6_check(th,len,saddr,daddr,skb->csum)) {
 			printk(KERN_DEBUG "tcp csum failed\n");
diff --git a/pfinet/linux-src/net/ipv6/udp_ipv6.c b/pfinet/linux-src/net/ipv6/udp_ipv6.c
index 6d4bbdb9..909999c5 100644
--- a/pfinet/linux-src/net/ipv6/udp_ipv6.c
+++ b/pfinet/linux-src/net/ipv6/udp_ipv6.c
@@ -691,7 +691,7 @@ int udpv6_rcv(struct sk_buff *skb, unsigned long len)
 #ifndef CONFIG_UDP_DELAY_CSUM
 	switch (skb->ip_summed) {
 	case CHECKSUM_NONE:
-		skb->csum = csum_partial((char*)uh, ulen, 0);
+		skb->csum = csum_partial((const unsigned char*) uh, ulen, 0);
 	case CHECKSUM_HW:
 		if (csum_ipv6_magic(saddr, daddr, ulen, IPPROTO_UDP, skb->csum)) {
 			printk(KERN_DEBUG "IPv6: udp checksum error\n");
@@ -787,14 +787,14 @@ static int udpv6_getfrag(const void *data, struct in6_addr *addr,
 		clen -= sizeof(struct udphdr);
 	}
 
-	if (csum_partial_copy_fromiovecend(dst, udh->iov, offset,
-					   clen, &udh->wcheck))
+	if (csum_partial_copy_fromiovecend((unsigned char *) dst, udh->iov, offset,
+					   clen, (int *) &udh->wcheck))
 		return -EFAULT;
 
 	if (final) {
 		struct in6_addr *daddr;
 		
-		udh->wcheck = csum_partial((char *)udh, sizeof(struct udphdr),
+		udh->wcheck = csum_partial((const unsigned char *) udh, sizeof(struct udphdr),
 					   udh->wcheck);
 
 		if (udh->daddr) {
diff --git a/procfs/process.c b/procfs/process.c
index 3170b775..59d1aaec 100644
--- a/procfs/process.c
+++ b/procfs/process.c
@@ -83,7 +83,7 @@ static long long int timeval_jiffies (time_value_t tv)
 
 static const char *args_filename (const char *name)
 {
-  char *sp = strrchr (name, '/');
+  const char *sp = strrchr (name, '/');
   return sp != NULL && *(sp + 1) != '\0' ? sp + 1 : name;
 }
 
-- 
2.43.0

From 47e6642c5223b88c05d24d5eb8b34c9aa6fa2f92 Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 12:38:25 +0700
Subject: [PATCH 2/2] Using #pragma message instead of #warning

---
 libstore/part.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstore/part.c b/libstore/part.c
index e0937c66..b3ea2ead 100644
--- a/libstore/part.c
+++ b/libstore/part.c
@@ -29,7 +29,7 @@
 
 /* XXX Until the Hurd specific header is available, provide the
    declaration of ped_device_new_from_store here.  */
-#warning "Using local declaration of ped_device_new_from_store."
+#pragma message "Using local declaration of ped_device_new_from_store."
 
 /* Initialize a PedDevice using SOURCE.  The SOURCE will NOT be destroyed;
    the caller created it, it is the caller's responsilbility to free it
-- 
2.43.0

From 251f2a8b5505727f720adfb27b0b7912f72efecc Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 13:01:15 +0700
Subject: [PATCH 3/3] Fixing -Werror

---
 boot/userland-boot.c                      | 2 +-
 fatfs/main.c                              | 2 +-
 libbpf/bpf_impl.h                         | 2 --
 pfinet/glue-include/asm/uaccess.h         | 1 -
 pfinet/linux-src/include/linux/in_route.h | 4 ----
 pfinet/linux-src/include/net/flow.h       | 2 ++
 6 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/boot/userland-boot.c b/boot/userland-boot.c
index 1739eb91..2c92f6bd 100644
--- a/boot/userland-boot.c
+++ b/boot/userland-boot.c
@@ -212,7 +212,7 @@ load_image (task_t t,
 
 	    buf = (vm_address_t) mmap (0, bufsz,
 				       PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
-	    assert_backtrace (buf != MAP_FAILED);
+	    assert_backtrace ((void *) buf != MAP_FAILED);
 
 	    lseek (fd, ph->p_offset, SEEK_SET);
 	    err = read (fd, (void *)(buf + offs), ph->p_filesz);
diff --git a/fatfs/main.c b/fatfs/main.c
index 8f44ed8b..ab5db03e 100644
--- a/fatfs/main.c
+++ b/fatfs/main.c
@@ -235,7 +235,7 @@ main (int argc, char **argv)
 
   zerocluster = (vm_address_t) mmap (0, bytes_per_cluster, PROT_READ|PROT_WRITE,
 				     MAP_ANON, 0, 0);
-  assert_backtrace (zerocluster != MAP_FAILED);
+  assert_backtrace ((void *) zerocluster != MAP_FAILED);
 
   fetch_root ();
 
diff --git a/libbpf/bpf_impl.h b/libbpf/bpf_impl.h
index fb0fb490..d80e0058 100644
--- a/libbpf/bpf_impl.h
+++ b/libbpf/bpf_impl.h
@@ -51,8 +51,6 @@ typedef struct
 typedef	unsigned short	filter_t;
 typedef filter_t	*filter_array_t;
 
-#define	NET_MAX_FILTER		512 /* bpf programs are big */
-
 #define NET_HASH_SIZE   256
 #define N_NET_HASH      4
 #define N_NET_HASH_KEYS 4
diff --git a/pfinet/glue-include/asm/uaccess.h b/pfinet/glue-include/asm/uaccess.h
index 752c61c0..7f47632b 100644
--- a/pfinet/glue-include/asm/uaccess.h
+++ b/pfinet/glue-include/asm/uaccess.h
@@ -41,7 +41,6 @@ struct __large_struct { unsigned long buf[100]; };
 #define get_user_ret(x,ptr,ret) ({ if (get_user(x,ptr)) return ret; })
 
 
-#define copy_to_user(to,from,n)		(memcpy ((to), (from), (n)), 0)
 #define copy_from_user(to,from,n)	(memcpy ((to), (from), (n)), 0)
 #define	clear_user(mem, len)		(memset ((mem), 0, (len)), 0)
 
diff --git a/pfinet/linux-src/include/linux/in_route.h b/pfinet/linux-src/include/linux/in_route.h
index 61f25c30..407dbecc 100644
--- a/pfinet/linux-src/include/linux/in_route.h
+++ b/pfinet/linux-src/include/linux/in_route.h
@@ -25,8 +25,4 @@
 #define RTCF_REJECT	0x40000000
 #define RTCF_LOCAL	0x80000000
 
-#define RTCF_NAT	(RTCF_DNAT|RTCF_SNAT)
-
-#define RT_TOS(tos)	((tos)&IPTOS_TOS_MASK)
-
 #endif /* _LINUX_IN_ROUTE_H */
diff --git a/pfinet/linux-src/include/net/flow.h b/pfinet/linux-src/include/net/flow.h
index e1ce1b2a..2cb6cd91 100644
--- a/pfinet/linux-src/include/net/flow.h
+++ b/pfinet/linux-src/include/net/flow.h
@@ -91,6 +91,8 @@ struct flow_rule {
 	unsigned char			private[0];
 };
 
+struct rt6_info;
+
 struct flow_rule_ops {
 	int			(*accept)(struct rt6_info *rt,
 					  struct rt6_info *rule,
-- 
2.43.0

From 9f6c94f90f985163806842f41179c766ace15f2f Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 13:43:15 +0700
Subject: [PATCH 4/4] Fixing-Werror=shift-overflow

---
 libps/ps.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libps/ps.h b/libps/ps.h
index 3e59c66a..ad0aab77 100644
--- a/libps/ps.h
+++ b/libps/ps.h
@@ -356,7 +356,7 @@ struct proc_stat
 #define PSTAT_NO_MSGPORT     0x1000000 /* Don't use the msgport at all */
 
 /* Bits from PSTAT_USER_BASE on up are available for user-use.  */
-#define PSTAT_USER_BASE      0x20000000
+#define PSTAT_USER_BASE      0x20000000ULL
 #define PSTAT_USER_MASK      ~(PSTAT_USER_BASE - 1)
 
 /* If the PSTAT_STATE flag is set, then the proc_stats state field holds a
-- 
2.43.0

From 20f39b6b8000bc9d1b4f8929cc3e057ee18599a6 Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 14:00:38 +0700
Subject: [PATCH 5/5] Suppressing -Werror=array-bounds warning for pfinet

---
 pfinet/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pfinet/Makefile b/pfinet/Makefile
index 22c3a171..e15aa59d 100644
--- a/pfinet/Makefile
+++ b/pfinet/Makefile
@@ -131,7 +131,7 @@ CPPFLAGS += -imacros $(srcdir)/config.h		\
 
 # Don't ask...  We use Linux code.  The problem was first noticed when
 # compiling `pfinet' with GCC 4.2.
-CFLAGS += -fno-strict-aliasing
+CFLAGS += -fno-strict-aliasing -Wno-array-bounds
 
 asm/checksum.h: ../config.status
 	mkdir -p $(@D)
-- 
2.43.0

From a9256b233d8a4961559a6a490fda9e4dfa08dc27 Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 14:45:14 +0700
Subject: [PATCH 2/2] Removing unused variables and functions

---
 console-client/ncursesw.c              | 11 +++++++++--
 pfinet/glue-include/linux/socket.h     |  2 +-
 pfinet/linux-src/net/core/dev.c        |  2 ++
 pfinet/linux-src/net/ipv4/arp.c        |  7 +++++--
 pfinet/linux-src/net/ipv4/fib_hash.c   |  1 -
 pfinet/linux-src/net/ipv4/ip_output.c  |  5 ++---
 pfinet/linux-src/net/ipv6/addrconf.c   |  2 ++
 pfinet/linux-src/net/ipv6/ip6_output.c |  3 ---
 pfinet/linux-src/net/ipv6/ndisc.c      |  3 ---
 pfinet/linux-src/net/ipv6/tcp_ipv6.c   |  1 -
 pfinet/linux-src/net/ipv6/udp_ipv6.c   |  1 -
 pfinet/pfinet-ops.c                    |  1 -
 trans/new-fifo.c                       |  5 +++++
 13 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/console-client/ncursesw.c b/console-client/ncursesw.c
index 116f86cc..c556aba6 100644
--- a/console-client/ncursesw.c
+++ b/console-client/ncursesw.c
@@ -453,7 +453,9 @@ mvwputsn (conchar_t *str, size_t len, off_t x, off_t y)
   wmove (conspad, y, x);
   while (len)
     {
+#if 0
       int ret;
+#endif
       chtype ac;
 
       if (last_attr != *(uint32_t *) &str->attr)
@@ -468,23 +470,28 @@ mvwputsn (conchar_t *str, size_t len, off_t x, off_t y)
       else
 	{      
 	  wch[0] = str->chr;
-	  ret = setcchar (&chr, wch, attr, color_pair, NULL);
 #if 0
+	  ret = setcchar (&chr, wch, attr, color_pair, NULL);
 	  if (ret == ERR)
 	    {
 	      printf ("setcchar failed: %s\n", strerror (errno));
 	      printf ("[%lc]\n", wch[0]);
 	      assert_backtrace (!"Do something if setcchar fails.");
 	    }
+#else
+	  setcchar (&chr, wch, attr, color_pair, NULL);
 #endif
-	  ret = wadd_wch (conspad, &chr);
+
 #if 0
+	  ret = wadd_wch (conspad, &chr);
 	  if (ret == ERR)
 	    {
 	      printf ("add_wch failed: %i, %s\n", ret, strerror (errno));
 	      printf ("[%lc]\n", wch[0]);
 	      assert_backtrace (!"Do something if add_wchr fails.");
 	    }
+#else
+	  wadd_wch (conspad, &chr);
 #endif
 	}
       len--;
diff --git a/pfinet/glue-include/linux/socket.h b/pfinet/glue-include/linux/socket.h
index 58fc2c7a..202d6ccc 100644
--- a/pfinet/glue-include/linux/socket.h
+++ b/pfinet/glue-include/linux/socket.h
@@ -79,7 +79,7 @@ put_cmsg(struct msghdr *msg, int level, int type, int len, void *data)
 #define CMSG_ALIGN(size)	(0)
 #define CMSG_LEN(size) 		(0)
 #else
-#define copy_to_user(to,from,n)		(memcpy ((to), (from), (n)), 0)
+#define copy_to_user(to,from,n)		({memcpy ((to), (from), (n)); 0;})
 static inline int
 put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
 {
diff --git a/pfinet/linux-src/net/core/dev.c b/pfinet/linux-src/net/core/dev.c
index b47c5027..2b5ff4e2 100644
--- a/pfinet/linux-src/net/core/dev.c
+++ b/pfinet/linux-src/net/core/dev.c
@@ -1062,6 +1062,7 @@ int register_gifconf(unsigned int family, gifconf_func_t * gifconf)
  *	Map an interface index to its name (SIOCGIFNAME)
  */
 
+#if 0
 /*
  *	This call is useful, but I'd remove it too.
  *
@@ -1100,6 +1101,7 @@ static int dev_ifname(struct ifreq *arg)
 	err = copy_to_user(arg, &ifr, sizeof(struct ifreq));
 	return (err)?-EFAULT:0;
 }
+#endif
 
 /*
  *	Perform a SIOCGIFCONF call. This structure will change
diff --git a/pfinet/linux-src/net/ipv4/arp.c b/pfinet/linux-src/net/ipv4/arp.c
index 5329ebb4..c09debdf 100644
--- a/pfinet/linux-src/net/ipv4/arp.c
+++ b/pfinet/linux-src/net/ipv4/arp.c
@@ -545,7 +545,7 @@ int arp_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
 	struct arphdr *arp = skb->nh.arph;
 	unsigned char *arp_ptr= (unsigned char *)(arp+1);
 	struct rtable *rt;
-	unsigned char *sha, *tha;
+	unsigned char *sha;
 	u32 sip, tip;
 	u16 dev_type = dev->type;
 	int addr_type;
@@ -632,7 +632,6 @@ int arp_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
 	arp_ptr += dev->addr_len;
 	memcpy(&sip, arp_ptr, 4);
 	arp_ptr += 4;
-	tha=arp_ptr;
 	arp_ptr += dev->addr_len;
 	memcpy(&tip, arp_ptr, 4);
 /*
@@ -832,6 +831,7 @@ int arp_req_set(struct arpreq *r, struct device * dev)
 	return err;
 }
 
+#if 0
 static unsigned arp_state_to_flags(struct neighbour *neigh)
 {
 	unsigned flags = 0;
@@ -841,11 +841,13 @@ static unsigned arp_state_to_flags(struct neighbour *neigh)
 		flags = ATF_COM;
 	return flags;
 }
+#endif
 
 /*
  *	Get an ARP cache entry.
  */
 
+#if 0
 static int arp_req_get(struct arpreq *r, struct device *dev)
 {
 	u32 ip = ((struct sockaddr_in *) &r->arp_pa)->sin_addr.s_addr;
@@ -865,6 +867,7 @@ static int arp_req_get(struct arpreq *r, struct device *dev)
 	end_bh_atomic();
 	return err;
 }
+#endif
 
 int arp_req_delete(struct arpreq *r, struct device * dev)
 {
diff --git a/pfinet/linux-src/net/ipv4/fib_hash.c b/pfinet/linux-src/net/ipv4/fib_hash.c
index 495f1682..4016e70a 100644
--- a/pfinet/linux-src/net/ipv4/fib_hash.c
+++ b/pfinet/linux-src/net/ipv4/fib_hash.c
@@ -887,7 +887,6 @@ __initfunc(struct fib_table * fib_hash_init(int id))
 static void
 fib_node_get_route(int type, int dead, struct fib_info *fi, u32 prefix, u32 mask, ifrtreq_t *r)
 {
-	int len;
 	static unsigned type2flags[RTN_MAX+1] = {
 		[RTN_UNREACHABLE] = RTF_REJECT,
 		[RTN_PROHIBIT] = RTF_REJECT
diff --git a/pfinet/linux-src/net/ipv4/ip_output.c b/pfinet/linux-src/net/ipv4/ip_output.c
index 7556042a..0723d5b5 100644
--- a/pfinet/linux-src/net/ipv4/ip_output.c
+++ b/pfinet/linux-src/net/ipv4/ip_output.c
@@ -101,7 +101,6 @@ void ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk,
 {
 	struct rtable *rt = (struct rtable *)skb->dst;
 	struct iphdr *iph;
-	struct device *dev;
 	
 	/* Build the IP header. */
 	if (opt)
@@ -128,10 +127,10 @@ void ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk,
 		ip_options_build(skb, opt, daddr, rt, 0);
 	}
 
-	dev = rt->u.dst.dev;
-
 #ifdef CONFIG_FIREWALL
 	/* Now we have no better mechanism to notify about error. */
+	struct device *dev = rt->u.dst.dev;
+
 	switch (call_out_firewall(PF_INET, dev, iph, NULL, &skb)) {
 	case FW_REJECT:
 		icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
diff --git a/pfinet/linux-src/net/ipv6/addrconf.c b/pfinet/linux-src/net/ipv6/addrconf.c
index d392b3fd..61a333cb 100644
--- a/pfinet/linux-src/net/ipv6/addrconf.c
+++ b/pfinet/linux-src/net/ipv6/addrconf.c
@@ -264,6 +264,7 @@ struct inet6_dev * ipv6_find_idev(struct device *dev)
 	return idev;
 }
 
+#if 0
 static void addrconf_forward_change(struct inet6_dev *idev)
 {
 	int i;
@@ -276,6 +277,7 @@ static void addrconf_forward_change(struct inet6_dev *idev)
 			idev->cnf.forwarding = ipv6_devconf.forwarding;
 	}
 }
+#endif
 
 struct inet6_dev * ipv6_get_idev(struct device *dev)
 {
diff --git a/pfinet/linux-src/net/ipv6/ip6_output.c b/pfinet/linux-src/net/ipv6/ip6_output.c
index 7b2b57e2..b2e78113 100644
--- a/pfinet/linux-src/net/ipv6/ip6_output.c
+++ b/pfinet/linux-src/net/ipv6/ip6_output.c
@@ -181,13 +181,10 @@ int ip6_nd_hdr(struct sock *sk, struct sk_buff *skb, struct device *dev,
 {
 	struct ipv6_pinfo *np = &sk->net_pinfo.af_inet6;
 	struct ipv6hdr *hdr;
-	int totlen;
 
 	skb->protocol = __constant_htons(ETH_P_IPV6);
 	skb->dev = dev;
 
-	totlen = len + sizeof(struct ipv6hdr);
-
 	hdr = (struct ipv6hdr *) skb_put(skb, sizeof(struct ipv6hdr));
 	skb->nh.ipv6h = hdr;
 
diff --git a/pfinet/linux-src/net/ipv6/ndisc.c b/pfinet/linux-src/net/ipv6/ndisc.c
index f04781d4..d9fa47c1 100644
--- a/pfinet/linux-src/net/ipv6/ndisc.c
+++ b/pfinet/linux-src/net/ipv6/ndisc.c
@@ -782,7 +782,6 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
 	u8 *opt;
 	int rd_len;
 	int err;
-	int hlen;
 
 	dev = skb->dev;
 	rt = rt6_lookup(&skb->nh.ipv6h->saddr, NULL, dev->ifindex, 1);
@@ -831,8 +830,6 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
 		return;
 	}
 
-	hlen = 0;
-
 	if (ndisc_build_ll_hdr(buff, dev, &skb->nh.ipv6h->saddr, NULL, len) == 0) {
 		kfree_skb(buff);
 		return;
diff --git a/pfinet/linux-src/net/ipv6/tcp_ipv6.c b/pfinet/linux-src/net/ipv6/tcp_ipv6.c
index 26404b00..df832098 100644
--- a/pfinet/linux-src/net/ipv6/tcp_ipv6.c
+++ b/pfinet/linux-src/net/ipv6/tcp_ipv6.c
@@ -169,7 +169,6 @@ static int tcp_v6_get_port(struct sock *sk, unsigned short snum)
 		} else {
 			struct sock *sk2 = tb->owners;
 			int sk_reuse = sk->reuse;
-			int addr_type = ipv6_addr_type(&sk->net_pinfo.af_inet6.rcv_saddr);
 
 			for( ; sk2 != NULL; sk2 = sk2->bind_next) {
 				if (sk->bound_dev_if == sk2->bound_dev_if) {
diff --git a/pfinet/linux-src/net/ipv6/udp_ipv6.c b/pfinet/linux-src/net/ipv6/udp_ipv6.c
index 909999c5..f59c0014 100644
--- a/pfinet/linux-src/net/ipv6/udp_ipv6.c
+++ b/pfinet/linux-src/net/ipv6/udp_ipv6.c
@@ -134,7 +134,6 @@ gotit:
 		snum = result;
 	} else {
 		struct sock *sk2;
-		int addr_type = ipv6_addr_type(&sk->net_pinfo.af_inet6.rcv_saddr);
 
 		for (sk2 = udp_hash[snum & (UDP_HTABLE_SIZE - 1)];
 		     sk2 != NULL;
diff --git a/pfinet/pfinet-ops.c b/pfinet/pfinet-ops.c
index 9b0c723f..3b645a0d 100644
--- a/pfinet/pfinet-ops.c
+++ b/pfinet/pfinet-ops.c
@@ -133,7 +133,6 @@ S_pfinet_getroutes (io_t port,
 		    mach_msg_type_number_t *len,
 		    boolean_t *dealloc_data)
 {
-  error_t err = 0;
   ifrtreq_t rs[MAX_ROUTES];
   int n;
   ifrtreq_t *rtable = NULL;
diff --git a/trans/new-fifo.c b/trans/new-fifo.c
index 7880eb24..3c1657b7 100644
--- a/trans/new-fifo.c
+++ b/trans/new-fifo.c
@@ -129,11 +129,13 @@ fifo_trans_create (struct fifo_trans *from, struct fifo_trans **trans)
   *trans = new;
 }
 
+#if 0
 static void
 fifo_trans_free (struct fifo_trans *trans)
 {
   free (trans);
 }
+#endif
 
 static error_t
 fifo_trans_start (struct fifo_trans *trans, mach_port_t requestor)
@@ -182,6 +184,8 @@ main (int argc, char **argv)
   error_t err;
   mach_port_t bootstrap;
   struct fifo_trans *trans;
+
+#if 0
   /* Clean up a fsys control node.  */
   void clean_fsys (void *vfsys)
     {
@@ -190,6 +194,7 @@ main (int argc, char **argv)
 	fifo_trans_free (fsys->hook);
       trivfs_clean_cntl (fsys);
     }
+#endif
 
   fifo_trans_create (0, &trans);
 
-- 
2.43.0

From 143cc8f387f4e2aa7813541d008372896a27aaf9 Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Tue, 28 Jul 2026 14:32:58 +0700
Subject: [PATCH 7/7] Fixing -Werror=address and -Werror=maybe-uninitialized

---
 pfinet/linux-src/net/ipv4/devinet.c | 5 +----
 pfinet/linux-src/net/ipv4/igmp.c    | 2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/pfinet/linux-src/net/ipv4/devinet.c b/pfinet/linux-src/net/ipv4/devinet.c
index a566743a..828a8828 100644
--- a/pfinet/linux-src/net/ipv4/devinet.c
+++ b/pfinet/linux-src/net/ipv4/devinet.c
@@ -705,10 +705,7 @@ inet_gifconf(struct device *dev, char *buf, int len)
 		if (len < (int) sizeof(ifr))
 			return done;
 		memset(&ifr, 0, sizeof(struct ifreq));
-		if (ifa->ifa_label)
-			strcpy(ifr.ifr_name, ifa->ifa_label);
-		else
-			strcpy(ifr.ifr_name, dev->name);
+		strcpy(ifr.ifr_name, ifa->ifa_label);
 
 #ifdef _HURD_
 		(*(struct sockaddr_in *) &ifr.ifr_addr).sin_len = sizeof (struct sockaddr_in);
diff --git a/pfinet/linux-src/net/ipv4/igmp.c b/pfinet/linux-src/net/ipv4/igmp.c
index ad5c0a97..7bf45034 100644
--- a/pfinet/linux-src/net/ipv4/igmp.c
+++ b/pfinet/linux-src/net/ipv4/igmp.c
@@ -442,8 +442,8 @@ void ip_mc_inc_group(struct in_device *in_dev, u32 addr)
 	im->timer.function=&igmp_timer_expire;
 	im->unsolicit_count = IGMP_Unsolicited_Report_Count;
 	im->reporter = 0;
-	im->loaded = 0;
 #endif
+	im->loaded = 0;
 	im->next=in_dev->mc_list;
 	in_dev->mc_list=im;
 	igmp_group_added(im);
-- 
2.43.0

--- rpc_msg.h	2026-07-28 13:12:44.249567980 +0700
+++ rpc_msg_new.h	2026-07-28 13:13:37.564304500 +0700
@@ -165,6 +165,11 @@
 extern "C" {
 #endif
 /*
+ * The rcp error
+ */
+struct rpc_err;
+
+/*
  * XDR routine to handle a rpc message.
  * xdr_callmsg(xdrs, cmsg)
  * 	XDR *xdrs;

Reply via email to