lkml.org 
[lkml]   [2006]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] drivers: Conversions from kmalloc+memset to k(z|c)alloc.
    Rolf Eike Beer wrote:
    > Am Donnerstag, 20. Juli 2006 21:05 schrieb Panagiotis Issaris:
    >> @@ -443,12 +442,11 @@ int con_clear_unimap(struct vc_data *vc,
    >> p = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc;
    >> if (p && p->readonly) return -EIO;
    >> if (!p || --p->refcount) {
    >> - q = (struct uni_pagedir *)kmalloc(sizeof(*p), GFP_KERNEL);
    >> + q = kzalloc(sizeof(*p), GFP_KERNEL);
    >> if (!q) {
    >> if (p) p->refcount++;
    >> return -ENOMEM;
    >> }
    >> - memset(q, 0, sizeof(*q));
    >> q->refcount=1;
    >> *vc->vc_uni_pagedir_loc = (unsigned long)q;
    >> } else {
    >
    > This one still changes the way the code works. Before your patch *p will be
    > always zeroed out. Now if p is there before it will keep it's contents.

    No, it doesn't, the data at *p is/was not zeroed inside the if { .. } block.
    Read carefully, the multiple statements on one line obfuscations might
    have thrown you off.

    However, it is slightly confusing that the value assigned to `q' is
    kzalloced using sizeof(*p). It is an improvement though, as the old version
    kmalloced using sizeof(*p), and memset using sizeof(*q).
    That was really strange.


    Daniel K.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-07-21 12:27    [W:0.020 / U:0.412 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site