Skip to content
Snippets Groups Projects
  • Markus Armbruster's avatar
    386f6c07
    error: Avoid error_propagate() after migrate_add_blocker() · 386f6c07
    Markus Armbruster authored
    
    When migrate_add_blocker(blocker, &errp) is followed by
    error_propagate(errp, err), we can often just as well do
    migrate_add_blocker(..., errp).
    
    Do that with this Coccinelle script:
    
        @@
        expression blocker, err, errp;
        expression ret;
        @@
        -    ret = migrate_add_blocker(blocker, &err);
        -    if (err) {
        +    ret = migrate_add_blocker(blocker, errp);
        +    if (ret < 0) {
                 ... when != err;
        -        error_propagate(errp, err);
                 ...
             }
    
        @@
        expression blocker, err, errp;
        @@
        -    migrate_add_blocker(blocker, &err);
        -    if (err) {
        +    if (migrate_add_blocker(blocker, errp) < 0) {
                 ... when != err;
        -        error_propagate(errp, err);
                 ...
             }
    
    Double-check @err is not used afterwards.  Dereferencing it would be
    use after free, but checking whether it's null would be legitimate.
    
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20200707160613.848843-43-armbru@redhat.com>
    386f6c07
    History
    error: Avoid error_propagate() after migrate_add_blocker()
    Markus Armbruster authored
    
    When migrate_add_blocker(blocker, &errp) is followed by
    error_propagate(errp, err), we can often just as well do
    migrate_add_blocker(..., errp).
    
    Do that with this Coccinelle script:
    
        @@
        expression blocker, err, errp;
        expression ret;
        @@
        -    ret = migrate_add_blocker(blocker, &err);
        -    if (err) {
        +    ret = migrate_add_blocker(blocker, errp);
        +    if (ret < 0) {
                 ... when != err;
        -        error_propagate(errp, err);
                 ...
             }
    
        @@
        expression blocker, err, errp;
        @@
        -    migrate_add_blocker(blocker, &err);
        -    if (err) {
        +    if (migrate_add_blocker(blocker, errp) < 0) {
                 ... when != err;
        -        error_propagate(errp, err);
                 ...
             }
    
    Double-check @err is not used afterwards.  Dereferencing it would be
    use after free, but checking whether it's null would be legitimate.
    
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20200707160613.848843-43-armbru@redhat.com>