2019-06-12 17:57:50

by Gen Zhang

[permalink] [raw]
Subject: [PATCH v4] vt: fix a missing-check bug in con_init()

In function con_init(), the pointer variable vc_cons[currcons].d, vc and
vc->vc_screenbuf is allocated by kzalloc(). However, kzalloc() returns
NULL when fails. Therefore, we should check the return value and handle
the error.

Signed-off-by: Gen Zhang <[email protected]>
---
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 5c0ca1c..dc40e29 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -3357,10 +3357,14 @@ static int __init con_init(void)

for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) {
vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT);
+ if (!vc)
+ goto vc_err;
INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK);
tty_port_init(&vc->port);
visual_init(vc, currcons, 1);
vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT);
+ if (!vc->vc_screenbuf)
+ goto vc_screenbuf_err;
vc_init(vc, vc->vc_rows, vc->vc_cols,
currcons || !vc->vc_sw->con_save_screen);
}
@@ -3382,6 +3386,16 @@ static int __init con_init(void)
register_console(&vt_console_driver);
#endif
return 0;
+vc_err:
+ while (currcons > 0) {
+ currcons--;
+ kfree(vc_cons[currcons].d->vc_screenbuf);
+vc_screenbuf_err:
+ kfree(vc_cons[currcons].d);
+ vc_cons[currcons].d = NULL;
+ }
+ console_unlock();
+ return -ENOMEM;
}
console_initcall(con_init);


2019-06-12 17:59:11

by Gen Zhang

[permalink] [raw]
Subject: Re: [PATCH v4] vt: fix a missing-check bug in con_init()

On Wed, Jun 12, 2019 at 03:38:38PM +0200, Greg KH wrote:
> On Wed, Jun 12, 2019 at 09:15:06PM +0800, Gen Zhang wrote:
> > In function con_init(), the pointer variable vc_cons[currcons].d, vc and
> > vc->vc_screenbuf is allocated by kzalloc(). However, kzalloc() returns
> > NULL when fails. Therefore, we should check the return value and handle
> > the error.
> >
> > Signed-off-by: Gen Zhang <[email protected]>
> > ---
>
> What changed from v1, v2, and v3?
Thanks for your timely response. I am not a native English speaker, so
I am not sure I understand this correctly. Does this mean that I should
use "v5", rather than "v4"?
>
> That always goes below the --- line.
And I can't see what goes wrong with "---". Could you please make some
explaination?

Thanks
Gen
>
> v5 please.
>
> thanks,
>
> greg k-h

2019-06-12 18:00:02

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4] vt: fix a missing-check bug in con_init()

On Wed, Jun 12, 2019 at 09:15:06PM +0800, Gen Zhang wrote:
> In function con_init(), the pointer variable vc_cons[currcons].d, vc and
> vc->vc_screenbuf is allocated by kzalloc(). However, kzalloc() returns
> NULL when fails. Therefore, we should check the return value and handle
> the error.
>
> Signed-off-by: Gen Zhang <[email protected]>
> ---

What changed from v1, v2, and v3?

That always goes below the --- line.

v5 please.

thanks,

greg k-h

2019-06-12 18:01:49

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4] vt: fix a missing-check bug in con_init()

On Wed, Jun 12, 2019 at 09:44:49PM +0800, Gen Zhang wrote:
> On Wed, Jun 12, 2019 at 03:38:38PM +0200, Greg KH wrote:
> > On Wed, Jun 12, 2019 at 09:15:06PM +0800, Gen Zhang wrote:
> > > In function con_init(), the pointer variable vc_cons[currcons].d, vc and
> > > vc->vc_screenbuf is allocated by kzalloc(). However, kzalloc() returns
> > > NULL when fails. Therefore, we should check the return value and handle
> > > the error.
> > >
> > > Signed-off-by: Gen Zhang <[email protected]>
> > > ---
> >
> > What changed from v1, v2, and v3?
> Thanks for your timely response. I am not a native English speaker, so
> I am not sure I understand this correctly. Does this mean that I should
> use "v5", rather than "v4"?

"v" means "version".

You need to list what you changed with each version of this patch.

The documentation in the kernel tells you how to do this.

> > That always goes below the --- line.
> And I can't see what goes wrong with "---". Could you please make some
> explaination?

Again, please read the documentation, it describes how to do this for
patches that have gone through multiple versions.

thanks,

greg k-h

2019-06-12 18:03:09

by Nicolas Pitre

[permalink] [raw]
Subject: Re: [PATCH v4] vt: fix a missing-check bug in con_init()

On Wed, 12 Jun 2019, Gen Zhang wrote:

> On Wed, Jun 12, 2019 at 03:38:38PM +0200, Greg KH wrote:
> > On Wed, Jun 12, 2019 at 09:15:06PM +0800, Gen Zhang wrote:
> > > In function con_init(), the pointer variable vc_cons[currcons].d, vc and
> > > vc->vc_screenbuf is allocated by kzalloc(). However, kzalloc() returns
> > > NULL when fails. Therefore, we should check the return value and handle
> > > the error.
> > >
> > > Signed-off-by: Gen Zhang <[email protected]>
> > > ---
> >
> > What changed from v1, v2, and v3?
> Thanks for your timely response. I am not a native English speaker, so
> I am not sure I understand this correctly. Does this mean that I should
> use "v5", rather than "v4"?

Given that this is your v4 patch, you should list what has changed since
earlier versions. Greg is asking you to produce a v5 with that
information added. Obviously, the change from v4 to v5 would be
something like "added version change information".

> > That always goes below the --- line.
> And I can't see what goes wrong with "---". Could you please make some
> explaination?

The version change information should be put below the --- line in your
post, not above it. This way it won't be captured in commit log.


Nicolas