Skip to contentSkip to conversation

tty: audit: Fix audit source

PATCH Superseded Peter Hurley 3 participants 5 messages Nov 8, 2015 – Nov 10, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 tty: audit: Fix audit source

The data to audit/record is in the 'from' buffer (ie., the input read buffer).

Fixes 72586c6061ab ("n_tty: Fix auditing support for cannonical mode")
Cc Laura Abbott <[email protected]>
Cc Miloslav Trmač <[email protected]>
---
 drivers/tty/n_tty.c     | 2 +-
 drivers/tty/tty_audit.c | 2 +-
 include/linux/tty.h     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
drivers/tty/n_tty.c +1 -1
index 1384426..ed77614 100644
@@ -169,7 +169,7 @@ static inline int tty_copy_to_user(struct tty_struct *tty,
 {
 	struct n_tty_data *ldata = tty->disc_data;
 
-	tty_audit_add_data(tty, to, n, ldata->icanon);
+	tty_audit_add_data(tty, from, n, ldata->icanon);
 	return copy_to_user(to, from, n);
 }
 
drivers/tty/tty_audit.c +1 -1
index 90ca082..3d245cd 100644
@@ -265,7 +265,7 @@ static struct tty_audit_buf *tty_audit_buf_get(struct tty_struct *tty,
  *
  *	Audit @data of @size from @tty, if necessary.
  */
-void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
+void tty_audit_add_data(struct tty_struct *tty, const void *data,
 			size_t size, unsigned icanon)
 {
 	struct tty_audit_buf *buf;
include/linux/tty.h +1 -1
index 5b04b0a..1e02fd4 100644
@@ -607,7 +607,7 @@ extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops);
 
 /* tty_audit.c */
 #ifdef CONFIG_AUDIT
-extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
+extern void tty_audit_add_data(struct tty_struct *tty, const void *data,
 			       size_t size, unsigned icanon);
 extern void tty_audit_exit(void);
 extern void tty_audit_fork(struct signal_struct *sig);
Signature · 1 line
2.6.3
#1 lore raw
reproduce:

Hi Peter,

[auto build test WARNING on: v4.3-rc7]
[also build test WARNING on: next-20151106]

url:    https://github.com/0day-ci/linux/commits/Peter-Hurley/tty-audit-Fix-audit-source/20151108-205330
config: x86_64-randconfig-x019-201545 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

drivers/tty/n_tty.c: In function 'tty_copy_to_user':

>> drivers/tty/n_tty.c:172:26: warning: passing argument 2 of 'tty_audit_add_data' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     tty_audit_add_data(tty, from, n, ldata->icanon);
                             ^

In file included from drivers/tty/n_tty.c:40:0:
include/linux/tty.h:616:20: note: expected 'unsigned char *' but argument is of type 'const void *'
static inline void tty_audit_add_data(struct tty_struct *tty,
^

vim +172 drivers/tty/n_tty.c

156 static inline int tty_put_user(struct tty_struct *tty, unsigned char x,
157 unsigned char __user *ptr)
158 {
159 struct n_tty_data *ldata = tty->disc_data;
160
161 tty_audit_add_data(tty, &x, 1, ldata->icanon);
162 return put_user(x, ptr);
163 }
164
165 static inline int tty_copy_to_user(struct tty_struct *tty,
166 void __user *to,
167 const void *from,
168 unsigned long n)
169 {
170 struct n_tty_data *ldata = tty->disc_data;
171

 > 172		tty_audit_add_data(tty, from, n, ldata->icanon);

173 return copy_to_user(to, from, n);
174 }
175
176 /**
177 * n_tty_kick_worker - start input worker (if required)
178 * @tty: terminal
179 *
180 * Re-schedules the flip buffer work if it may have stopped

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#2 lore raw
Quoted 13 lines · kbuild test robot

Hi Peter,

[auto build test WARNING on: v4.3-rc7]
[also build test WARNING on: next-20151106]

url:    https://github.com/0day-ci/linux/commits/Peter-Hurley/tty-audit-Fix-audit-source/20151108-205330
config: x86_64-randconfig-x019-201545 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

Quoted 7 lines

drivers/tty/n_tty.c: In function 'tty_copy_to_user':

Quoted 1 line
Quoted 1 line

drivers/tty/n_tty.c:172:26: warning: passing argument 2 of 'tty_audit_add_data' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]

     tty_audit_add_data(tty, from, n, ldata->icanon);
                             ^

In file included from drivers/tty/n_tty.c:40:0:
include/linux/tty.h:616:20: note: expected 'unsigned char *' but argument is of type 'const void *'
static inline void tty_audit_add_data(struct tty_struct *tty,

Thanks for the build report. I caused this during a manual rebase squash. Re-testing v2 now :/

Regards,
Peter Hurley

#3 lore raw

PATCH v2 1/1 tty: audit: Fix audit source

In reply to Peter Hurley

The data to audit/record is in the 'from' buffer (ie., the input read buffer).

Fixes 72586c6061ab ("n_tty: Fix auditing support for cannonical mode")
Cc Laura Abbott <[email protected]>
Cc Miloslav Trmač <[email protected]>

---

v2: Fix rebase error, !CONFIG_AUDIT build fix

 drivers/tty/n_tty.c     | 2 +-
 drivers/tty/tty_audit.c | 2 +-
 include/linux/tty.h     | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)
drivers/tty/n_tty.c +1 -1
index 1384426..ed77614 100644
@@ -169,7 +169,7 @@ static inline int tty_copy_to_user(struct tty_struct *tty,
 {
 	struct n_tty_data *ldata = tty->disc_data;
 
-	tty_audit_add_data(tty, to, n, ldata->icanon);
+	tty_audit_add_data(tty, from, n, ldata->icanon);
 	return copy_to_user(to, from, n);
 }
 
drivers/tty/tty_audit.c +1 -1
index 90ca082..3d245cd 100644
@@ -265,7 +265,7 @@ static struct tty_audit_buf *tty_audit_buf_get(struct tty_struct *tty,
  *
  *	Audit @data of @size from @tty, if necessary.
  */
-void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
+void tty_audit_add_data(struct tty_struct *tty, const void *data,
 			size_t size, unsigned icanon)
 {
 	struct tty_audit_buf *buf;
include/linux/tty.h +3 -3
index 5b04b0a..5e31f1b 100644
@@ -607,7 +607,7 @@ extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops);
 
 /* tty_audit.c */
 #ifdef CONFIG_AUDIT
-extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
+extern void tty_audit_add_data(struct tty_struct *tty, const void *data,
 			       size_t size, unsigned icanon);
 extern void tty_audit_exit(void);
 extern void tty_audit_fork(struct signal_struct *sig);
@@ -615,8 +615,8 @@ extern void tty_audit_tiocsti(struct tty_struct *tty, char ch);
 extern void tty_audit_push(struct tty_struct *tty);
 extern int tty_audit_push_current(void);
 #else
-static inline void tty_audit_add_data(struct tty_struct *tty,
-		unsigned char *data, size_t size, unsigned icanon)
+static inline void tty_audit_add_data(struct tty_struct *tty, const void *data,
+				      size_t size, unsigned icanon)
 {
 }
 static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch)
Signature · 1 line
2.6.3