All of lore.kernel.org
 help / color / mirror / Atom feed
* Doubt about CRTSCTS preprocessor macro definition in termbits.h file
@ 2010-11-09  7:27 Ramya Desai
  2010-11-09 16:56 ` (No subject header) Milton Miller
  0 siblings, 1 reply; 18+ messages in thread
From: Ramya Desai @ 2010-11-09  7:27 UTC (permalink / raw)
  To: linux-kernel

Dear All,

I did not understand the CRTSCTS preprocessor macro which is defined
in termbits.h file.

http://lxr.linux.no/linux+v2.6.36/include/asm-generic/termbits.h

As per the typedefs defined in the beginning of the file, the c_cflag
is unsigned int member in the struct termios structure. The CRTSCTS is
defined in the file as a 48 bit value.

#define CRTSCTS   020000000000  /* flow control */

I saw the following snippet in one of the serial applications.

struct termios newtio;
newtio.c_cflag = B9600 | CRTSCTS | CS8 | CLOCAL | CREAD;

My question is, the c_cflag is a 32 bit value member and the CRTSCTS
is a 48 bit value. How CRTSCTS is accommodates into c_cflag variable?
Please let me know, if my interpretation is wrong.

Thanks in advance.

Regards,
Ramya.

^ permalink raw reply	[flat|nested] 18+ messages in thread
* (No subject header)
@ 2014-08-26 20:52 gina
  0 siblings, 0 replies; 18+ messages in thread
From: gina @ 2014-08-26 20:52 UTC (permalink / raw)




You have just won £1,000,000GBP.Please Contact your Claims
Personnel with your email only to. nellydave1@gmail.com .for
info
......................................................................
NOTE : If You Recieve This Message In Your
Junk Or Spam Its Due To Your Internet
Provider.

^ permalink raw reply	[flat|nested] 18+ messages in thread
* [PATCH 3/4] exec: unify compat_do_execve() code
@ 2010-11-30 20:01 Oleg Nesterov
  2010-12-01 17:37   ` Milton Miller
  0 siblings, 1 reply; 18+ messages in thread
From: Oleg Nesterov @ 2010-11-30 20:01 UTC (permalink / raw)
  To: KOSAKI Motohiro, Andrew Morton, Linus Torvalds
  Cc: LKML, linux-mm, pageexec, Solar Designer, Eugene Teo,
	Brad Spengler, Roland McGrath

Teach get_arg_ptr() to handle compat = T case correctly.

This allows us to remove the compat_do_execve() code from fs/compat.c
and reimplement compat_do_execve() as the trivial wrapper on top of
do_execve_common(compat => true).

In fact, this fixes another (minor) bug. "compat_uptr_t str" can
overflow after "str += len" in compat_copy_strings() if a 64bit
application execs via sys32_execve().

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
---

 fs/exec.c   |   25 ++++++
 fs/compat.c |  235 ------------------------------------------------------------
 2 files changed, 25 insertions(+), 235 deletions(-)

--- K/fs/exec.c~3_use_compat	2010-11-30 19:47:24.000000000 +0100
+++ K/fs/exec.c	2010-11-30 20:15:11.000000000 +0100
@@ -55,6 +55,7 @@
 #include <linux/fs_struct.h>
 #include <linux/pipe_fs_i.h>
 #include <linux/oom.h>
+#include <linux/compat.h>
 
 #include <asm/uaccess.h>
 #include <asm/mmu_context.h>
@@ -395,6 +396,18 @@ get_arg_ptr(const char __user * const __
 {
 	const char __user *ptr;
 
+#ifdef CONFIG_COMPAT
+	if (unlikely(compat)) {
+		compat_uptr_t __user *a = (void __user*)argv;
+		compat_uptr_t p;
+
+		if (get_user(p, a + argc))
+			return ERR_PTR(-EFAULT);
+
+		return compat_ptr(p);
+	}
+#endif
+
 	if (get_user(ptr, argv + argc))
 		return ERR_PTR(-EFAULT);
 
@@ -1501,6 +1514,18 @@ int do_execve(const char *filename,
 	return do_execve_common(filename, argv, envp, regs, false);
 }
 
+#ifdef CONFIG_COMPAT
+int compat_do_execve(char * filename,
+	compat_uptr_t __user *argv,
+	compat_uptr_t __user *envp,
+	struct pt_regs * regs)
+{
+	return do_execve_common(filename,
+				(void __user*)argv, (void __user*)envp,
+				regs, true);
+}
+#endif
+
 void set_binfmt(struct linux_binfmt *new)
 {
 	struct mm_struct *mm = current->mm;
--- K/fs/compat.c~3_use_compat	2010-11-30 18:30:45.000000000 +0100
+++ K/fs/compat.c	2010-11-30 20:17:28.000000000 +0100
@@ -1330,241 +1330,6 @@ compat_sys_openat(unsigned int dfd, cons
 	return do_sys_open(dfd, filename, flags, mode);
 }
 
-/*
- * compat_count() counts the number of arguments/envelopes. It is basically
- * a copy of count() from fs/exec.c, except that it works with 32 bit argv
- * and envp pointers.
- */
-static int compat_count(compat_uptr_t __user *argv, int max)
-{
-	int i = 0;
-
-	if (argv != NULL) {
-		for (;;) {
-			compat_uptr_t p;
-
-			if (get_user(p, argv))
-				return -EFAULT;
-			if (!p)
-				break;
-			argv++;
-			if (i++ >= max)
-				return -E2BIG;
-
-			if (fatal_signal_pending(current))
-				return -ERESTARTNOHAND;
-			cond_resched();
-		}
-	}
-	return i;
-}
-
-/*
- * compat_copy_strings() is basically a copy of copy_strings() from fs/exec.c
- * except that it works with 32 bit argv and envp pointers.
- */
-static int compat_copy_strings(int argc, compat_uptr_t __user *argv,
-				struct linux_binprm *bprm)
-{
-	struct page *kmapped_page = NULL;
-	char *kaddr = NULL;
-	unsigned long kpos = 0;
-	int ret;
-
-	while (argc-- > 0) {
-		compat_uptr_t str;
-		int len;
-		unsigned long pos;
-
-		if (get_user(str, argv+argc) ||
-		    !(len = strnlen_user(compat_ptr(str), MAX_ARG_STRLEN))) {
-			ret = -EFAULT;
-			goto out;
-		}
-
-		if (len > MAX_ARG_STRLEN) {
-			ret = -E2BIG;
-			goto out;
-		}
-
-		/* We're going to work our way backwords. */
-		pos = bprm->p;
-		str += len;
-		bprm->p -= len;
-
-		while (len > 0) {
-			int offset, bytes_to_copy;
-
-			if (fatal_signal_pending(current)) {
-				ret = -ERESTARTNOHAND;
-				goto out;
-			}
-			cond_resched();
-
-			offset = pos % PAGE_SIZE;
-			if (offset == 0)
-				offset = PAGE_SIZE;
-
-			bytes_to_copy = offset;
-			if (bytes_to_copy > len)
-				bytes_to_copy = len;
-
-			offset -= bytes_to_copy;
-			pos -= bytes_to_copy;
-			str -= bytes_to_copy;
-			len -= bytes_to_copy;
-
-			if (!kmapped_page || kpos != (pos & PAGE_MASK)) {
-				struct page *page;
-
-				page = get_arg_page(bprm, pos, 1);
-				if (!page) {
-					ret = -E2BIG;
-					goto out;
-				}
-
-				if (kmapped_page) {
-					flush_kernel_dcache_page(kmapped_page);
-					kunmap(kmapped_page);
-					put_page(kmapped_page);
-				}
-				kmapped_page = page;
-				kaddr = kmap(kmapped_page);
-				kpos = pos & PAGE_MASK;
-				flush_cache_page(bprm->vma, kpos,
-						 page_to_pfn(kmapped_page));
-			}
-			if (copy_from_user(kaddr+offset, compat_ptr(str),
-						bytes_to_copy)) {
-				ret = -EFAULT;
-				goto out;
-			}
-		}
-	}
-	ret = 0;
-out:
-	if (kmapped_page) {
-		flush_kernel_dcache_page(kmapped_page);
-		kunmap(kmapped_page);
-		put_page(kmapped_page);
-	}
-	return ret;
-}
-
-/*
- * compat_do_execve() is mostly a copy of do_execve(), with the exception
- * that it processes 32 bit argv and envp pointers.
- */
-int compat_do_execve(char * filename,
-	compat_uptr_t __user *argv,
-	compat_uptr_t __user *envp,
-	struct pt_regs * regs)
-{
-	struct linux_binprm *bprm;
-	struct file *file;
-	struct files_struct *displaced;
-	bool clear_in_exec;
-	int retval;
-
-	retval = unshare_files(&displaced);
-	if (retval)
-		goto out_ret;
-
-	retval = -ENOMEM;
-	bprm = kzalloc(sizeof(*bprm), GFP_KERNEL);
-	if (!bprm)
-		goto out_files;
-
-	retval = prepare_bprm_creds(bprm);
-	if (retval)
-		goto out_free;
-
-	retval = check_unsafe_exec(bprm);
-	if (retval < 0)
-		goto out_free;
-	clear_in_exec = retval;
-	current->in_execve = 1;
-
-	file = open_exec(filename);
-	retval = PTR_ERR(file);
-	if (IS_ERR(file))
-		goto out_unmark;
-
-	sched_exec();
-
-	bprm->file = file;
-	bprm->filename = filename;
-	bprm->interp = filename;
-
-	retval = bprm_mm_init(bprm);
-	if (retval)
-		goto out_file;
-
-	bprm->argc = compat_count(argv, MAX_ARG_STRINGS);
-	if ((retval = bprm->argc) < 0)
-		goto out;
-
-	bprm->envc = compat_count(envp, MAX_ARG_STRINGS);
-	if ((retval = bprm->envc) < 0)
-		goto out;
-
-	retval = prepare_binprm(bprm);
-	if (retval < 0)
-		goto out;
-
-	retval = copy_strings_kernel(1, &bprm->filename, bprm);
-	if (retval < 0)
-		goto out;
-
-	bprm->exec = bprm->p;
-	retval = compat_copy_strings(bprm->envc, envp, bprm);
-	if (retval < 0)
-		goto out;
-
-	retval = compat_copy_strings(bprm->argc, argv, bprm);
-	if (retval < 0)
-		goto out;
-
-	retval = search_binary_handler(bprm, regs);
-	if (retval < 0)
-		goto out;
-
-	/* execve succeeded */
-	current->fs->in_exec = 0;
-	current->in_execve = 0;
-	acct_update_integrals(current);
-	free_bprm(bprm);
-	if (displaced)
-		put_files_struct(displaced);
-	return retval;
-
-out:
-	if (bprm->mm) {
-		acct_arg_size(bprm, 0);
-		mmput(bprm->mm);
-	}
-
-out_file:
-	if (bprm->file) {
-		allow_write_access(bprm->file);
-		fput(bprm->file);
-	}
-
-out_unmark:
-	if (clear_in_exec)
-		current->fs->in_exec = 0;
-	current->in_execve = 0;
-
-out_free:
-	free_bprm(bprm);
-
-out_files:
-	if (displaced)
-		reset_files_struct(displaced);
-out_ret:
-	return retval;
-}
-
 #define __COMPAT_NFDBITS       (8 * sizeof(compat_ulong_t))
 
 static int poll_select_copy_remaining(struct timespec *end_time, void __user *p,


^ permalink raw reply	[flat|nested] 18+ messages in thread
* idle-test patches queued for upstream
@ 2010-05-27  2:42 Len Brown
  2010-05-27  2:42 ` [PATCH 1/8] cpuidle: fail to register if !CONFIG_CPU_IDLE Len Brown
  0 siblings, 1 reply; 18+ messages in thread
From: Len Brown @ 2010-05-27  2:42 UTC (permalink / raw)
  To: x86, linux-pm; +Cc: linux-kernel

Please look over and test this patch set.
(If you test linux-next, you already have it)

There are a few simple patches, leading up to a new intel_idle driver.

Note that you can get the patch series as a single patch here:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/idle/patches/2.6.34/idle-test-2.6.34.diff.gz

or pull from this git branch
git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6.git idle-test

Both are vs 2.6.34.

Why is it good to have a native intel_idle driver?

Basically, we think we can do better than ACPI.
Indeed, on my (production level commerically available) Nehalem desktop
the ACPI tables are broken and an ACPI OS idles at 100W.  With this
driver the box idles at 85W.

Thanks,
-Len


^ permalink raw reply	[flat|nested] 18+ messages in thread
* Re: (No subject header)
@ 2004-11-29 23:10 John Black
  0 siblings, 0 replies; 18+ messages in thread
From: John Black @ 2004-11-29 23:10 UTC (permalink / raw)
  To: netfilter




> You also need forward statment
> 
> iptables -A FORWARD -d 110.20.30.15 -p tcp --dport 2289 -j
> ACCEPT
would my server need to be in that forwarding statement?
iptables -A FORWARD -d 80.1.1.1 -p tcp --dport 3389 -j
ACCEPT

because i want to allow only this address 80.1.1.1 access to
this port.

> also in case it matters to you, you misspelled iptables
> below.
it was just a typeo



^ permalink raw reply	[flat|nested] 18+ messages in thread
* (No subject header)
@ 2004-11-29 23:00 John Black
  2004-11-30  7:09 ` Brent Clark
  0 siblings, 1 reply; 18+ messages in thread
From: John Black @ 2004-11-29 23:00 UTC (permalink / raw)
  To: netfilter


 
I'm trying to setup a connection to port 3389 on a windows
2003 server.

my server 80.1.1.1

public ip address for windows server110.20.30.15

private ip address for windows server 192.168.0.15


is this right:
iptbles -t nat -A PREROUTING -d 80.1.1.1 -p tcp \
--dport 3389   -j DNAT --to 110.20.30.15:2289
iptbles -t nat -A PREROUTING -d 110.20.30.15 -p tcp\
--dport 3389   -j DNAT --to 192.168.0.15:2289

 



^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: (No subject header)
@ 2004-07-30  3:33 Jason Opperisano
  2004-07-30  4:00 ` John Black
  0 siblings, 1 reply; 18+ messages in thread
From: Jason Opperisano @ 2004-07-30  3:33 UTC (permalink / raw)
  To: John Black, netfilter

> iptables -t nat -A PREROUTING -d X.X.X.X -p tcp --dport 22 -j DNAT \
> -- to 192.168.1.89:2222 (ares)
>
> iptables -t nat -A PREROUTING -d X.X.X.X -p tcp --dport 22 -j DNAT \
> -- to 192.168.1.90:22222 (zeus)

If X.X.X.X in that first rule == X.X.X.X in that second rule--the second rule will never be matched.

You're giving netfilter 3 pieces of information to use to decide whether you have a match:

Protocol = TCP
Dest IP = X.X.X.X
Dest Port = 22

Given those conditions, how will it skip the first rule and make it to the second?

I would reverse your theory.  Let the hosts on the inside listen on the standard SSH port (TCP 22), and use different ports on the external side:

iptables -t nat -A PREROUTING -d X.X.X.X -p tcp --dport 2222 -j DNAT \
 --to 192.168.1.89:22 (ares)

iptables -t nat -A PREROUTING -d X.X.X.X -p tcp --dport 2223 -j DNAT \
 --to 192.168.1.90:22 (zeus)

And then use:	ssh -p 2222 X.X.X.X to connect to ares
And:			ssh -p 2223 X.X.X.X to connect to zeus

-j


^ permalink raw reply	[flat|nested] 18+ messages in thread
* (No subject header)
@ 2004-07-28 16:01 John Black
  2004-07-28 21:52 ` Antony Stone
  0 siblings, 1 reply; 18+ messages in thread
From: John Black @ 2004-07-28 16:01 UTC (permalink / raw)
  To: netfilter

I have a NAT question for everyone.  
 
At work i have a single static IP address that all of the
computers in the LAN uses for the outside world.  My
firewall is also acting as a dns server.  
 
Question 1: When i try to ssh in to a computer from the
outside world it follows the first rule.  But when i change
ssh to listen to a certain address and port it still
defaults to the first rule?
 
Question 2: if the DNS server was running on a server behind
the firewall would this help sloves this problem?
 
 
thanks
john


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

end of thread, other threads:[~2014-08-26 21:57 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-09  7:27 Doubt about CRTSCTS preprocessor macro definition in termbits.h file Ramya Desai
2010-11-09 16:56 ` (No subject header) Milton Miller
  -- strict thread matches above, loose matches on Subject: below --
2014-08-26 20:52 gina
2010-11-30 20:01 [PATCH 3/4] exec: unify compat_do_execve() code Oleg Nesterov
2010-12-01 17:37 ` (No subject header) Milton Miller
2010-12-01 17:37   ` Milton Miller
2010-12-01 18:27   ` Oleg Nesterov
2010-12-01 18:27     ` Oleg Nesterov
2010-05-27  2:42 idle-test patches queued for upstream Len Brown
2010-05-27  2:42 ` [PATCH 1/8] cpuidle: fail to register if !CONFIG_CPU_IDLE Len Brown
2010-05-27  2:42   ` [PATCH 5/8] sched: clarify commment for TS_POLLING Len Brown
2010-05-27  5:25     ` (No subject header) Milton Miller
2010-05-27  5:25       ` Milton Miller
2010-05-27  5:47       ` Len Brown
2004-11-29 23:10 John Black
2004-11-29 23:00 John Black
2004-11-30  7:09 ` Brent Clark
2004-07-30  3:33 Jason Opperisano
2004-07-30  4:00 ` John Black
2004-07-28 16:01 John Black
2004-07-28 21:52 ` Antony Stone
2004-07-30  3:09   ` John Black

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.