netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.10-rc3-mm1 FIONREAD breakge
@ 2004-12-17 21:07 Stephen Hemminger
  2004-12-17 21:26 ` Andrew Morton
  0 siblings, 1 reply; 2+ messages in thread
From: Stephen Hemminger @ 2004-12-17 21:07 UTC (permalink / raw)
  To: Andrew Morton, cliff white, netdev

Latest -mm kernel broke FIONREAD on UDP sockets. This stopped STP in it's tracks
because then names don't resolve.

The following works on 2.6.10-rc3 but breaks on 2.6.10-rc3-mm1
=====================================
/* Did FIONREAD break on UDP? */
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char **argv)
{
	int s;
	static struct sockaddr_in sin = { AF_INET };
	int len;

	s = socket(AF_INET, SOCK_DGRAM, 0);
	if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) 
		perror("bind");

	len = sizeof(sin);
	getsockname(s, (struct sockaddr *) &sin, &len);
	printf("Bound to %s.%d\n", 
	       inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
	for(;;) {
		unsigned long count;
		fflush(stdout);
		if (ioctl(s, FIONREAD, &count) < 0)
			perror("ioctl(FIONREAD)");

		printf("nread = %ld\n", count);
		sleep(5);
	}
}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: 2.6.10-rc3-mm1 FIONREAD breakge
  2004-12-17 21:07 2.6.10-rc3-mm1 FIONREAD breakge Stephen Hemminger
@ 2004-12-17 21:26 ` Andrew Morton
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2004-12-17 21:26 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: akpm, cliffw, netdev

Stephen Hemminger <shemminger@osdl.org> wrote:
>
>  Latest -mm kernel broke FIONREAD on UDP sockets.

yup, you'll need this:

--- 25/fs/ioctl.c~ioctl-cleanups-broke-fionread-et-al	2004-12-13 11:12:37.687951760 -0800
+++ 25-akpm/fs/ioctl.c	2004-12-13 11:12:37.690951304 -0800
@@ -91,10 +91,8 @@ asmlinkage long sys_ioctl(unsigned int f
 			int block;
 			int res;
 
-			if (!S_ISREG(inode->i_mode)) {
-				error = -ENOTTY;
-				goto done;
-			}
+			if (!S_ISREG(inode->i_mode))
+				break;
 			/* do we support this mess? */
 			if (!mapping->a_ops->bmap) {
 				error = -EINVAL;
@@ -112,19 +110,15 @@ asmlinkage long sys_ioctl(unsigned int f
 			goto done;
 		}
 	case FIGETBSZ:
-		if (!S_ISREG(inode->i_mode)) {
-			error = -ENOTTY;
-			goto done;
-		}
+		if (!S_ISREG(inode->i_mode))
+			break;
 		error = -EBADF;
 		if (inode->i_sb)
 			error = put_user(inode->i_sb->s_blocksize, p);
 		goto done;
 	case FIONREAD:
-		if (!S_ISREG(inode->i_mode)) {
-			error = -ENOTTY;
-			goto done;
-		}
+		if (!S_ISREG(inode->i_mode))
+			break;
 		error = put_user(i_size_read(inode) - filp->f_pos, p);
 		goto done;
 	}
_

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-12-17 21:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-17 21:07 2.6.10-rc3-mm1 FIONREAD breakge Stephen Hemminger
2004-12-17 21:26 ` Andrew Morton

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).